Simulasi Arduino dengan Output Banyak LED Menggunakan Proteus

Pendahuluan

Dalam tulisan ini akan dipaparkan simulasi Arduino dengan output banyak LED dengan kode program yang lebih sederhana dan dengan memanfaatkan instruksi seperti perulangan for() dan array[]. Referensi mengenai perulangan dapat dilihat pada artikel Perulangan atau Loop dalam Pemrograman Arduino, sedangkan referensi mengenai array dapay dilihat pada artikel Penggunaan Array dalam Pemrograman Arduino.

Sebagai gambaran, pada simulasi ini akan memprogram Arduino dengan mengendalikan 10 LED yang menyala secara berurutan dari pin terendah ke pin tertinggi, dan sebaliknya dari pin tertinggi ke pin terendah. LED pertama akan menyala kemudian padam, lalu LED kedua menyala kemudian padam, dilanjutkan dengan LED ketiga, LED keempat, sampai dengan LED kesepuluh. Setelah itu, proses ini akan berbalik lagi sampai ke LED pertama. Dalam kasus ini kode program dibuat menggunakan array dan perulangan for untuk mengendalikan kesepuluh LED tersebut, sehingga kode program yang dihasilkan tidak terlalu banyak.

Kode Program/Sketch

Berikut ini adalah kode program/sketch untuk simulasi Arduino dengan Output Banyak LED.

int timer = 200;
int PinLed[]={1,2,3,4,5,6,7,8,9,10};
int JmlPin = 10;

void setup() {
//inisialisasi pin sbg output
for (int i = 0; i < JmlPin; i++){
pinMode(PinLed[i], OUTPUT);
}
}

void loop() {
//loop dari pin rendah ke tinggi
for (int i = 0; i < JmlPin; i++){
digitalWrite(PinLed[i], HIGH);
delay(timer);
digitalWrite(PinLed[i], LOW);
}

//loop dari pin tinggi ke rendah
for (int i = JmlPin - 1; i >= 0; i--){
digitalWrite(PinLed[i], HIGH);
delay(timer);
digitalWrite(PinLed[i], LOW);
}
}

Penjelasan Program

  1. Pada baris pertama kita membuat variabel integer dengan nama timer (int timer =200;). Ini merupakan variabel yang digunakan untuk mengatur lama waktu nyala tiap LED dengan nilai variabel 200 mili sekon. Kita bisa mengubah angka ini sesuai keinginan.
  2. Pada baris kedua, kita mendeklarasikan array dengan tipe integer yang bernama array PinLed dengan 10 elemen dan kodenya int PinLed[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};. Array merupakan kumpulan variabel dengan tipe yang sama yang penamaannya dapat disesuaikan dengan keinginan kita. Setiap variabel dalam kumpulan variabel itu disebut dengan elemen. Dalam hal ini, kita akan menggunakan pin Arduino sebagai elemen array. Elemen pertama dari pin Arduino diset sama dengan 1, elemen kedua diset sama dengan 2, elemen tiga diset sama dengan 3, dan seterusnya.
  3. Pada baris ketiga, kita melakukan inisialisasi setiap elemen atau panjang array atau jumlah anggota dalam elemen array dengan kode int JmlPin = 10; yang berarti jumlah pin yang digunakan adalah 10 pin arduino.
  4. Pada fungsi void setup() digunakan pinMode dengan kombinasi array dan perulangan for dengan perintah for (int i = 0; i < JmlPin; i++). Kita menggunakan perulangan for untuk mengakses 10 elemen yang telah diinisialisasi (JmlPin) tadi. Perulangan ini dibuat dengan nama variabel i dengan nilai indeks awal sebesar nol dan mengalami kenaikan sebesar 1 dari pin rendah ke pin tinggi (i++) sesuai dengan variabel integer JmlPin yang telah diinisialisasikan sebelumnya. Jika nilai i sudah lebih besar dari 9, maka perulangan for akan berhenti. Kemudian pada baris berikutnya digunakan kode pinMode(PinLed[i], OUTPUT); yang mendeklarasikan semua pin yang diinisialisasi sebelumnya dalam array dan digunakan sebagai output. Karena kedua instruksi di atas berada pada fungsi void setup maka eksekusi hanya dilakukan satu kali yakni saat catu daya dinyalakan atau saat Arduino di-reset.
  5. Fungsi void loop() diikuti dengan perintah:
for (int i = 0; i < JmlPin; i++){
digitalWrite(PinLed[i], HIGH);
delay(timer);
digitalWrite(PinLed[i], LOW);
}

