×

Running LED menggunakan Arduino

Pendahuluan

Running LED berarti lampu led yang berlari-lari, apabila disusun berbentuk melingkar maka akan terlihat seperti lampu yang berputar terus menerus tanpa ada habis-habisnya. Kit Running LED yang mungkin pernah kamu solder adalah Kit Running LED dengan 20 buah lampu LED yang bekerja menggunakan IC 555 dan IC 4017. Perhatikan video dibawah ini :

Video kit diatas menggunakan IC 555 sebagai pengerak denyut/ pulsa dengan pengaturan menggunakan potesiometer untuk mengatur kecepatan lampu hidup dan mati. Kemudian untuk mengatur giliran lampu LED yang akan hidup dan mati adalah IC CD4017 (sebagai switch digital).

Perhatikan rangkaian listrik dibawah ini yang digunakan pada kit elektronika tersebut :

Pada dasarnya 1 buah IC CD4017 hanya dapat mengontrol 10 buah lampu LED saja (10 pin kontrol), pada Kit Running LED diatas menggunakan 20 buah lampu LED karena setiap LED dibuat parallel dengan 1 lampu LED, sehingga terlihat semua lampu LED 20 buah.

Arduino : Running LED (dengan Coding)

Kita juga bisa menggantikan IC 555 dan IC CD 4017 diatas dengan Arduino, caranya cukup mudah, yaitu dari Kit Running LED diatas kita lepaskan IC 555 dan IC CD 4017.

Fungsi dari IC 555 akan digantikan dari internal clock (denyut) dari Arduino yaitu menggunakan signal PWM (Pulse Width Modulation), dan IC CD 4017 akan digantikan dari pin Arduino.

Peralatan yang kamu butuhkan hanya Arduino UNO dan Kabel Jumper.

Koneksi yang kita kerjakan antara PIN Arduino dengan Kit Running LED hanyalah pada soket IC CD 4017. Sedangkan pada soket IC 555 cukup dilepas saja IC 555 dari soketnya. Berikut ini koneksi dari pin Arduino ke soket IC 4017 (sekali lagi, IC 4017 dicabut = tidak digunakan) :

Perhatikan oritentasi daripada IC 4017, pin 1 ditunjukkan dengan dot / titik. Arah depan IC ditunjukkan dengan cekungan/ coak yang ada pada bagian atas IC.

Setelah kita berhasil menghubungkan setiap pin soket cari IC 4017 dengan Pin Arduino, maka didapat gambaran sebagai berikut :

Berikutnya adalah memprogram Arduino, berikut ini adalah script yang digunakan :

int CTR    = 1;
int brightness = 0;         // Integer to hold the brightness value
// Berikut ini adalah pin pada Arduino UNO, dimana pin PWM yang terdapat pada
// Arduino UNO hanya 6 pin yaitu 3,5,6,9,10,11
// Sehingga pin lainnya tidak akan menghasilkan PWM, hanya kedip on off
// Jika digunakan Arduino MEGA dengan pin PWM lebih banyak, maka dapat diubah nomor pin sesuai dengan PWM
// pada Arduino MEGA.
const byte PWMpin1 = 2;      // DIGITAL PWM-enabled pin
const byte PWMpin2 = 3;      // DIGITAL PWM-enabled pin
const byte PWMpin3 = 4;      // DIGITAL PWM-enabled pin
const byte PWMpin4 = 5;      // DIGITAL PWM-enabled pin
const byte PWMpin5 = 6;      // DIGITAL PWM-enabled pin
const byte PWMpin6 = 7;      // DIGITAL PWM-enabled pin
const byte PWMpin7 = 8;      // DIGITAL PWM-enabled pin
const byte PWMpin8 = 9;      // DIGITAL PWM-enabled pin
const byte PWMpin9 = 10;      // DIGITAL PWM-enabled pin
const byte PWMpin10 = 11;      // DIGITAL PWM-enabled pin

void setup() {
   pinMode(PWMpin1,  OUTPUT);
   pinMode(PWMpin2,  OUTPUT);
   pinMode(PWMpin3,  OUTPUT);
   pinMode(PWMpin4,  OUTPUT);
   pinMode(PWMpin5,  OUTPUT);
   pinMode(PWMpin6,  OUTPUT);
   pinMode(PWMpin7,  OUTPUT);
   pinMode(PWMpin8,  OUTPUT);
   pinMode(PWMpin9,  OUTPUT);
   pinMode(PWMpin10, OUTPUT);
}

