INPUT DAN OUTPUT DIGITAL PADA ARDUINO
Belajar mengendalikan LED menggunakan Push Button
🎯 A. Tujuan Pembelajaran
Setelah mempelajari materi ini, peserta didik diharapkan mampu:
- Menjelaskan konsep input dan output digital pada Arduino.
- Membedakan perangkat input dan perangkat output.
- Memahami fungsi pin INPUT dan OUTPUT.
- Menggunakan perintah digitalRead() dan digitalWrite().
- Memahami penggunaan kondisi if-else dalam program Arduino.
- Membuat rangkaian Push Button untuk mengendalikan LED.
- Menganalisis hubungan antara kondisi tombol dan respons LED.
🧠 B. Pengantar Input dan Output
Dalam sistem elektronik otomatis, sebuah perangkat harus mampu menerima informasi dari lingkungan dan memberikan respons berdasarkan informasi tersebut.
Contohnya adalah lampu otomatis. Ketika seseorang menekan tombol, sistem menerima perintah dan menyalakan lampu.
Pada Arduino, proses tersebut melibatkan dua konsep utama, yaitu Input dan Output.
Push Button berfungsi sebagai perangkat input untuk memberikan perintah, sedangkan LED berfungsi sebagai perangkat output yang menunjukkan hasil perintah tersebut.
🔌 C. Konsep Dasar Input dan Output Digital
1. Input Digital
Input digital adalah data atau sinyal yang diterima Arduino dalam dua kondisi logika, yaitu HIGH dan LOW.
Contoh perangkat input:
- Push Button atau tombol tekan.
- Sensor gerak digital.
- Sensor inframerah digital.
- Limit switch.
- Sensor api dengan keluaran digital.
2. Output Digital
Output digital adalah sinyal yang dikeluarkan Arduino untuk mengendalikan perangkat elektronik.
Contoh perangkat output:
- LED atau lampu indikator.
- Buzzer aktif.
- Relay module.
- Driver motor.
3. Memahami HIGH dan LOW
| Kondisi | Makna | Contoh |
|---|---|---|
| HIGH | Logika tinggi | Tombol terbaca aktif pada rangkaian pull-down |
| LOW | Logika rendah | Tombol tidak ditekan pada rangkaian pull-down |
HIGH dan LOW menunjukkan kondisi logika pada pin. Maknanya terhadap tombol bergantung pada cara rangkaian dihubungkan. Pada materi ini kita menggunakan rangkaian pull-down.
📦 D. Komponen yang Digunakan
| No. | Komponen | Jumlah | Fungsi |
|---|---|---|---|
| 1 | Arduino Uno | 1 | Pengendali utama |
| 2 | LED | 1 | Perangkat output |
| 3 | Resistor 220 Ω | 1 | Membatasi arus LED |
| 4 | Push Button | 1 | Perangkat input |
| 5 | Resistor 10 kΩ | 1 | Pull-down input |
| 6 | Breadboard | 1 | Tempat merangkai |
| 7 | Kabel jumper | Secukupnya | Penghubung rangkaian |
| 8 | Kabel USB | 1 | Menghubungkan Arduino ke komputer |
⚙️ E. Mengenal Rangkaian Input dan Output
Pada praktik ini, Arduino akan membaca kondisi tombol melalui pin digital 2 dan mengendalikan LED melalui pin digital 13.
1. Koneksi Push Button
Rangkaian menggunakan resistor pull-down 10 kΩ. Tujuannya agar pin input memiliki kondisi LOW yang stabil ketika tombol tidak ditekan.
Arduino 5V
|
|
[ PUSH BUTTON ]
|
+---------- Pin D2
|
[10 kΩ]
|
|
Arduino GND
Prinsip kerja:
- Tombol tidak ditekan: pin D2 terbaca LOW.
- Tombol ditekan: pin D2 terhubung ke 5V dan terbaca HIGH.
2. Koneksi LED
Arduino D13
|
[220 Ω]
|
Anoda LED
(kaki panjang)
|
Katoda LED
(kaki pendek)
|
Arduino GND
Resistor 220 Ω dipasang seri dengan LED untuk membatasi arus.
3. Tabel Koneksi Pin
| Komponen | Terhubung ke |
|---|---|
| Push Button | 5V dan D2 |
| Resistor 10 kΩ | D2 dan GND |
| LED | D13 melalui resistor 220 Ω |
| GND LED | GND Arduino |
Jangan menghubungkan pin 5V langsung ke GND. Pastikan resistor pull-down dan resistor LED terpasang dengan benar. Matikan daya saat mengubah rangkaian.
Arduino Uno memiliki LED bawaan yang umumnya terhubung ke pin 13. Jika menggunakan LED bawaan, LED eksternal dan resistor 220 Ω tidak diperlukan. Namun, siswa tetap dapat memasang LED eksternal untuk mempelajari rangkaian secara langsung.
💻 F. Mengenal Perintah Dasar
1. pinMode()
Digunakan untuk menentukan fungsi pin sebagai INPUT atau OUTPUT.
pinMode(2, INPUT);
pinMode(13, OUTPUT);
2. digitalRead()
Digunakan untuk membaca kondisi logika dari pin digital.
int tombol = digitalRead(2);
Hasil pembacaan disimpan dalam variabel tombol.
3. digitalWrite()
Digunakan untuk mengirimkan kondisi HIGH atau LOW ke pin output.
digitalWrite(13, HIGH);
digitalWrite(13, LOW);
4. if-else
Digunakan untuk membuat keputusan berdasarkan kondisi tertentu.
if (tombol == HIGH) {
// Perintah jika tombol aktif
} else {
// Perintah jika tombol tidak aktif
}
Arduino membaca kondisi tombol, memeriksa apakah nilainya HIGH atau LOW, kemudian menentukan tindakan yang harus dilakukan.
🔧 G. Praktik 1: Tombol Mengendalikan LED
Tujuan: Membuat LED menyala ketika tombol ditekan dan mati ketika tombol dilepaskan.
Langkah-langkah praktik
- Siapkan Arduino Uno, LED, resistor, push button, breadboard, dan kabel jumper.
- Hubungkan tombol sesuai diagram rangkaian.
- Hubungkan LED ke pin 13 melalui resistor 220 Ω.
- Hubungkan GND rangkaian ke GND Arduino.
- Hubungkan Arduino ke komputer menggunakan kabel USB.
- Buka Arduino IDE dan buat sketch baru.
- Masukkan kode program berikut.
- Pilih board dan port yang sesuai.
- Klik Verify, kemudian Upload.
- Tekan dan lepaskan tombol untuk menguji rangkaian.
Program Arduino
// INPUT DAN OUTPUT DIGITAL
// Push Button mengendalikan LED
const int pinTombol = 2;
const int pinLED = 13;
void setup() {
pinMode(pinTombol, INPUT);
pinMode(pinLED, OUTPUT);
}
void loop() {
int kondisiTombol = digitalRead(pinTombol);
if (kondisiTombol == HIGH) {
digitalWrite(pinLED, HIGH);
} else {
digitalWrite(pinLED, LOW);
}
}
Hasil yang diharapkan
| Kondisi Tombol | Input D2 | Kondisi LED |
|---|---|---|
| Tidak ditekan | LOW | Mati |
| Ditekan | HIGH | Menyala |
| Dilepaskan | LOW | Mati |
LED hanya menyala selama tombol ditekan dan akan mati ketika tombol dilepaskan.
🔍 H. Analisis Cara Kerja Program
Perhatikan bagian kode berikut:
int kondisiTombol = digitalRead(pinTombol);
Perintah tersebut membaca kondisi tombol pada pin 2 dan menyimpan hasilnya ke dalam variabel kondisiTombol.
Selanjutnya Arduino melakukan pemeriksaan:
if (kondisiTombol == HIGH) {
digitalWrite(pinLED, HIGH);
} else {
digitalWrite(pinLED, LOW);
}
Artinya:
- Jika tombol ditekan, Arduino membaca HIGH dan LED menyala.
- Jika tombol tidak ditekan, Arduino membaca LOW dan LED mati.
Arduino akan terus membaca kondisi tombol karena instruksi tersebut berada di dalam fungsi loop().
🚀 I. Praktik 2: LED Berkedip Saat Tombol Ditekan
Pada praktik kedua, kita akan memodifikasi program sehingga LED berkedip selama tombol ditekan.
Ketentuan program
- Ketika tombol ditekan, LED berkedip.
- LED menyala selama 500 milidetik.
- LED mati selama 500 milidetik.
- Ketika tombol dilepaskan, LED mati.
const int pinTombol = 2;
const int pinLED = 13;
void setup() {
pinMode(pinTombol, INPUT);
pinMode(pinLED, OUTPUT);
}
void loop() {
int kondisiTombol = digitalRead(pinTombol);
if (kondisiTombol == HIGH) {
digitalWrite(pinLED, HIGH);
delay(500);
digitalWrite(pinLED, LOW);
delay(500);
} else {
digitalWrite(pinLED, LOW);
}
}
Pada program ini terdapat delay(). Akibatnya, Arduino tidak membaca tombol selama jeda berlangsung. LED juga dapat menyelesaikan satu siklus kedipan setelah tombol dilepaskan. Ini merupakan keterbatasan pendekatan sederhana yang perlu dipahami.
Pertanyaan analisis
- Apa perbedaan program pertama dan kedua?
- Mengapa perintah delay() digunakan?
- Apa pengaruh jika delay(500) diubah menjadi delay(100)?
- Mengapa LED masih mungkin menyala sesaat setelah tombol dilepaskan?
🏆 J. Tantangan Praktik
Misi: Kembangkan sistem kontrol LED menggunakan tombol!
Buatlah program dengan ketentuan berikut:
- LED mati ketika tombol tidak ditekan.
- LED menyala ketika tombol ditekan.
- Ubah program agar LED berkedip lebih cepat.
- Jelaskan perubahan kode yang dilakukan.
Tantangan lanjutan:
Tambahkan satu LED lagi. Buatlah dua LED dengan perilaku berbeda ketika tombol ditekan.
Bukti pekerjaan:
- Foto rangkaian yang telah dibuat.
- Foto atau video pengujian.
- Salinan program Arduino.
- Penjelasan cara kerja rangkaian.
🛠️ K. Mengatasi Kesalahan Praktik
| Masalah | Kemungkinan Penyebab | Solusi |
|---|---|---|
| LED tidak menyala | Polaritas LED terbalik | Periksa kaki anoda dan katoda |
| Tombol tidak merespons | Koneksi pin salah | Periksa hubungan D2 |
| LED selalu menyala | Rangkaian pull-down salah | Periksa resistor 10 kΩ |
| LED berkedip tidak teratur | Koneksi tombol tidak stabil | Periksa breadboard dan kabel |
| Program gagal diunggah | Board atau port salah | Periksa pengaturan Arduino IDE |
📝 L. Evaluasi Pemahaman
Jawablah pertanyaan berikut secara mandiri berdasarkan materi yang telah dipelajari.
- Apa yang dimaksud dengan input digital pada Arduino?
- Apa perbedaan perangkat input dan output? Berikan masing-masing dua contoh.
- Apa fungsi perintah digitalRead()?
- Apa fungsi perintah digitalWrite()?
- Mengapa resistor pull-down 10 kΩ digunakan pada rangkaian tombol?
- Apa yang terjadi jika pin input tidak memiliki kondisi logika yang stabil?
- Jelaskan cara kerja percabangan if-else pada program LED.
- Mengapa LED menyala ketika tombol ditekan pada rangkaian pull-down?
- Apa yang terjadi jika pinMode(2, INPUT) tidak dituliskan?
- Bagaimana cara mengubah program agar LED menyala ketika tombol tidak ditekan?
Jawaban harus disertai alasan dan penjelasan. Hindari hanya menyalin kalimat dari materi.
💬 M. Refleksi Pembelajaran
Jawablah pertanyaan berikut berdasarkan pengalaman praktik.
- Apa hal baru yang kalian pelajari dari materi ini?
- Bagian mana yang paling sulit dipahami?
- Bagaimana hubungan antara input tombol dan output LED?
- Kesalahan apa yang kalian temukan selama merangkai?
- Bagaimana konsep input dan output dapat diterapkan dalam sistem otomatisasi?
📌 N. Kesimpulan
Input dan output digital merupakan konsep dasar dalam pemrograman mikrokontroler.
Input digunakan untuk menerima informasi dari perangkat luar, sedangkan output digunakan untuk memberikan respons berdasarkan instruksi program.
Melalui penggunaan digitalRead(), Arduino dapat membaca kondisi tombol. Selanjutnya, if-else digunakan untuk menentukan tindakan, dan digitalWrite() digunakan untuk mengendalikan LED.
Peserta didik mampu membuat rangkaian input dan output digital sederhana, menulis program Arduino, serta menjelaskan hubungan antara input, proses, dan output.