Pada bagian ini, juga digunakan kombinasi array dan perulangan for yaitu for (int i = 0; i< JmlPin; i++) dengan inisialisasi sama dengan 0 dan tes kondisi lebih kecil JmlPin dengan pencacah naik (i++). Pernyataan atau instruksi yang digunakan dalam kurung kurawal tidak menggunakan pinMode tetapi menggunakan fungsi digitalWrite untuk menghidupkan dan mematikan LED. Telah kita ketahui bahwa digitalWrite memiliki dua argumen yaitu HIGH atau LOW, sehingga untuk menyalakan LED digunakan perintah digitalWrite(PinLed[i], HIGH); di mana lama nyala LED dengan instruksi delay(timer) telah diinisialisasi sebelumnya dengan nilai 200. Sedangkan untuk memadamkan LED instruksinya adalah digitalWrite(PinLed[1], LOW);. Proses nyala dan padam secara berurutan dari LED di atas diawali oleh loop dengan indeks array PinLed[0] yang mana elemen pertama array-nya sama dengan 1, sehingga LED yang ada pada pin 1 arduino akan menyala, Kemudian variabel i dari perulangan for akan mencacah naik (i++) dan bertambah 1. Kemudian proses loop selanjutnya yaitų indeks array PinLed[1] dengan elemen kedua array sama dengan 2. sehingga LED pada pin 2 arduino akan menyala. Demikian seterusnya LED (dari pin 1 sampai pin 10) akan menyala selama 200 mili sekon dan kemudian padam, Saat i > 9 dari for, maka perulangan akan berhenti. Kemudian akan dieksekusi instruksi selanjutnya yaitu:

for (int i = JmlPin - 1; i >= 0; i--){
digitalWrite(PinLed[i], HIGH);
delay(timer);
digitalWrite(PinLed[i], LOW);
}

Pada prinsipnya ini sama dengan perulangan for sebelumnya, akan tetapi inisialisasi awal dari  perulangan for variabel i dimulai dari JmlPin – 1 atau sama dengan 9 dengan kondisi lebih besar atau sama dengan nol dan perulangan for mencacah turun (i–). Jadi yang pertama kali dieksekusi adalah loop dengan indeks array PinLed[9] dan elemen array-nya sama dengan 9, di mana ini membuat LED yang ada pada pin 9 arduino akan menyala. Kemudian variabel i dari perulangan for akan mencacah turun (i–) atau berkurang 1, sehingga proses loop selanjutnya yaitu indeks array PinLed[8] dengan elemen kedua array sama dengan 8 yang membuat LED pada pin 8 arduino menyala. Demikian seterusnya LED pada pin 9 sampai dengan LED pada pin 1 arduino akan menyala selama 200 ms dan padam. Pada kasus ini, saat i = 0 dari for maka perulangan akan berhenti. Secara keseluruhan saat kita menjalankan program di atas, LED akan nyala selama 200 mili sekon dan padam secara berurutan mulai dari LED 1 sampai LED 10 dan akan kembali lagi dari LED 9 sampai LED 1. Hal ini terjadi secara berulang-ulang.

Simulasi dengan Proteus

1. Jalankan software Proteus, kemudian buat file project baru dan beri nama, misalnya Simulasi Banyak LED. Langkah-langkah membuat project di proteus dapat dibaca pada artikel Langkah-langkah Membuat Project Baru di Proteus.

2. Buat rangkaian simulasi  dengan komponen yang dibutuhkan yaitu papan Arduino Simulino, 10 lampu LED, 10 buah resistor 220 Ohm dan Ground. Susunlah komponen tersebut pada lembaran kerja Proteus seperti gambar di bawah ini.

3. Selanjutnya tulis kode program pertama pada IDE Arduino, lalu jalankan verifikasi dan pastikan tidak terjadi error saat verifikasi. Copy file .hex kemudian paste ke papan simulasi Arduino dalam software Proteus.Mengenai cara menjalankan verifikasi, menyalin file .hex, dan menjalankan simulasi dapat dibaca pada artikel Simulasi Arduino dengan Ouput LED Berkedip Menggunakan Proteus. Lalu jalankan simulasi Proteus dan akan diperoleh hasil seperti berikut:

Perhatikan bahwa hasil simulasi 10 LED akan menyala selama 200 mili sekon dan padam secara berurutan dari LED 1 sampai dengan LED 10 dan kembali dari LED 9 menuju LED 1.

You May Also Like

About the Author: Webagus

Leave a Reply

Your email address will not be published. Required fields are marked *