void loop() {
  Turn_them_all_off();
  switch (CTR) {
    case 1 : 
    for (brightness = 0; brightness <= 255; brightness += 5) {
    analogWrite(PWMpin1,  brightness); delay(30); 
    }
    for (brightness = 255; brightness >= 0; brightness -= 5) {
    analogWrite(PWMpin1,  brightness); delay(30);
    }  
    CTR++; break;
    
    case 2 : 
    for (brightness = 0; brightness <= 255; brightness += 5) {
    analogWrite(PWMpin2,  brightness); delay(30); 
    }
    for (brightness = 255; brightness >= 0; brightness -= 5) {
    analogWrite(PWMpin2,  brightness); delay(30);
    }  
    CTR++; break;
    
    case 3 :
        for (brightness = 0; brightness <= 255; brightness += 5) {
    analogWrite(PWMpin3,  brightness); delay(30); 
    }
    for (brightness = 255; brightness >= 0; brightness -= 5) {
    analogWrite(PWMpin3,  brightness); delay(30);
    }  
    CTR++; break;
    
    case 4 : 
    for (brightness = 0; brightness <= 255; brightness += 5) {
    analogWrite(PWMpin4,  brightness); delay(30); 
    }
    for (brightness = 255; brightness >= 0; brightness -= 5) {
    analogWrite(PWMpin4,  brightness); delay(30);
    }  
    CTR++; break;

    case 5 :
    for (brightness = 0; brightness <= 255; brightness += 5) {
    analogWrite(PWMpin5,  brightness); delay(30); 
    }
    for (brightness = 255; brightness >= 0; brightness -= 5) {
    analogWrite(PWMpin5,  brightness); delay(30);
    }  
    CTR++; break;
    
    case 6 : 
    for (brightness = 0; brightness <= 255; brightness += 5) {
    analogWrite(PWMpin6,  brightness); delay(30); 
    }
    for (brightness = 255; brightness >= 0; brightness -= 5) {
    analogWrite(PWMpin6,  brightness); delay(30);
    }  
    CTR++; break;
    
    case 7 : 
    for (brightness = 0; brightness <= 255; brightness += 5) {
    analogWrite(PWMpin7,  brightness); delay(30); 
    }
    for (brightness = 255; brightness >= 0; brightness -= 5) {
    analogWrite(PWMpin7,  brightness); delay(30);
    }  
    CTR++; break;
    
    case 8 : 
    for (brightness = 0; brightness <= 255; brightness += 5) {
    analogWrite(PWMpin8,  brightness); delay(30); 
    }
    for (brightness = 255; brightness >= 0; brightness -= 5) {
    analogWrite(PWMpin8,  brightness); delay(30);
    }  
    CTR++; break;
    
    case 9 :     
    for (brightness = 0; brightness <= 255; brightness += 5) {
    analogWrite(PWMpin9,  brightness); delay(30); 
    }
    for (brightness = 255; brightness >= 0; brightness -= 5) {
    analogWrite(PWMpin9,  brightness); delay(30);
    }  
    CTR++; break;
    
    case 10: 
    for (brightness = 0; brightness <= 255; brightness += 5) {
    analogWrite(PWMpin10,  brightness); delay(30); 
    }
    for (brightness = 255; brightness >= 0; brightness -= 5) {
    analogWrite(PWMpin10,  brightness); delay(30);
    }
    CTR=1; break; // Reset the counter to start from the begining
  };
}

void Turn_them_all_off(){
   digitalWrite(PWMpin1,  LOW);
   digitalWrite(PWMpin2,  LOW);
   digitalWrite(PWMpin3,  LOW);
   digitalWrite(PWMpin4,  LOW);
   digitalWrite(PWMpin5,  LOW);
   digitalWrite(PWMpin6,  LOW);
   digitalWrite(PWMpin7,  LOW);
   digitalWrite(PWMpin8,  LOW);
   digitalWrite(PWMpin9,  LOW);
   digitalWrite(PWMpin10, LOW);
}

Jika kamu memerlukan lebih banyak jumlah lampu yang diperlukan bekerja, maka disarankan menggunakan Arduino Mega2560, karena memiliki jumlah pin pulsa/ denyut (pin PWM yang lebih banyak daripada Arduino UNO).

Hasilnya sebagai berikut :

Keunggulan dengan memprogram Running LED menggunakan Arduino :
1. Kita tidak menggunakan banyak IC pada rangkaian yang dibuat (IC555 dan IC4017), sehingga mengurangi rangkaian listrik yang digunakan.
2. Kemampuan running LED meningkat, tidak hanya dapat diatur kecepatan berlari (running), namun kita bisa membuat efek redup sebelum berpindah dari satu titik lampu ke lampu lainnya.