BLINK Multiple Led dan Konsep Sub Program
Tutorial ini adalah mengembangan dari Tutorial Led 2 yang membuat efek running led, namun kali ini kita akan mencoba membuat sketch yang dipecah ke beberapa sub program yang akan memudahkan penulisan dan pembacaan program, terutama program-program yang panjang.
Bukalah file tutorial ESSENTIALS_led_3.ino yang bisa di download di link ini, dan upload sketch tersebut ke board UNO. Anda akan melihat bahwa led akan menyala dan mati secara bergantian sehingga memberikan efek led nyala berjalan (running led) seperti tutorial sebelumnya, namun kali ini kita mencoba menulis program dengan cara lain
Wiring rangkaian masih sama dengan yang sebelum nya
Mari kita bedah sketch nya
/*
TUTORIAL LED BERKEDIP BERGANTIAN PADA ARDUINO
PENGENALAN SUB PROGRAM
ecadio.com
D4 -> Led Merah
D5 -> Led Hijau
D6 -> Led Biru
D7 -> Led Kuning
*/
#define merah 4
#define hijau 5
#define biru 6
#define kuning 7
#define jeda 200
void setup() {
pinMode(merah, OUTPUT); //set menjadi output
pinMode(hijau, OUTPUT); //set menjadi output
pinMode(biru, OUTPUT); //set menjadi output
pinMode(kuning, OUTPUT); //set menjadi output
}
void loop() {
nyalaKuning();
nyalaBiru();
nyalaHijau();
nyalaMerah();
}
//membuat sub-sub program
void nyalaKuning(){
digitalWrite(kuning, HIGH); //menyalakan led kuning (memberi tegangan 5V)
digitalWrite(biru, LOW); //mematikan led biru(memberi tegangan 0V)
digitalWrite(hijau, LOW); //mematikan led hijau(memberi tegangan 0V)
digitalWrite(merah, LOW); //mematikan led merah(memberi tegangan 0V)
delay(jeda);
}
void nyalaBiru(){
digitalWrite(kuning, LOW); //mematikan led kuning (memberi tegangan 0V)
digitalWrite(biru, HIGH); //menyalakan led biru(memberi tegangan 5V)
digitalWrite(hijau, LOW); //mematikan led hijau(memberi tegangan 0V)
digitalWrite(merah, LOW); //mematikan led merah(memberi tegangan 0V)
delay(jeda);
}
void nyalaHijau(){
digitalWrite(kuning, LOW); //mematikan led kuning (memberi tegangan 0V)
digitalWrite(biru, LOW); //mematikan led biru(memberi tegangan 0V)
digitalWrite(hijau, HIGH); //menyalakan led hijau(memberi tegangan 5V)
digitalWrite(merah, LOW); //mematikan led merah(memberi tegangan 0V)
delay(jeda);
}
void nyalaMerah(){
digitalWrite(kuning, LOW); //mematikan led kuning (memberi tegangan 0V)
digitalWrite(biru, LOW); //mematikan led biru(memberi tegangan 0V)
digitalWrite(hijau, LOW); //mematikan led hijau(memberi tegangan 0V)
digitalWrite(merah, HIGH); //menyalakan led merah(memberi tegangan 5V)
delay(jeda);
}
Perhatikan pada sketch tersebut, perbedaan dengan sketch ESSENTIALS_led_2.ino adalah terdapat bagian-bagian lain setelah bagian loop(). Bagian-bagian tersebut adalah sub program untuk mempermudah menyusun dan melihat alur program. Bagian void nyalaKuning() berisi baris program untuk menyalakan led kuning dan mematikan led sisa nya. Bagian sub program void nyalaBiru() berisi baris program untuk menyalakan led biru. Begitupun dengan nyalaHijau() dan nyalaMerah().
Sub program tersebut dipanggil di bagian loop dengan menuliskan nama nya. Untuk memanggil dan mengeksekusi sub program nyalaMerah(), tinggal tulis baris nyalaMerah() pada bagian loop().
void loop() {
nyalaKuning();
nyalaBiru();
nyalaHijau();
nyalaMerah();
}
Pada badan loop tersebut, perintah nyalaKuning() di laksanakan dulu sampai selesai, lalu nyalaBiru(), kemudian nyalaHijau(), dan lalu nyalaMerah() untuk kemudian mulai lagi ke atas ke nyalaKuning() dan seterus nya.
Dengan penggunaan sub program tersebut, penelusuran alur program pada bagian loop menjadi lebih mudah dilihat. Hal ini sangat berguna pada program-program / sketch yang cukup panjang dan rumit.