Pada pembelajaran pertama kamu telah menyelesaikan program arduino LED berkedip nyala dan mati. Untuk melihat kembali pembelajaran pertama, silahkan klik di sini. Sekarang kita akan mencoba belajar program arduino yang sedikit lebih rumit yaitu dengan menghubungkan delapan LED sekaligus. Dalam pembelajaran ini kita akan melatih dalam memahami program dan bagaimana program tersebut berjalan di dalam Arduino, namun pastinya dengan cara yang mudah.
Agar lebih mudah dalam pemrogramannya, kita akan menggunakan beberapa fungsi yang ada di Arduino, yaitu :
for()
loops – digunakan ketika ingin membuat sebuah fungsi berjalan beberapa kali.arrays[ ]
– digunakan untuk mengatur beberapa parameter dengan mudah dengan mengelompokannya bersama.
Kebutuhan komponen:
- Arduino Uno : 1 pcs
- Breadboard : 1 pcs
- LED 5mm : 8 pcs
- Resistor 330 Ohm : 8 pcs
- Kabel Jumper secukupnya
Skema Running LED
Rangkaian Running LED
Source Code :
/*
Running LED
*/
int ledPins[] = {2,3,4,5,6,7,8,9}; //membuat sebuah array untuk menyimpan nomor pin untuk 8 LED.
//sebuah array merupakan kumpulan variabel yang dapat di akses dengan nomor index.
//Sebuah daftar di dalam array mempunyai nomor index berurutan dimulai dari 0 yang ditulis didalam tanda kurung [ ].
//Lihat contoh penggunaannya pada fungsi pinMode() dibawah.
void setup()
{
//Set semua 8 pin sebagai OUTPUT - perhatikan bahwa daftar indeks dimulai dari 0.
pinMode(ledPins[0],OUTPUT); //ledPins[0] = 2
pinMode(ledPins[1],OUTPUT); //ledPins[1] = 3
pinMode(ledPins[2],OUTPUT); //ledPins[2] = 4
pinMode(ledPins[3],OUTPUT); //ledPins[3] = 5
pinMode(ledPins[4],OUTPUT); //ledPins[4] = 6
pinMode(ledPins[5],OUTPUT); //ledPins[5] = 7
pinMode(ledPins[6],OUTPUT); //ledPins[6] = 8
pinMode(ledPins[7],OUTPUT); //ledPins[7] = 9
}
void loop() {
//Pada loop() ini memanggil beberapa fungsi yang sudah dituliskan sebelumnya.
//Kamu dapat menonaktifkan pemanggilan beberapa fungsi dengan cara merubah menjadi sebuah comment
//(dengan menuliskan tanda "//" didepan pemanggilan fungsi dibawah ini).
oneAfterAnother(); //Nyalakan semua LED secara bergantian
oneOnAtATime(); //Nyalakan LED satu per satu secara bergantian
pingPong(); //Sama dengan oneOnAtATime() tapi berganti arah ketika nyala LED sampai keujung
marquee(); //Lampu kejar seperti yang ada dipertunjukan teater
randomLED(); //Membuat LED-LED berkedip secara acak
}
/**********************
* oneAfterAnother()
*
* Fungsi ini menyalakan semua LED, ada jeda, dan kemudian semua
* LED mati. Didalam fungsi ini menggunakan kelebihan dari "for() loop" dan
* penggunaan array sehingga meminimalkan penulisan program.
/***********************/
void oneAfterAnother()
{
int index;
int delayTime = 100; //jeda dalam milliseconds untuk berhenti antara LED
//rubah menjadi lebih kecil untuk membuat perpindahan lebih cepat
//Menyalakan semua LED:
for(index = 0; index <= 7; index = ++index) //langkah pada setiap variabel index dari 0 hingga 7
{
digitalWrite(ledPins[index], HIGH);
delay(delayTime);
}
//Mematikan semua LED:
for(index = 7; index >= 0; index = --index) //langkah pada setiap variabel index dari 7 hingga 0
{
digitalWrite(ledPins[index], LOW);
delay(delayTime);
}
}
/***********************
* oneOnAtATime()
*
* Pada fungsi ini akan menyalakan LED seperti berjalan satu arah.
* Membuat tiap LED nyala dan kemudian mati sebelum berpindah
* ke LED berikutnya.
/**********************/
void oneOnAtATime()
{
int index;
int delayTime = 100; //jeda dalam milliseconds untuk berhenti antara LED
//rubah menjadi lebih kecil untuk membuat perpindahan lebih cepat
for(index = 0; index <= 7; index = ++index) //langkah pada masing-masing LED, dari 0 sampai 7
{
digitalWrite(ledPins[index], HIGH); //menyalakan LED
delay(delayTime); //jeda untuk memperlambat
digitalWrite(ledPins[index], LOW); //mematikan LED
}
}
/***********************
* pingPong()
*
* Pada fungsi ini akan menyalakan LED seperti berjalan bulak balik.
* Tidak ada jeda antara LED yang amti dengan LED yang berikutnya nyala,
* sehingga dapat menciptakan pola smooth. .
*/
/**********************/
void pingPong()
{
int index;
int delayTime = 100; //jeda dalam milliseconds untuk berhenti antara LED
for(index = 0; index <= 7; index = ++index) //langkah pada masing-masing LED, dari 0 hingga 7
{
digitalWrite(ledPins[index], HIGH); //menyalakan LED
delay(delayTime); //jeda untuk memperlambat
digitalWrite(ledPins[index], LOW); //mematikan LED
}
for(index = 7; index >= 0; index = --index) //langkah pada masing-masing LED, dari 7 hingga 0
{
digitalWrite(ledPins[index], HIGH); //menyalakan LED
delay(delayTime); //jeda untuk memperlambat
digitalWrite(ledPins[index], LOW); //mematikan LED
}
}
/***********************
* marquee()
*
* Fungsi ini akan menirukan nyala LED seperti "lampu kejar" yang
* ada pada pertunjukan teater..
/**********************/
void marquee()
{
int index;
int delayTime = 200; //jeda dalam milliseconds untuk berhenti antara LED
for(index = 0; index <= 3; index++) //langkah dari 0 hingga 3
{
digitalWrite(ledPins[index], HIGH); //menyalakan LED
digitalWrite(ledPins[index+4], HIGH); //lewati empat LED, dan nyalakan LED tersebut
delay(delayTime); //jeda untuk memperlambat perpindahan
digitalWrite(ledPins[index], LOW); //mematikan LED
digitalWrite(ledPins[index+4], LOW); //lewati empat LED, dan matikan LED tersebut
}
}
/***********************
* randomLED()
*
* Fungsi ini akan meyalakan LED secara acak. Dapatkah kamu memodifikasi program
* sehingga jeda waktunya juga secara acak?
/**********************/
void randomLED()
{
int index;
int delayTime;
index = random(8); //memilih angka secara acak antara 0 sampai 7
delayTime = 100;
digitalWrite(ledPins[index], HIGH); //menyalakan LED
delay(delayTime); //jeda untuk memperlambat
digitalWrite(ledPins[index], LOW); //mematikan LED
}
Kesimpulan
Hasil dari source code di atas, ketika pertama Arduino menyala, nyala dari ke delapan LED akan membentuk lima pola nyala yang berbeda-beda secara bergantian, mulai dari nyala led yang bergantian, bergeser sampai nyala secara acak. Kamu dapat memilih salah satu pola saja untuk dijalankan secara terus menerus sehingga terlihat lebih bagus, dengan cara mengedit kode di dalam programnya.