Read more
Mengontrol Tingkat Kecerahan LED
Sebelumnya kita sudah membahas tentang cara menghidupkan dan mematikan LED dengan sebuah pushbutton. Selanjutnya, kita akan menggunakan dua buah pushbutton dengan ketentuan : pushbutton yang pertama untuk menaikkan kecerahan LED hingga paling terang, sedangkan pushbutton yang kedua untuk menurunkan kecerahan LED hingga LED padam.
Fungsi kedua pushbutton ini mirip dengan volume-up dan volumedown. Yang satu untuk meningkatkan volume (kecerahan), sedangkan satunya lagi untuk menurunkan volume (kecerahan). Yak, setidaknya Anda paham apa yang saya maksudkan.
Setidaknya ada dua cara untuk menaikkan atau menurunkan tingkat kecerahan LED:
1. Mengubah arus yang masuk ke LED, cara ini bisa diaplikasikan dengan mengubah nilai resistor
2. Menghidup-matikan LED dengan cepat atau lambat. Begini, ketika kita menghidup-matikan LED dengan cepat, maka mata manusia tidak bisa mengetahuinya. Yang ditangkap oleh mata adalah terang atau redupnya saja. Jika kita menghidupmatikan led dengan cepat, maka LED tersebut akan terlihat terang, tapi kalau kita menghidup matikan LED dengan lebih lambat, maka LED akan terlihat lebih redup.
Dalam elektronika digital, konsep yang kedua dikenal dengan istilah PWM (Pulse Width Modulation). Apa itu PWM?
Sebagian kaki / pin Arduino support PWM, kaki yang support PWM ditandai dengan adanya tanda tilde (~) di depan angka pinnya, seperti 3, 5, 6, dan seterusnya. Frekuensi yang digunakan dalam Arduino untuk PWM adalah 500Hz (500 siklus dalam 1 detik). Jadi, Arduino bisa menghidup-matikan LED sebanyak 500 kali dalam 1 detik.
Untuk menggunakan PWM, kita bisa menggunakan fungsi analogWrite(). Nilai yang bisa dimasukkan pada fungsi tersebut yaitu antara 0 hingga 255. Nilai 0 berarti pulsa yang diberikan untuk setiap siklus selalu 0 volt, sedangkan nilai 255 berarti pulsa yang diberikan selalu bernilai 5 volt.
Jika kita memberikan nilai 127 (kita anggap setengah dari 0 hingga 255, atau 50% dari 255), maka setengah siklus akan bernilai 5 volt, dan setengah siklus lagi akan bernilai 0 volt. Sedangkan jika jika memberikan 25% dari 255 (1/4 * 255 atau 64), maka 1/4 siklus akan bernilai 5 volt, dan 3/4 sisanya akan bernilai 0 volt, dan ini akan terjadi 500 kali dalam 1 detik. Untuk visualisasi siklus PWM, bisa Anda lihat Gambar 3.3.
Rangkaian
Buatlah rangkaian seperti gambar Rangkaian 3.2. Rencananya, pushbutton yang atas untuk menyalakan dan meningkatkan kecerahan LED, sedangkan pushbutton yang bawah untuk menurunkan tingkat kecerahan LED dan memadamkannya:
1. Seperti biasa, siapkan sebuah LED dan resistornya. Sambungkan kaki positif LED ke pin 8 Arduino.
2. Kemudian kaki negatif LED disambungkan ke resistor menuju GND.
3. Siapkan dua buah pushbutton. Pushbutton yang pertama (atas) disambunkan ke GND dan ke pin 2 pada board Arduino.
4. Lalu pushbutton yang kedua (bawah) disambungkan ke GND dan pin 3 pada board Arduino.
Program
Sketch Mengatur intensitas cahaya LED
// Free Ebook Arduino
// www.elangsakti.com
// coder elangsakti
// pin 2 & 3 sebagai input digital
const int pinBt1 = 2;
const int pinBt2 = 3;
// Ingat, pin 9 support PWM
const int pinLED = 9;
void setup() {
pinMode(pinBt1, INPUT);
pinMode(pinBt2, INPUT);
pinMode(pinLED, OUTPUT);
digitalWrite(pinBt1, HIGH);
digitalWrite(pinBt2, HIGH);
}
int brightness = 0;
void loop() {
if(digitalRead(pinBt1) == LOW){
// jika pushbutton ditekan
// tambahkan nilai brightness
brightness++;
}else if(digitalRead(pinBt2) == LOW){
// jika pushbutton2 ditekan
// kurangi nilai brightness
brightness--;
}
// brightness dibatasi antara 0 - 255
// jika di bawah 0, maka ganti dengan 0
// jika di atas 255, maka ganti dengan 255
brightness = constrain(brightness, 0, 255);
// pinLED diberi nilai antara 0 - 255
analogWrite(pinLED, brightness);
// delay agar perubahannya bertahap
delay(20);
}
Ada 3 bagian pada Sketch 3.2 yang perlu dijelaskan lebih detail, yaitu pada baris 36, 39, dan 41.
// brightness dibatasi antara 0 - 255
// jika di bawah 0, maka ganti dengan 0
// jika di atas 255, maka ganti dengan 255
brightness = constrain(brightness, 0, 255);
Pada baris 36, kita menemukan satu fungsi baru, yaitu constrain(). Fungsi constrain() digunakan untuk menjaga agar nilai tetap pada range yang ditentukan. Pada kasus ini, range yang ditentukan adalah antara 0 – 255. Misal nilai brightness lebih kecil dari 0, maka akan dirubah menjadi 0, tapi jika nilai brightness lebih besar dari 255, maka akan dirubah menjadi 255.
Untuk lebih memahami tentang fungsi constrain(), silakan perhatikan isi dari fungsi constrain() di bawah ini:
int constrain(int value, int min, int max){
if(value > max){
value = max;
}
if(value < min){
value = min;
}
return value;
}
Tipe dari fungsi tersebut adalah int (integer), artinya fungsi tersebut akan mengembalikan nilai integer ketika dieksekusi disesuaikan dengan nilai value (return value).
Jika diperhatikan fungsi loop() dan fungsi setup() bukanlah int, tapi void. Tipe fungsi void berbeda dengan tipe int, fungsi void tidak mengembalikan nilai apa pun, sehingga jika diperhatikan, tidak ada perintah return pada fungsi dengan tipe void. Yap, demikian sekilas
tentang tipe fungsi integer dan void.
Selanjutnya, karena nilai brightness selalu antara 0-255, maka ketika dituliskan ke pinLED juga akan selalu selang antara 0-255 (perhatikan baris 39).
// pinLED diberi nilai antara 0 - 255
analogWrite(pinLED, brightness);
Fungsi analogWrite() digunakan untuk memberikan data PWM atau data analog. analogWrite() bisa menuliskan data dengan selang antara 0v hingga +5v pada pin INPUT. Berbeda dengan digitalWrite() yang hanya bisa menuliskan HIGH atau LOW, atau +5v atau 0v saja.
// delay agar perubahannya bertahap
delay(20);
delay(20) berfungsi untuk mengatur durasi perubahan intensitas cahaya LED. Jika delay(20) kita hilangkan, maka LED akan langsung hidup atau langsung mati ketika tombol ditekan. Jika kecilkan nilainya, maka perubahan intensitas akan lebih cepat, dan sebaliknya, jika kita besarkan
nilainya, maka perubahan intesitas akan lebih lama dengan catatan kita harus menahan ketika menekan tombol pushbutton.
Lalu bagaimana jika kita menekan kedua tombol pushbutton dengan bersamaan? Apa yang akan terjadi dengan LED? Silakan cari jawaban dan penjelasannya.
Sebelumnya kita sudah membahas tentang cara menghidupkan dan mematikan LED dengan sebuah pushbutton. Selanjutnya, kita akan menggunakan dua buah pushbutton dengan ketentuan : pushbutton yang pertama untuk menaikkan kecerahan LED hingga paling terang, sedangkan pushbutton yang kedua untuk menurunkan kecerahan LED hingga LED padam.
Fungsi kedua pushbutton ini mirip dengan volume-up dan volumedown. Yang satu untuk meningkatkan volume (kecerahan), sedangkan satunya lagi untuk menurunkan volume (kecerahan). Yak, setidaknya Anda paham apa yang saya maksudkan.
Setidaknya ada dua cara untuk menaikkan atau menurunkan tingkat kecerahan LED:
1. Mengubah arus yang masuk ke LED, cara ini bisa diaplikasikan dengan mengubah nilai resistor
2. Menghidup-matikan LED dengan cepat atau lambat. Begini, ketika kita menghidup-matikan LED dengan cepat, maka mata manusia tidak bisa mengetahuinya. Yang ditangkap oleh mata adalah terang atau redupnya saja. Jika kita menghidupmatikan led dengan cepat, maka LED tersebut akan terlihat terang, tapi kalau kita menghidup matikan LED dengan lebih lambat, maka LED akan terlihat lebih redup.
Dalam elektronika digital, konsep yang kedua dikenal dengan istilah PWM (Pulse Width Modulation). Apa itu PWM?
Sebagian kaki / pin Arduino support PWM, kaki yang support PWM ditandai dengan adanya tanda tilde (~) di depan angka pinnya, seperti 3, 5, 6, dan seterusnya. Frekuensi yang digunakan dalam Arduino untuk PWM adalah 500Hz (500 siklus dalam 1 detik). Jadi, Arduino bisa menghidup-matikan LED sebanyak 500 kali dalam 1 detik.
Untuk menggunakan PWM, kita bisa menggunakan fungsi analogWrite(). Nilai yang bisa dimasukkan pada fungsi tersebut yaitu antara 0 hingga 255. Nilai 0 berarti pulsa yang diberikan untuk setiap siklus selalu 0 volt, sedangkan nilai 255 berarti pulsa yang diberikan selalu bernilai 5 volt.
![]() |
Siklus Pulsa PWM |
Rangkaian
![]() |
Pengaturan Intensitas Cahaya LED |
1. Seperti biasa, siapkan sebuah LED dan resistornya. Sambungkan kaki positif LED ke pin 8 Arduino.
2. Kemudian kaki negatif LED disambungkan ke resistor menuju GND.
3. Siapkan dua buah pushbutton. Pushbutton yang pertama (atas) disambunkan ke GND dan ke pin 2 pada board Arduino.
4. Lalu pushbutton yang kedua (bawah) disambungkan ke GND dan pin 3 pada board Arduino.
Program
Sketch Mengatur intensitas cahaya LED
// Free Ebook Arduino
// www.elangsakti.com
// coder elangsakti
// pin 2 & 3 sebagai input digital
const int pinBt1 = 2;
const int pinBt2 = 3;
// Ingat, pin 9 support PWM
const int pinLED = 9;
void setup() {
pinMode(pinBt1, INPUT);
pinMode(pinBt2, INPUT);
pinMode(pinLED, OUTPUT);
digitalWrite(pinBt1, HIGH);
digitalWrite(pinBt2, HIGH);
}
int brightness = 0;
void loop() {
if(digitalRead(pinBt1) == LOW){
// jika pushbutton ditekan
// tambahkan nilai brightness
brightness++;
}else if(digitalRead(pinBt2) == LOW){
// jika pushbutton2 ditekan
// kurangi nilai brightness
brightness--;
}
// brightness dibatasi antara 0 - 255
// jika di bawah 0, maka ganti dengan 0
// jika di atas 255, maka ganti dengan 255
brightness = constrain(brightness, 0, 255);
// pinLED diberi nilai antara 0 - 255
analogWrite(pinLED, brightness);
// delay agar perubahannya bertahap
delay(20);
}
Ada 3 bagian pada Sketch 3.2 yang perlu dijelaskan lebih detail, yaitu pada baris 36, 39, dan 41.
// brightness dibatasi antara 0 - 255
// jika di bawah 0, maka ganti dengan 0
// jika di atas 255, maka ganti dengan 255
brightness = constrain(brightness, 0, 255);
Pada baris 36, kita menemukan satu fungsi baru, yaitu constrain(). Fungsi constrain() digunakan untuk menjaga agar nilai tetap pada range yang ditentukan. Pada kasus ini, range yang ditentukan adalah antara 0 – 255. Misal nilai brightness lebih kecil dari 0, maka akan dirubah menjadi 0, tapi jika nilai brightness lebih besar dari 255, maka akan dirubah menjadi 255.
Untuk lebih memahami tentang fungsi constrain(), silakan perhatikan isi dari fungsi constrain() di bawah ini:
int constrain(int value, int min, int max){
if(value > max){
value = max;
}
if(value < min){
value = min;
}
return value;
}
Tipe dari fungsi tersebut adalah int (integer), artinya fungsi tersebut akan mengembalikan nilai integer ketika dieksekusi disesuaikan dengan nilai value (return value).
Jika diperhatikan fungsi loop() dan fungsi setup() bukanlah int, tapi void. Tipe fungsi void berbeda dengan tipe int, fungsi void tidak mengembalikan nilai apa pun, sehingga jika diperhatikan, tidak ada perintah return pada fungsi dengan tipe void. Yap, demikian sekilas
tentang tipe fungsi integer dan void.
Selanjutnya, karena nilai brightness selalu antara 0-255, maka ketika dituliskan ke pinLED juga akan selalu selang antara 0-255 (perhatikan baris 39).
// pinLED diberi nilai antara 0 - 255
analogWrite(pinLED, brightness);
Fungsi analogWrite() digunakan untuk memberikan data PWM atau data analog. analogWrite() bisa menuliskan data dengan selang antara 0v hingga +5v pada pin INPUT. Berbeda dengan digitalWrite() yang hanya bisa menuliskan HIGH atau LOW, atau +5v atau 0v saja.
// delay agar perubahannya bertahap
delay(20);
delay(20) berfungsi untuk mengatur durasi perubahan intensitas cahaya LED. Jika delay(20) kita hilangkan, maka LED akan langsung hidup atau langsung mati ketika tombol ditekan. Jika kecilkan nilainya, maka perubahan intensitas akan lebih cepat, dan sebaliknya, jika kita besarkan
nilainya, maka perubahan intesitas akan lebih lama dengan catatan kita harus menahan ketika menekan tombol pushbutton.
Lalu bagaimana jika kita menekan kedua tombol pushbutton dengan bersamaan? Apa yang akan terjadi dengan LED? Silakan cari jawaban dan penjelasannya.
0 Reviews
Silakan dikomentari