Senin, 10 Februari 2014

Arduino Basic - Mengatur Intensitas Cahaya LED



Pada percobaan dalam posting sebelumnya, kita sudah mencoba menyalakan dan memadamkan LED pada board dan menerima input dari pushbutton untuk mengatur LED. Pada percobaan ini, kita akan mencoba mengendalikan intensitas cahaya dari LED, bukan hanya menyalakan dan memadamkan saja.

Sebelumnya, pin yang digunakan hanya dapat mengeluarkan dua nilai saja yaitu LOW dan HIGH. Pada percobaan ini, kita akan memakai pin yang dapat mengeluarkan nilai di antara LOW dan HIGH dengan teknik pulse width modulation (PWM).  Pin tersebut memiliki range antara 0 sampai 255. Dengan rentang nilai tersebut kita dapat mengendalikan intensitas cahaya LED antara padam (0) sampai paling terang (255), tidak terbatas menyalakan dan memadamkan saja.


 Peralatan yang digunakan pada percobaan ini adalah
  • Board Arduino Uno + konektor PC
  • LED
  • Pushbutton
  • Resistor 10K Ohm
  • Kabel tembaga 


Memberikan Efek Fade-in dan Fade-out pada LED


Pada percobaan ini intensitas cahaya LED akan dinaikkan kemudian diturunkan secara periodik untuk menciptakan efek fade.
 

 
Rangkaian

Source Code

const int LED = 7; // LED pada pin 7 

int i = 0; // Nilai output

void setup() {
    pinMode(LED, OUTPUT); //Set pin 7 sebagai output
}

void loop(){
    for (i = 0; i < 255; i++) { // loop nilai i dari 0 ke 255
        analogWrite(LED, i); // mengeluarkan nilai i pada pin LED
        delay(10); // Jeda 10 ms agar hasilnya kelihatan
   }

    for (i = 255; i > 0; i--) { // loop nilai i dari 0 ke 255

       analogWrite(LED, i); // mengeluarkan nilai i pada pin LED
       delay(10); // Jeda 10 ms agar hasilnya kelihatan
    }
}

Penjelasan  :

 

Intensitas cahaya LED ditentukan oleh variabel i yang memiliki nilai minimum 0 (padam) dan nilai maksimum 255 (paling terang). Nilai variabel inilah yang akan terus berubah selama program berjalan. Ketika fungsi loop() dijalankan, perintah iterasi untuk menaikkan nilai i sampai batas maksimum (255) kemudian menurunkan nilai i sampai batas minimum (0) terus diulang. Nilai i naik/turun dalam waktu 10 ms agar perubahan tidak terlalu cepat sehingga dapat dilihat. Nilai i yang terus berubah naik turun secara periodik menghasilkan efek fade pada LED.


Video 

 




Menyalakan LED jika Pushbutton Ditekan, Mengubah Tingkat Intensitas LED jika Pushbutton Ditahan  

 

Pada percobaan ini LED bertransisi antara menyala dan padam ketika pushbutton ditekan dan mengalami perubahan intensitas cahaya jika pushbutton ditahan selama 0,5 detik dalam keadaan menyala.

 
Rangkaian

 Source Code

const int LED = 9; //LED pada pin 9
const int BUTTON = 7; // Pushbutton pada pin 7

int val = 0; // Nilai input
int old_val = 0; // Nilai input sebelumnya

int state = 0; // 0 = LED padam, 1 = LED menyala
int brightness = 128; // Nilai intensitas cahaya LED

unsigned long startTime = 0; // Waktu mulai

void setup() {
    pinMode(LED, OUTPUT);
    pinMode(BUTTON, INPUT);
}

void loop() {

    val = digitalRead(BUTTON); // baca nilai input pushbutton
      
    //Memeriksa apakah pushbbutton sedang ditekan
    //Nilai input pushbutton HIGH, sementara nilai input sebelumnya LOW
    if ((val == HIGH) && (old_val == LOW)) {

        state = 1 - state; //Mengganti state LED antara menyala dan padam
        startTime = millis();//Waktu mulai
        delay(10);//Filter
    }

    // Memeriksa apakah pushbbutton sedang ditahan
   
// Nilai input pushbutton dan sebelumnya HIGH,
    if ((val == HIGH) && (old_val == HIGH)) {
        // Jika pushbutton ditahan lebih dari 500 ms dan LED sedang menyala
        if (state == 1 && (millis() - startTime) > 500) {
           brightness++; // Menaikkan tingkat intensitas cahaya LED sebesar 1
           delay(10); //Jeda 10 ms agar perubahan dapat terlihat
           if (brightness > 255) { //Jika sudah mencapai nilai maksimum
                brightness = 0; // Kembali ke 0
            }
        }
    }

    old_val = val; // Menyimpan nilai input pushbutton yang lama

    if (state == 1) {
        analogWrite(LED, brightness);
             // Menyalakan LED dengan intensitas tertentu

    } else {
        analogWrite(LED, 0); //Memadamkan LED
    }

}



Penjelasan  :

 

Intensitas cahaya LED ditentukan oleh variabel brightness yang memiliki nilai minimum 0 (padam) dan nilai maksimum 255 (paling terang). Ketika program dijalankan, board sudah siap menerima input dari pushbutton. Saat pushbutton ditekan, val bernilai HIGH sehingga program menjalankan perintah untuk mengganti state LED antara menyala dan padam. Selain itu waktu ketika pushbutton ditekan disimpan di dalam variabel startTime.

Jika pushbutton ditahan selama 0,5 detik dan LED dalam keadaan menyala, nilai variabel brightness  bertambah sebesar 1 setiap 10 ms selama pushbutton belum dilepas. Nilai variabel akan kembali ke 0 (LED padam) setelah
nilai variabel mencapai nilai 255 (LED menyala paling terang). Intensitas LED akan terus berubah dari padam ke terang kemudian padam lagi selama pushbutton ditahan.



Video 

 


2 komentar:

  1. Ada kodingnya untuk kecerahan led bertambah ketika ditekan lalu berkurang? Terimakasih

    BalasHapus
  2. halo kakak,bisa bantu metode apa yang membedakan terang dan gelap?
    rentang nilainya berapa?

    BalasHapus