RGB Led Kullanımı

Arduino eğitimine devam ediyoruz. Bu başlık altında RGB led kullanımı hakkında bilmeniz gerekenleri sizlere aktarıp örnek bir proje geliştireceğiz. Öncelikle RGB Led nedir? Nasıl çalışır? bunlar hakkında bilgi vermek istiyorum.

Led olarak şimdiye kadar kırmızı, sarı ve yeşil ledler ile çalışmalar yaptık. Bu ledler isimlerinden anlaşılacağı üzere belirli bir renge sahip olup sadece o renkle ilgili ışık saçılmasını sağlar. Bunlar aşağıdaki gibi olup çeşitli renklerde olanları da piyasada bulunmaktadır.

RGB ledlerde ise durum oldukça ilginç. Tek bir RGB led ile ister kırmızı, ister sarı, ister yeşil veya başka bir rengi kolaylıkla üretebilirsiniz. Özellikle amacınız devrenizi sadeleştirmek ve daha küçük bir hale getirmek ise üç adet veya daha fazla led kullanmak yerine tek bir RGB ile istediğiniz bir rengi rahatlıkla üretebilirsiniz.

RGB ledlerde aşağıda verilen üç adet rengin veya ledin bir arada bulunması sağlanmaktadır.

  • Red Led x 1
  • Green Led x 1
  • Blue Led x 1

RGB ile elde edilen herhangi bir renk yukarıda verilen üç ledin bir kombinasyonu olarak üretilmektedir. RGB ledlerin yapısı aşağıdaki gibidir.

Yukarıda görüleceği üzere RGB led ile kırmızı, yeşil ve mavi renkleri kolaylıkla üretebiliriz. Örneğin amacınız kırmızı rengi elde etmek ise diğer iki rengi kapatmanız yeterli olacaktır.

RGB ile üç ana rengi rahatlıkla üretebilirsiniz. Ancak amacınız diğer renkleri üretmek ise üç ana rengi farklı yoğunluklarda birleştirmeniz yeterli olacaktır. Bunu yapabilmek için PWM çıkışlarını kullanabilirsiniz. Renkleri nasıl karıştıracağınızı görmek için aşağıda verilen şemayı inceleyiniz.

Yukarıda ana renklerin karışımından elde edilen yeni renkleri görebilirsiniz. Bu temel bilgileri verdikten sonra devremizi oluşturabiliriz. Öncelikle temin etmemiz gereken bileşenleri listeleyelim.

  • RGB Led x 1
  • 220 Ohm Resistor x 3
  • Jumper (Erkek-Erkek) x 4

Bu bileşenleri temin ettikten sonra devremizi aşağıdaki gibi oluşturalım.

Yukarıda görülen devrede bağlantı işlemi aşağıdaki gibi yapılmıştır.

  • RGB’nin soldan ilk bacağı (RED), Arduino’da bulunan 11 nolu PWM çıkışına bağlanır.
  • RGB’nin soldan ikinci bacağı (GND), Arduino’da bulunan GND pinine bağlanır.
  • RGB’nin soldan üçüncü bacağı (GREEN), Arduino’da bulunan 10 nolu PWM çıkışına bağlanır.
  • RGB’nin soldan dördüncü bacağı (BLUE), Arduino’da bulunan 9 nolu PWM çıkışına bağlanır.

Devremizin kodu aşağıdaki gibidir.


int redPin= 11;
int greenPin = 10;
int bluePin = 9;

void setup() {

  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);

}

void setRGBColor(int red, int green, int blue) {

   analogWrite(redPin, red);
   analogWrite(greenPin, green);
   analogWrite(bluePin, blue);

}

void loop() {

   setRGBColor(255, 0, 0);
   delay(1000);

   setRGBColor(0, 255, 0); 
   delay(1000); 

   setRGBColor(0, 0, 255); 
   delay(1000); 

}

Kodların açıklaması aşağıdaki gibidir:

int redPin= 11; 
int greenPin = 10; 
int bluePin = 9;

Yukarıda RGB’nin Red, Green ve Blue bacaklarının bağlı oldukları pinlerin sayısal karşılıkları değişkenlere atanır. Red bacağını 11, green bacağını 10 ve Blue bacağını da 9 nolu PWM çıkışına bağladık.


pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);

pinMode() metodu ile ilgili PWM pinlerini OUTPUT olarak ayarladık. Aslında PWM’ler zaten çıkış olarak yapılandırılmıştır. Yani bu işlemi yapmak zorunlu değildir.

void setRGBColor(int red, int green, int blue) {

   analogWrite(redPin, red);
   analogWrite(greenPin, green);
   analogWrite(bluePin, blue);
}

RGB’den farklı renkler elde edebilmek için her defasında her üç bacağa farklı değerler göndermek zorundayız. Bunun için analogWrite() metodunu kullanmalıyız. Üç tane bacağımız olduğundan dolayı üç adet analogWrite() metodunu her defasında çağırmak yerine bunları bir metot içinde tanımlayıp metodu çağırmak daha mantıklı olacaktır. Bundan dolayı setRGBColor() metodunu oluşturduk. Bu metot red, green ve blue olmak üzere üç farklı parametreye sahiptir. Her bir parametre 0 ile 255 arasında değer alabilir.

Şimdi loop metodunda bulunan kodları sırasıyla açıklayalım.


setRGBColor(255, 0, 0);
delay(1000);

setRGBColor() metoduna 255,0 ve 0 değerlerini gönderdik. Bu şekilde RGB’de bulunan Red bacağına 255 değeri, diğer iki bacağa da 0 değeri gönderilmesi sağlanır. Bunlar RGB’ye gittikten sonra sadece kırmızı rengi görürüz. Çünkü 255 değeri ile RGB’de bulunan kırmızı ledin aktif olması sağlanır.

 

setRGBColor(0, 255, 0);
delay(1000);

Bu kodlar ile bu kez RGB’de sadece yeşil rengi görürüz. Çünkü Red ve Blue bacağına 0, Green bacağına 255 değeri gönderilmiştir.


setRGBColor(0, 0, 255);
delay(1000);

Yukarıdaki son kodumuz ile RGB’de bulunan mavi ledin aktif olması sağlanır. Çünkü red ve green bacaklarına 0, blue bacağına ise 255 değerini gönderdik.