Skip to main content

Mengontrol Tingkat Kecerahan LED

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.
Siklus Pulsa PWM
Siklus Pulsa PWM
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 

Pengaturan Intensitas Cahaya LED
Pengaturan Intensitas Cahaya LED
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.



Comments

Popular posts from this blog

GROUND bagian 1 by Sarono Elektronika Blog Adi Sanjaya Global Techno Solution - AS-GTS

GROUND bagian 1
Banyak pertanyaan kepada saya apa itu ground ? apa guna nya ? apakah selalu ground itu negatif ? Apa yang di maksud titik netral pada pencatu daya terbelah ?
Agak sulit menerangkan dengan kata kata, bahkan dari hasil diskusi saya dengan beberapa teman yang sudah pakar elektronik juga mereka menemukan kesulitan nya mengungkapkan dengan kata kata walau kita mengerti tentang ground.
Untuk itu saya mencoba menerangkan semaksimal mungkin, tetapi sesungguh nya yang"mendengar" mestinya sudah punya ilmu elektronika minimal sampai teknik penguat audio.
Jadi, jika belum memehami tentang teknik audio dan masih bingung tentang konsep dan aplikasi ground masih di maklum kan.
Pada rangkaian listrik sederhana tidak di perlukan ground, misalkan senter, (body nya terbuat dari plastik) itupun sering negatif nya di hubungkan dengan body senter terbuat dari logam.
a. Pengertian Ground
Ground adalah titik yang dianggap sebagai titik kembali nya arus listrik arus seara…

HAMBATAN LISTRIK by Sarono Elektronika Blog Adi Sanjaya Global Techno Solution - AS-GTS

HAMBATAN LISTRIK
Pada bahasan sebelumnya sudah di tegaskan bahwa menghubungkan langsung positip dan negatip battery tidak boleh di lakukan, karena jumlah elektron yang mengalir menjadi sangat besar dan selama mengalir antara elektron saling berbenturan dan menimbulkan panas yang besar.
TETAPI
1) Jika jalan yang di lalui panjang (kawat nya panjang), maka kawat itu akan menjadi perlawanan listrik, makin panjang kawat maka perlawanan terhadap arus listrik juga semakin besar.
2) Atau kalau jalan nya arus di kawat juga di kecilkan (tebal kawat) nya di tipiskan juga akan menghasilkan Hambatan bagi arus semakin besar (Hambatan listrik membesar).
Dengan demikian kita bisa menghambat arus listrik itu dengan membuat kawat yang panjang dan mengatur tipis nya (luas penampang) kawat.
Ada faktor ke 3 yaitu jenis kawat.
Jenis kawat tertentu lebih mudah melewatkan arus, sementara kawat yang lain lebih sulit melewatkan arus.
Dalam teori elektron dapat di jelas kan : kawat tertentu daya ika…

Cara menggunakan modul relay dengan arduino UNO.

Material yang di butuhkan:
- Relay module 2 channel
- Arduino UNO.
- kabel jumper male - female

Relay module 2 channel  5V dengan 2 channel output dapat digunakan sebagai saklar elektronik untuk mengendalikan perangkat listrik yang memerlukan tegangan dan arus yang besar. Kompatible dengan semua mikrokontroler khususnya Arduino


Spesifikasi
•    Jumlah Relay : 2
•    Control signal : TTL level (ACTIVE LOW) ini artinya relay akan aktif jika kita memberikan logika LOW ke pin trigger relay (pin in1 /in 2)

Catatan : gambar bisa jadi berbeda dengan fisik relay yang dikirim, tapi pin pin pasti terdiri dari pin Vcc GND dan pin in1/in2 … untuk jumlah channel lainnya maka pin in1 2, dst akan sesuai dengan jumlah channel relay modul
•    Rating arus : 10A 250VAC, 10A 30VDC, 10A 125VAC, 10A 28VDC
•    Contact action time : 10ms/5ms
•    Indikator LED untuk masing masing channel



Catatan : gambar bisa jadi berbeda dengan fisik relay yang dikirim, tapi pin pin pasti terdiri dari pin Vcc GND dan pin in1/in2…