Pada Proyek 6 kita telah membuat satu LED berkedip, sedangkan pada Proyek 7 kita mengubah kecepatan kedipnya dan mulai mengenal periode serta frekuensi.
Sekarang kita menambah satu LED lagi dan membuat keduanya menyala secara bergantian.
Percobaan ini menjadi langkah awal untuk memahami bagaimana Arduino mengendalikan lebih dari satu output dalam sebuah urutan waktu.
Tujuan Percobaan
- Mengendalikan dua LED dari dua pin digital Arduino.
- Membuat dua output bekerja secara bergantian.
- Memahami urutan eksekusi program.
- Mengenal penggunaan lebih dari satu variabel pin.
- Memahami bahwa setiap LED membutuhkan resistor pembatas arus sendiri.
Alat dan Bahan
- 1 Arduino Uno atau board yang kompatibel.
- 1 breadboard.
- 2 LED.
- 2 resistor 220 Ω atau 330 Ω.
- Kabel jumper.
- Kabel USB.
Mengapa Setiap LED Membutuhkan Resistor Sendiri?
Setiap LED memiliki jalur arus masing-masing.
Karena itu, setiap LED sebaiknya memiliki resistor pembatas arus sendiri.
Jangan menggunakan satu resistor untuk dua LED yang dikendalikan secara terpisah.
Rangkaian
Gunakan dua pin digital, misalnya D9 dan D10.
Arduino D9
|
330 Ω
|
LED 1
|
GND
Arduino D10
|
330 Ω
|
LED 2
|
GND
Hubungan rangkaian:
| Bagian | Hubungan |
|---|---|
| D9 Arduino | Resistor 330 Ω → Anoda LED 1 |
| Katoda LED 1 | GND |
| D10 Arduino | Resistor 330 Ω → Anoda LED 2 |
| Katoda LED 2 | GND |
Program Arduino
const int led1 = 9;
const int led2 = 10;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop() {
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
delay(1000);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
delay(1000);
}
Cara Kerja Program
Pada awal program kita membuat dua variabel pin:
const int led1 = 9;
const int led2 = 10;
Kemudian kedua pin ditentukan sebagai output:
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
Di dalam loop(), LED pertama dinyalakan sementara LED kedua dimatikan:
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
Arduino menunggu selama satu detik.
Setelah itu kondisi dibalik:
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
Akibatnya kedua LED terlihat menyala secara bergantian.
Urutan Kerja
LED 1 ON
LED 2 OFF
|
1 detik
|
LED 1 OFF
LED 2 ON
|
1 detik
|
ulang kembali
Percobaan 1 — Bergantian Setiap 1 Detik
Gunakan:
delay(1000);
LED 1 menyala selama satu detik, kemudian LED 2 menyala selama satu detik.
Perhatikan bahwa keduanya tidak menyala bersamaan.
Percobaan 2 — Percepat Pergantian
Ubah:
delay(1000);
menjadi:
delay(500);
Kedua LED sekarang bergantian setiap setengah detik.
Percobaan 3 — Pergantian Sangat Cepat
Coba:
delay(100);
Amati bagaimana kedua LED terlihat bergantian dengan sangat cepat.
Kemudian coba:
delay(20);
Pada kecepatan tertentu, mata kita mulai kesulitan membedakan pergantian antara kedua LED.
Percobaan 4 — Waktu LED 1 dan LED 2 Berbeda
Kita juga dapat memberikan durasi yang berbeda untuk setiap LED.
void loop() {
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
delay(200);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
delay(1000);
}
Dalam program tersebut:
- LED 1 hanya menyala selama 200 ms.
- LED 2 menyala selama 1000 ms.
Dengan demikian, pola pergantian tidak harus simetris.
Percobaan 5 — Menyalakan Kedua LED Bersamaan
Coba ubah bagian program menjadi:
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
Sekarang kedua LED menyala bersama.
Kemudian:
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
Kedua LED akan mati bersama.
Dari sini kita melihat bahwa setiap pin digital dapat dikendalikan secara independen.
Percobaan 6 — Membuat Pola Dua LED
Coba program berikut:
void loop() {
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
delay(200);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
delay(200);
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
delay(500);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
delay(1000);
}
Pola yang terbentuk:
LED 1
↓
LED 2
↓
LED 1 + LED 2
↓
keduanya mati
↓
ulang kembali
Memahami Urutan Eksekusi Program
Arduino menjalankan instruksi dari atas ke bawah.
Contohnya:
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
delay(1000);
berarti:
- Nyalakan LED 1.
- Matikan LED 2.
- Tunggu satu detik.
Setelah itu Arduino baru menjalankan perintah berikutnya.
Konsep urutan eksekusi ini akan semakin penting ketika kita mengendalikan banyak output.
Common Ground
Kedua LED dapat menggunakan GND Arduino yang sama.
LED 1 katoda ──┐
├── GND Arduino
LED 2 katoda ──┘
Ini merupakan contoh sederhana dari penggunaan common ground.
Konsep common ground akan sering digunakan ketika kita mulai menghubungkan lebih banyak sensor, display, transistor, buzzer, dan modul lainnya.
Apa yang Dipelajari dari Percobaan Ini?
| Konsep | Contoh |
|---|---|
| Multi-output | D9 dan D10 mengendalikan LED berbeda |
| Urutan program | Instruksi dijalankan dari atas ke bawah |
| Timing | delay() menentukan lama setiap kondisi |
| Common ground | Dua LED menggunakan GND yang sama |
| Kontrol independen | Setiap LED dapat ON atau OFF sendiri |
Pertanyaan Pengamatan
- Mengapa kedua LED membutuhkan resistor masing-masing?
- Apa yang terjadi jika nilai
delay()diperkecil? - Apakah kedua LED harus menggunakan waktu menyala yang sama?
- Bagaimana cara membuat kedua LED menyala bersamaan?
- Bagaimana cara membuat kedua LED mati bersamaan?
- Mengapa kedua LED dapat menggunakan GND yang sama?
- Apa yang dimaksud dengan output yang dikendalikan secara independen?
Percobaan Lanjutan
Tambahkan satu LED lagi pada pin D11.
Coba buat pola:
LED 1 → LED 2 → LED 3 → LED 2 → LED 1
Percobaan ini akan menjadi pengantar menuju running LED dengan lebih banyak output.
Kesimpulan
Pada Proyek 8 kita mulai mengendalikan lebih dari satu output menggunakan Arduino.
Dengan dua pin digital, Arduino dapat membuat dua LED menyala secara bergantian, bersamaan, ataupun membentuk pola tertentu.
Percobaan ini memperkenalkan konsep multi-output, urutan eksekusi program, common ground, dan pengaturan waktu pada beberapa perangkat.
Konsep yang sama nantinya dapat digunakan untuk mengendalikan banyak LED, buzzer, relay, motor, display, dan berbagai aktuator lainnya.
Proyek berikutnya: 1000 Proyek Arduino : Proyek 9 — Menyalakan Empat LED Secara Berurutan.