// Animasi LED
// Inisialisasi Pin LED
const int pinLED1 = 10;
const int pinLED2 = 11;
const int pinLED3 = 12;
const int pinLED4 = 13;
void setup() {
// pin LED sebagai output
pinMode(pinLED1,OUTPUT);
pinMode(pinLED2,OUTPUT);
pinMode(pinLED3,OUTPUT);
pinMode(pinLED4,OUTPUT);
}
void loop() {
// perulangan sebanyak 5 kali
// dari i=0 hinga i=4 atau (i < 5)
for(int i=0; i<5; i++){
if(i==1){
// jika i=1, hidupkan led 1, led yang
lain mati
digitalWrite(pinLED1,HIGH);
digitalWrite(pinLED2,LOW);
digitalWrite(pinLED3,LOW);
digitalWrite(pinLED4,LOW);
} else if(i==2){
// jika i=2, hidupkan led 1 & 2, led
3 & 4 mati
digitalWrite(pinLED1,HIGH);
digitalWrite(pinLED2,HIGH);
digitalWrite(pinLED3,LOW);
digitalWrite(pinLED4,LOW);
} else if(i==3){
// jika i=3, hidupkan led 1, 2, & 3,
led 4 mati
digitalWrite(pinLED1,HIGH);
digitalWrite(pinLED2,HIGH);
digitalWrite(pinLED3,HIGH);
digitalWrite(pinLED4,LOW);
} else if(i==4){
// jika i=4, hidupkan semua led
digitalWrite(pinLED1,HIGH);
digitalWrite(pinLED2,HIGH);
digitalWrite(pinLED3,HIGH);
digitalWrite(pinLED4,HIGH);
} else{
// jika tidak, matikan semua led
digitalWrite(pinLED1,LOW);
digitalWrite(pinLED2,LOW);
digitalWrite(pinLED3,LOW);
digitalWrite(pinLED4,LOW);
}
// delai selama 5 detik
delay(5000);
}
}
Program di atas akan
membuat LED menyala bergantian sebanyak 5 animasi (perulangan sebanyak 5 kali).
Pertama, semua LED akan mati selama 5 detik. Kedua, LED 1 akan menyala. Ketiga,
LED 1 dan 2 akan menyala. Keempat, LED 1, 2, dan 3 akan menyala. Kelima, semua
LED akan menyala.
Animasi tersebut
ditentukan berdasarkan nilai i, nilai i diperiksa dengan perintah IF. Jika
nilai i=0, maka semua LED mati, jika i=1 maka satu LED nyala, dan seterusnya.
Selain menggunakan IF,
ada cara lain yang lebih simpel untuk membuat animasi LED seperti program pada
Sketch berikut
// Sketch Animasi LED Alternatif
// Inisialisasi Pin LED
const int pinLED1 = 10;
const int pinLED2 = 11;
const int pinLED3 = 12;
const int pinLED4 = 13;
void setup() {
// pin LED sebagai output
pinMode(pinLED1,OUTPUT);
pinMode(pinLED2,OUTPUT);
pinMode(pinLED3,OUTPUT);
pinMode(pinLED4,OUTPUT);
}
void loop() {
digitalWrite(pinLED1,LOW);
digitalWrite(pinLED2,LOW);
digitalWrite(pinLED3,LOW);
digitalWrite(pinLED4,LOW);
delay(1000);
digitalWrite(pinLED1,HIGH);
delay(1000);
digitalWrite(pinLED2,HIGH);
delay(1000);
digitalWrite(pinLED3,HIGH);
delay(1000);
digitalWrite(pinLED4,HIGH);
delay(1000);
}
Dengan memanfaatkan
delay, program pada Sketch diatas lebih simple daripada Sketch sebelumnya.
Kira-kira, apakah ada cara yang lebih simpel lagi? Ada! Kita bisa menggunakan
Array. Apa itu Array?
Pengenalan Array
Array merupakan variabel
yang bisa menampung banyak data, masing-masing data bisa diambil dengan alamat
indeks (posisi) data dalam Array tersebut. Alamat indeks pada array standarnya
adalah angka integer yang diawali dari angka 0. Jadi, jika kita punya data 5
dalam variabel Array, maka data pertama pada alamat indeks ke-0, data ke-2 pada
alamat indeks ke-1, dan data ke-5 pada alamat indeks ke-4.
Untuk lebih memahami
tentang Array, program pada Sketch berikut merupakan versi lebih simpel
daripada Sketch sebelumnya dengan memanfaatkan perulangan FOR dan Array.
// Sketch Animasi LEDdengan Array
// Inisialisasi Jumlah LED
const int numLED = 4;
// LED 1,2,3,&4 jadi 1 varibel
// dengaan alamat index 0,1,2,3
const int pinLED[numLED] = {10,11,12,13};
void setup() {
// Inisialisasi semua pin LED sebagai OUTPUT
for(int i=0; i<4; i++){
pinMode(pinLED[i],OUTPUT);
}
}
void loop() {
// Matikan semua LED
for(int i=0; i<4; i++){
digitalWrite(pinLED[i],LOW);
}
delay(1000);
// Hidupkan semua LED bertahap dg jeda 1 detik
for(int i=0; i<4; i++){
digitalWrite(pinLED[i],HIGH);
delay(1000);
}
}
Jika dibandingkan dengan Sketch
sebelumnya yang tanpa baris keterangan
komentar, maka Sketch diatas jauh lebih pendek dan lebih simpel.
Pada Sketch diatas,
keempat LED dimuat dalam satu variabel yaitu variabel Array pinLED.
Masing-masing LED bisa diakses berdasarkan alamat indeks. Perhatikan pada baris
6.
6. const int pinLED[numLED] = {10,11,12,13};
Secara otomatis, alamat
indeks untuk masing-masing LED tergantung pada urutan pin tersebut. Pin 10 ada
pada alamat indeks ke- 0, pin 11 ada pada indeks ke 1, pin 12 ada di indeks ke
2, dan pin 13 ada pada indeks ke 3. Sehingga untuk mengakses pin 10, kita bisa
menambahkan kurung siku dan alamat indeks ke-0, seperti berikut:
Pin10 = pinLED[0]
Karena indeks tertinggi
adalah angka 3, maka di setiap perulangan LED tidak boleh lebih dari 3 atau
< 4, perhatikan perintah FOR berikut:
for(int i=0; i<4;
i++){
Yap, semoga penjelasan
Array di atas mudah dipahami. Jika ada yang membingungkan, silakan tanya-tanya
di website, dengan senang hati penulis akan menjawab. Baik, selanjutnya kita
akan lebih mengembangkan Sketch sedikit lebih kompleks dan animasinya lebih
menarik.
//Animasi LED Bonus 1
// Inisialisasi Jumlah LED
const int numLED = 4;
// LED 1,2,3,&4 jadi 1 varibel
// dengaan alamat index 0,1,2,3
const int pinLED[numLED] = {10,11,12,13};
void setup() {
// Inisialisasi semua pin LED sebagai OUTPUT
for(int i=0; i<4; i++){
pinMode(pinLED[i],OUTPUT);
}
}
void loop() {
// Hidupkan semua LED bertahap dg jeda 1 detik
for(int i=0; i<4; i++){
digitalWrite(pinLED[i],HIGH);
delay(500);
}
// Matikan semua LED bertahap dg jeda 1 detik
for(int i=0; i<4; i++){
digitalWrite(pinLED[i],LOW);
delay(500);
}
}
// Animasi LED Bonus 2
// Inisialisasi Jumlah LED
const int numLED = 4;
// LED 1,2,3,&4 jadi 1 varibel
// dengaan alamat index 0,1,2,3
const int pinLED[numLED] = {10,11,12,13};
void setup() {
// Inisialisasi semua pin LED sebagai OUTPUT
for(int i=0; i<4; i++){
pinMode(pinLED[i],OUTPUT);
}
}
void loop() {
// hidupkan led indeks 0 hingga 2 satu-persatu
for(int i=0; i<3; i++){
digitalWrite(pinLED[i],HIGH);
delay(200);
digitalWrite(pinLED[i],LOW);
}
// hidupkan led indeks 3 hingga 1 satu-persatu
for(int i=3; i>0; i--){
digitalWrite(pinLED[i],HIGH);
delay(200);
digitalWrite(pinLED[i],LOW);
}
}