Pada proyek LED Chase Effect, kita akan membuat efek bergerak pada LED seolah saling mengejar. Disini kita akan belajar mengenai konsep dari arrays.
Komponen
- 10 x 5mm RED LEDs
- 10 x Current-Limiting Resistors
Skema

Sketch
byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; // Create array for LED pins
int ledDelay = 65; // delay between changes
int direction = 1;
int currentLED = 0;
unsigned long changeTime;
void setup() {
for (int x=0; x<10; x++) { // set all pins to output
pinMode(ledPin[x], OUTPUT);
}
changeTime = millis();
}
void loop() {
if ((millis() - changeTime) > ledDelay) { // if it has been ledDelay ms since last change
changeLED();
changeTime = millis();
}
}
void changeLED() {
for (int x=0; x<10; x++) { //turn off all LED's
digitalWrite(ledPin[x], LOW);
}
digitalWrite(ledPin[currentLED], HIGH); //turn on the current LED
currentLED += direction; //increment by the direction value
// change direction if we reach the end
if (currentLED == 9) {direction = -1;}
if (currentLED == 0) {direction = 1;}
}
Penjelasan Sketch
byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
Perintah diatas untuk mendeklarasikan variable tipe array of byte. Untuk mengakses isi variable menggunakan syntax variable[index], untuk contoh diatas ledPin[0] akan menunjukkan nilai 4.
Note Jika hendak mengdeklarasikan array tanpa inisialisasi nilai, harus memasukan besar dari Array. Contoh: byte ledPin[10];
Variable array ini digunakan untuk mengakses LED. Pada fungsi loop(), kita cek apakah ledDelay sudah dilewati sejak perubahan LED terakhir, jika sudah, maka fungsi ChangeLED() akan dipanggil.
Fungsi ChangeLED akan mematikan semua LED dan menyalakan LED yg harus aktif saat ini, yang disimpan di variable currentLED.
Setelah currentLED nyala, nilai currentLED akan ditambahkan atau dikurangkan, berdasar variable direction. Variable direction ditentukan oleh blok if, jika currentLED bernilai 9, direction akan -1, bila currentLED bernilai 0 maka direction akan +1;
Program kita akan membuat nyala LED bergerak bolak-balik.