/*
02 - 8 x LED
Membuat delapan LED menyala dengan pola yang berbeda-beda.
*/
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 dialam array mempunyai nomor index berurutan dimulai dari 0 yang ditulis didalam tanda kurung [ ].
//Lihat contoh penggunaannya pada fungsi pinMode() dibawah.
void setup()
{
pinMode(ledPins[0],INPUT); //ledPins[0] = 2
pinMode(ledPins[1],INPUT); //ledPins[1] = 3
pinMode(ledPins[2],OUTPUT); //ledPins[2] = 4
pinMode(ledPins[3],INPUT); //ledPins[3] = 5
pinMode(ledPins[4],OUTPUT); //ledPins[4] = 6
pinMode(ledPins[5],INPUT); //ledPins[5] = 7
pinMode(ledPins[6],OUTPUT); //ledPins[6] = 8
pinMode(ledPins[7],INPUT); //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 meeminimalkan penulisan program.
/***********************/
void oneAfterAnother()
{
int index;
int delayTime = 300; //jeda dalam milliseconds untuk berhenti antara LED
//rubah menjadi lebih kecil untuk membuat perpindahan lebih cepat
//Menyalakan semua LED:
for(index = 0; index <= 8; 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 = 300; //jeda dalam milliseconds untuk berhenti antara LED
//rubah menjadi lebih kecil untuk membuat perpindahan lebih cepat
for(index = 0; index <= 8; 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 = 300; //jeda dalam milliseconds untuk berhenti antara LED
for(index = 0; index <= 8; 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 = 300; //jeda dalam milliseconds untuk berhenti antara LED
for(index = 0; index <= 8; index++) //langkah dari 0 hingga 3
{
digitalWrite(ledPins[index], HIGH); //menyalakan LED
digitalWrite(ledPins[index+8], HIGH); //lewati empat LED, dan nyalakan LED tersebut
delay(delayTime); //jeda untuk memperlambat perpindahan
digitalWrite(ledPins[index], LOW); //mematikan LED
digitalWrite(ledPins[index+8], 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 = 500;
digitalWrite(ledPins[index], HIGH); //menyalakan LED
delay(delayTime); //jeda untuk memperlambat
digitalWrite(ledPins[index], LOW); //mematikan LED
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
r1:1
r1:2
r2:1
r2:2
r3:1
r3:2
r4:1
r4:2
r5:1
r5:2
r6:1
r6:2
r7:1
r7:2
r8:1
r8:2
led1:A
led1:C
led2:A
led2:C
led3:A
led3:C
led4:A
led4:C
led5:A
led5:C
led6:A
led6:C
led7:A
led7:C
led8:A
led8:C