Mahir Arduino Sketch dan Elektro secara praktek

09 - LED Chase Effect

Di project ke-5 kita akan membuat LED yang memiliki efek bergerak saling mengejar. Disini kita akan belajar mengenai konsep dari arrays.

Komponen yang diperlukan
  • 10 x 5mm RED LEDs
  • 10 x Current-Limiting Resistors


Skema




Sketch

// Project 5 - LED Chase Effect
byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; // Create array for LED pins
int ledDelay = 65; // delay between changes
int direction = 1;
int currentLED = 0;
unsigned long changeTime;
 

void setup() {
  for (int x=0; x<10; x++) { // set all pins to output
    pinMode(ledPin[x], OUTPUT);
  }
  changeTime = millis();
}


void loop() {
  if ((millis() - changeTime) > ledDelay) { // if it has been ledDelay ms since last change
    changeLED();
    changeTime = millis();
  }
}


void changeLED() {
  for (int x=0; x<10; x++) { //turn off all LED's
    digitalWrite(ledPin[x], LOW);
  }
  digitalWrite(ledPin[currentLED], HIGH); //turn on the current LED
  currentLED += direction; //increment by the direction value
  // change direction if we reach the end
  if (currentLED == 9) {direction = -1;}
  if (currentLED == 0) {direction = 1;}
}



Penjelasan Sketch

byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13};

Perintah diatas untuk mendeklarasikan variable dengan tipe array dengan tipe data byte. semua element dapat diakses melalui nama yang sama, dalam hal ini adalah variable ledPin. contoh ledPin[0] akan menunjukkan nilai 4.

Tanda [] setelah nama variable menunjukkan pada compiler tipe array adalah array variable. Pada array ini kita inisialisasi nilai untuk menunjukkan pin Arduino.

Jika hendak mengdeklarasikan array tanpa inisialisasi nilai, kita perlu memberi tahu Arduino besar dari array. Contoh:  byte ledPin[10];

Pada sketch kita, variable array ini digunakan untuk mengakses LED. Pada fungsi loop(), kita cek apakah ledDelay sudah dilewati sejak perubahan LED terakhir, jika sudah, maka fungsi ChangeLED() akan dipanggil.

Yang dilakukan fungsi ChangeLEDadalah mematikan semua LED dan menyalakan LED yg harus aktif saat ini., yang disimpan di variable currentLED.


Setelah currentLED dinyalakan, nilai currentLED akan ditambahkan atau dikurangkan, berdasar variable direction. Variable direction ditentukan oleh blok if, jika currentLED bernilai 9, direction akan -1, bila currentLED bernilai 0 maka direction akan +1;

Program kita akan membuat nyala LED bergerak bolak-balik.

Artikel Sebelumnya:  Proyek Lampu Lalulintas Advanced
Artikel Selanjutnya: Proyek Led Chase Advanced

No comments:

Post a Comment