1000 Proyek Arduino : Proyek 8 — Menyalakan Dua LED Secara Bergantian

Pada Proyek 8 dari seri 1000 Proyek Arduino, kita mengendalikan dua LED dari dua pin digital agar menyala secara bergantian. Percobaan ini memperkenalkan multi-output, urutan eksekusi program, pengaturan waktu, kontrol independen, dan penggunaan common ground.

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:

  1. Nyalakan LED 1.
  2. Matikan LED 2.
  3. 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

  1. Mengapa kedua LED membutuhkan resistor masing-masing?
  2. Apa yang terjadi jika nilai delay() diperkecil?
  3. Apakah kedua LED harus menggunakan waktu menyala yang sama?
  4. Bagaimana cara membuat kedua LED menyala bersamaan?
  5. Bagaimana cara membuat kedua LED mati bersamaan?
  6. Mengapa kedua LED dapat menggunakan GND yang sama?
  7. 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.