8 x LED
Pada latihan pertama kamu telah menyelesaikan LED berkedip nyala dan mati. Sekarang saatnya untuk mencoba latihan yang sedikit lebih rumit yaitu dengan menghubunkan delapan LED sekaligus. Latihan ini bagus untuk melatih dalam memahami program dan bagaimana program tersebut berjalan di dalam Arduino.Untuk mengendalikan beberapa LED, kamu akan belajar beberapa trik pemograman supaya kode kamu terlihat lebih sederhana:
for()
loops - digunakan ketika ingin membuat sebuah fungsi berjalan beberapa kali.arrays[ ]
- digunakan untuk mtengatur beberapa parameter dengan mudah dengan mengelompokannya bersama.
Kebutuhan komponen:
— 1 x Arduino UNO— 1 x Breadboard
— 8 x LED
— 8 x 330 Ohm Resistor
— 8 x Kabel Jumper
Perakitan:
Rangkaian:
Upload sketch:
Untuk mengisikan program ke board Arduino melalui PC/Laptop dapat menggunakan software Arduino IDE.Apabila kamu tidak mau menggunakan PC/Laptop untuk mengupload sketch/program ke board Arduino, kamu masih bisa menggunakan handphone Android untuk mengisikan program ke Arduino menggunakan aplikasi Bluino Loader, cara uploadnya pun bisa dua cara melalui USB dengan menggunakan adapter OTG atau melalui Bluetooth.
Cara lain dapat juga upload sketch langsung melalui aplikasi ini ke Arduino melalui USB OTG atau Bluetooth dengan cara menekan ikon upload (tanda panah ke kanan) di bawah.
/*
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()
{
//Set semua 8 pin sebagai OUTPUT - perhatikan bahwa daftar indeks dimulai dari 0.
pinMode(ledPins[0],OUTPUT); //ledPins[0] = 2
pinMode(ledPins[1],OUTPUT); //ledPins[1] = 3
pinMode(ledPins[2],OUTPUT); //ledPins[2] = 4
pinMode(ledPins[3],OUTPUT); //ledPins[3] = 5
pinMode(ledPins[4],OUTPUT); //ledPins[4] = 6
pinMode(ledPins[5],OUTPUT); //ledPins[5] = 7
pinMode(ledPins[6],OUTPUT); //ledPins[6] = 8
pinMode(ledPins[7],OUTPUT); //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 = 100; //jeda dalam milliseconds untuk berhenti antara LED
//rubah menjadi lebih kecil untuk membuat perpindahan lebih cepat
//Menyalakan semua LED:
for(index = 0; index <= 7; 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 = 100; //jeda dalam milliseconds untuk berhenti antara LED
//rubah menjadi lebih kecil untuk membuat perpindahan lebih cepat
for(index = 0; index <= 7; 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 = 100; //jeda dalam milliseconds untuk berhenti antara LED
for(index = 0; index <= 7; 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 = 200; //jeda dalam milliseconds untuk berhenti antara LED
for(index = 0; index <= 3; index++) //langkah dari 0 hingga 3
{
digitalWrite(ledPins[index], HIGH); //menyalakan LED
digitalWrite(ledPins[index+4], HIGH); //lewati empat LED, dan nyalakan LED tersebut
delay(delayTime); //jeda untuk memperlambat perpindahan
digitalWrite(ledPins[index], LOW); //mematikan LED
digitalWrite(ledPins[index+4], 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 = 100;
digitalWrite(ledPins[index], HIGH); //menyalakan LED
delay(delayTime); //jeda untuk memperlambat
digitalWrite(ledPins[index], LOW); //mematikan LED
}
0 comments:
Posting Komentar