RGB LED Nedir?
Merhaba arkadaşlar. Bugün sizlerle beraber Arduino ile RGB LED kontrolü yapacağız.
Gerekli malzemelerimiz:(Aşağıda verilmiştir)
RGB LED Nedir?
RGB LED’ler, normal LED’lerden farklı olarak tek paket içerisinde 3 farklı renk (kırmızı, yeşil ve mavi) LED’i bir arada bulundurur. LED yakıp söndürme dersimizden hatırlayacak olursak LED’lerin anot ve katot uçları bulunuyordu. RGB LED’lerde ise LED’in üretim şekline göre anot veya katot bağlantıları ortak olarak bulunmaktadır.
Bizim kullandığımız kitte bulunan RGB LED’imiz ortak anoda sahip. Ama bu yazımızda hem ortak anoda göre hem de ortak katoda göre Arduino kodu ve devre şeması hazırlayacağız. Siz de RGB LED’inize bakarak uygun olan devreyi yapıp, Arduino kodlarınızı yükleyebilirsiniz.
PWM ve Dijitalden Analog’a Dönüşüm
Bildiğimiz gibi Arduino’muzun giriş/çıkış pinlerinde kullanılan voltaj 5V seviyesinde. Bir önceki dersimizde LED’imizi 5V gerilimde 20 mA akım çekecek şekilde kartımıza bağlamıştık. Bu şekilde bağladığımızda LED’imiz olabilecek en parlak şekilde yanmaktaydı. Peki parlaklığı değiştirmek istersek ne yapmamız gerekir?
Sorunun cevabı aslında basit: gerilimi düşürmek. Eğer 5V ile çalışan LED’imizi daha düşük bir gerilimle, örneğin 3V ile çalıştırırsak parlaklığı azalacaktır. Fakat bu sefer de şunu sorabilirsiniz: Arduino çıkış gerilimi 5V değil miydi? Nasıl 3V çıkış alabiliriz?
Burada darbe genişliği modülasyonu (PWM – pulse width modulation) tekniğini kullanmamız gerekiyor. Bu yazıda darbe genişliği modülasyonu yerine kısaca PWM olarak bahsedeceğim. PWM, çıkışta aldığımız 5V gerilimi belirli bir zaman aralığında (Arduino’da genellikle saniyenin 1/500’ü) açıp kapatarak 0 ile 5V arasında istediğimiz gerilimi Arduino’nun çıkış pininden almamızı sağlar. Şu şekilde düşünelim: eğer bir LED çok hızlı bir şekilde yanıp sönerse gözümüz bu yanıp sönmeyi tam olarak algılayamaz ve parlaklığı daha düşük olarak algılar.
Yukarıdaki görselde gördüğümüz üzere, 5V’u 2 milisaniyelik sürenin sadece %5’lik kısmında açık olacak şekilde verirsek, elde ettiğimiz değer 5V’un %5’i; yani 0,25V olacaktır. Aynı şekilde eğer 2 ms sürenin yarısında (%50) açık kalacak şekilde ayarlarsak 2,5V elde ederiz.
Arduino UNO kartımızın tüm pinleri PWM çıkış yeteneğine sahip değildir. Kartımızın dijital pinlerinde pin numarasının önünde ~ işareti olan bazı pinler mevcuttur. Eğer PWM çıkış almak istiyorsak, bu pinleri kullanmak zorundayız. Bu pinler Arduino UNO için 3, 5, 6, 9, 10 ve 11 numaralı pinlerdir.
RGB LED İçin Arduino Kodu
İlk dersimizde Arduino yazılımı içinde mevcu olan örnek kodu değiştirmiştik. Bu sefer kodumuzu kendimiz yazıyoruz:
//Ortak Anot RGB LED için Arduino Kodu
//RGB LED'imizin bacaklarını Arduino'da bağladığımız pinlere göre global değişken olarak atadık.
int kirmiziPin = 9; //Kırmızı bacak 9 numaralı pine
int yesilPin = 10; //yeşil bacak 10 numaralı pine
int maviPin = 11; //mavi bacak 11 numaralı pine
void setup(){
pinMode(kirmiziPin, OUTPUT); //kirmiziPin(9) çıkış pini olarak atadık
pinMode(yesilPin, OUTPUT); //yesilPin(10) çıkış pini olarak atadık
pinMode(maviPin, OUTPUT);} //mavi(11) çıkış pini olarak atadık
void loop(){
renkAyarla(255, 0, 0); //kirmizi
delay(1500); //1.5 saniye bekle
renkAyarla(0, 255, 0); //yesil
delay(1500); //1.5 saniye bekle
renkAyarla(0, 0, 255); //mavi
delay(1500); //1.5 saniye bekle
renkAyarla(255, 255, 0); //sari
delay(1500); //1.5 saniye bekle
renkAyarla(80, 0, 80); //mor
delay(1500); //1.5 saniye bekle
renkAyarla(0, 255, 255); //acik mavi
delay(1500); //1.5 saniye bekle
renkAyarla(255, 255, 255); //beyaz
delay(1500); //1.5 saniye bekle
}
//Renk ayarla fonksiyonu oluşturduk
void renkAyarla(int kirmizi, int yesil, int mavi){
kirmizi = 255-kirmizi;
yesil = 255-yesil;
mavi = 255-mavi;
analogWrite(kirmiziPin, kirmizi);
analogWrite(yesilPin, yesil);
analogWrite(maviPin, mavi);
}
RGB LED’imizin kırmızı bacağını 9 numaralı pine, yeşil bacağını 10 numaralı pine ve mavi pinini 11 numaralı pine 220 Ω’luk dirençler ile bağlıyoruz. Kullandığımız LED ortak anot yapıya sahip olduğu için anot bacağını da kartımızın 5V pinine bağlıyoruz.