Kalau sebelumnya kita sudah mengetahui cara menggunakan fungsi logika IF da ELSE, maka kali ini kita akan mempelajari bagaimana caranya agar Arduino bisa melakukan kendali lebih dalam lagi dan menyederhanakan program kita buat. Pada akhir tulisan ini, kita akan bisa membuat animasi lampu LED seperti pada video yang ada dibawah ini:
Dari video diatas, secara sederhana kita bisa membuatnya dengan program seperti dibawah ini:
void loop () {
digitalWrite(8, HIGH);
delay(100);
digitalWrite(8, LOW);
delay (100);
// diketik ulang sampai 10 kali
digitalWrite(9, HIGH);
delay(100);
digitalWrite(9, LOW);
delay (100);
//diketik ulang sampai 10 kali
digitalWrite(10, HIGH);
delay(100);
digitalWrite(10, LOW);
delay (100);
//diketik ulang sampai 10 kali
}
Jika jumlah lampu LED yang digunakan hanya 2 atau 3 buah saja tentu akan sangat mudah, namun, bagaimana jika lampu LED yang kita gunakan berjumlah lebih dari 10? Tentu saja program yang akan kita ketik akan sangat panjang.
Untuk itu kita akan mempelajari cara melakukan perulangan pembacaan program dengan fungsi FOR agar program yang kita ketik akan lebih pendek dan sederhana.
FOR
FOR adalah salah satu jenis perulangan (loop) dalam pemrograman yang digunakan untuk mengulangi blok kode secara berulang.
Secara umum fungsi FOR akan dituliskan sebagai berikut:

- Nilai awal adalah nilai permulaan hitungan perulangan, biasanya dituliskan dalam bentuk variabel angka (integer). Nilai awal ini digunakan sebagai titik awal perulangan. dalam hal ini nilai awal adalah: int i = 0; yang bisa diartikan sebagai “nilai awal adalah 0”
- Kondisi yang akan diperiksa adalah kondisi yang akan terus dievaluasi setiap kali program diulang, jika kondisi ini masih “benar” atau “true” maka perulangan akan terjadi dan program akan dibaca oleh Arduino dan sebaliknya jika kondisi “false” atau “salah” maka perulangan akan berhenti dan Arduino aka melanjutkan pembacaan program ke baris berikutnya. kondisi yang akan dievaluasi dari contoh diatas adalah: i<10; yang bermakna “jika nilai i lebih dari 10”
- Penambahan pada bagian akhir loop ditulis i++, yang artinya “nilai i ditambah 1”. nilai i akan bertambah 1 setiap kali perulangan sampai akhir nya nilai i < 10
- perulangan program akan terus terjadi jika nilai i kurang dari 10, ketika nilai i sudah lebih dari 10 maka Arduino akan keluar dari perulangan dan baris berikutnya
Perhatikan contoh dibawah ini
for(int i = 0; i<10; i++) {
digitalWrite(8, HIGH);
delay(300);
digitalWrite(8,LOW);
delay(300);
}
delay(2000);
Program diatas akan mengedipkan lampu LED pada pin 8 sebanyak 10 kali lalu berhenti selama 2 detik dengan perulangan sebagai berikut:
- pada putaran pertama nilai i adalah 0, program akan membaca barisan yang ada didalam blok sehingga LED akan berkedip hidup dan mati sekali dengan delay 300 setelah itu nilai i bertambah 1 sehingga i=1
- pada putaran kedua fungsi for akan mengevaluasi kondisi variabel i apakah bernilai < 10, jika iya, program akan membaca barisan yang ada didalam blok sehingga LED akan berkedip hidup dan mati lagi dengan delay 300 dan nilai i akan bertambah lagi 1 sehingga i =2
- putaran ketiga dan selanjutnya sama dengan putaran yang kedua, jika nilai i masih kurang dari 10, LED akan berkedip dan i ditambah satu.
- Akhirnya pada putaran ke 11 nilai i sudah lebih dari 10, maka program akan keluar dari perulangan dan membaca baris berikutnya yaitu delay(2000);
perhatikan output nya pada video berikut
Jadi untuk menghidupkan 3 lampu secara bergantian dimana setiap lampu berkedip-kedip sebanyak 10 kali, program yang harus kita tulis adalah:
for(int a=0; a<=10; a++){
digitalWrite(8,HIGH);
delay(200);
digitalWrite(8,LOW);
delay(200);
}
for(int b=0; b<=10; b++){
digitalWrite(9,HIGH);
delay(200);
digitalWrite(9,LOW);
delay(200);
}
for(int c=0; c<=10; c++){
digitalWrite(10,HIGH);
delay(200);
digitalWrite(10,LOW);
delay(200);
}
delay(2000);
dan hasilnya akan terlihat seperti ini:
WHILE
Selain menggunakan FOR, kita bisa menggunakan fungsi WHILE untuk melakukan perulangan kondisional.
//WHILE
int a = 0;
while(a<20){
digitalWrite(8, HIGH);
delay(200);
digitalWrite(8, LOW);
delay(200);
a++;
}
dan hasilnya sama dengan menggunakan FOR:

Pingback:Ringkasan Materi Informatika Semester 1 – Helmy Aswan Daniel