Kamis, 23 Oktober 2014

Arduino Membuat LED Blinking

Berikut adalah tutorial untuk belajar project dengan Arduino Uno bagi pemula dengan menggunakan LED sebagai indikator output. Tutorial disusun secara bertahap mulai dari tingkat dasar hingga yang lebih rumit, semisal untuk project tugas akhir kuliah atau keperluan aplikasi lainnya. Terdapat delapan buah LED tersebut dirangkai secara common cathode, dimana cathode dari setiap LED disambungkan ke ground Arduino. Sedangkan anode dari 8 buah LED memperoleh arus dari pin 0 hingga 7 Arduino Uno, yang terlebih dahulu melalui resistor sebagai pembatas arus. Untuk resistor pembatas arus tersebut bisa bernilai 330 ohm atau 470 ohm, semakin besar nilai hambatan resistor maka semakin redup nyala dari LED tersebut. Rangkaian LED secara common cathode ini dimaksudkan karena untuk program yang akan dibuat menggunakan prinsip active high, dimana bila diberikan logika high 1, LED akan menyala. Demikian sebaliknya, nyala LED akan padam bila diberikan logika low 0.
Untuk source code (sketch), dituliskan dan upload ke Arduino Uno dengan menggunakan Arduino IDE.

<img src="common_cathode.png" alt="common_cathode">


Berikut ini adalah source code (sketch) untuk LED blinking, nyala mati bergantian.

/*
Program menyalakan dan menghidupkan LED secara bergantian
Loki Lang
*/
void setup()
{
  DDRD = 255;
}

void loop()
{
  PORTD = 255;
  delay(1000);
  PORTD = 0;
  delay(1000);
}

Penjelasan program ialah sebagai berikut.
  • DDRD digunakan untuk mendefinisikan PORTD apakah sebagai input atau output, disini DDRD diberikan nilai 255 atau sama seperti B11111111, yang mana delapan buah pin diberi nilai 1, artinya PORTD tersebut didefinisikan sebagai port output, sementara itu bila diberikan nilai 0, maka pin atau port tersebut didefinisikan sebagai input
  • Setelah didefinisikan sebagai output, PORTD digunakan untuk memberikan nilai data output apakah 1 atau 0
  • Pada saat diberikan nilai data 1, maka akan mengeluarkan tegangan 5 volt untuk menyalakan LED, sedangkan bila data bernilai 0, maka tidak ada tegangan yang keluar dan nyala LED kemudian akan padam
  • Ada delapan pin dalam PORTD yang digunakan dan diberikan nilai 255 (B11111111) untuk menyalakan LED, sedangkan nilai 0 (B00000000) untuk memadamkannya
  • Untuk delay, digunakan untuk memberikan jeda eksekusi dari satu line ke line selanjutnya dalam program, selain itu juga agar hardware dapat menjalankan program dengan lebih stabil
  • Durasi delay dalam ms, dengan kata lain 1000 ms sama dengan 1 detik
Lama durasi dapat disesuaikan dengan mengubah nilai dalam delay(), semakin besar nilai yang diberikan maka akan semakin lama durasinya. Adapun source code (sketch) cara lain dengan hasil yang kurang lebih sama sebagai berikut.

/*
Program menyalakan dan menghidupkan LED secara bergantian
Loki Lang
*/
int ledPins[] = {0,1,2,3,4,5,6,7};
void setup()
{
  int i;
  for(i = 0; i <= 7; i++)
  {
    pinMode(ledPins[i],OUTPUT);
  }
}

void loop()
{
  int i;
  for(i = 0; i <= 7; i++)
  {
    digitalWrite(ledPins[i],HIGH);
    }
    delay(1000);
  for(i = 0; i <= 7; i++)
  {
    digitalWrite(ledPins[i],LOW);
    }
    delay(1000);
}

Penjelasan program ialah sebagai berikut
  • Digunakan variable array ledPins dengan data integer 0 hingga 7
  • Untuk index 0 hingga 7 dari array ledPins diakses dengan variable i melalui perulangan menggunakan for
  • Perulangan dengan for dimulai dari index 0, hingga index 7 (yang merupakan representasi pin Arduino), dengan increment 1 kali tiap langkahnya
  • Untuk mendefinisikan PORTD sebagai output, digunakan instruksi pinMode(ledPins[i],OUTPUT), sehingga LED yang terhubung dengan pin Arduino 0 hingga 7 akan didefinisikan sebagai OUTPUT
  • Untuk memberikankan nilai data output pada PORTD, digunakan instruksi digitalWrite(ledPins[i],HIGH) untuk menyalakan LED, atau digitalWrite(ledPins[i],LOW) untuk mematikan nyala LED tersebut
  • Untuk delay, digunakan untuk memberikan jeda eksekusi dari satu line ke line selanjutnya dalam program, selain itu juga agar hardware dapat menjalankan program dengan lebih stabil
  • Durasi delay dalam ms, dengan kata lain 1000 ms sama dengan 1 detik
Lihat juga mengenai tutorial dan penjelasan project Arduino Uno LED animation.

Tidak ada komentar:

Posting Komentar