Arduino ile RGB LED Uygulaması
Bu dersimizde üzerinde (Red-Green-Blue, Kırmızı-Yeşil-Mavi) LED’ler barındıran ve birden fazla renk kombinasyonu ile yanabilen bir diyot türü olan RGB ile ilgili bir örnek yapacağız. Bu özel diyot ile hemen hemen bütün renkleri elde etmek mümkün.
Merhabalar,
Bu dersimizde üzerinde (Red-Green-Blue, Kırmızı-Yeşil-Mavi) LED’ler barındıran ve birden fazla renk kombinasyonu ile yanabilen bir diyot türü olan RGB ile ilgili bir örnek yapacağız. Bu özel diyot ile hemen hemen bütün renkleri elde etmek mümkün.
4 bacaklı bir yapısı olan RGB LED’in uzun olan bacağı genelde katot (-) ucudur. Anot (+) olduğu durumlar da vardır. Buna dikkat etmek gerekir. Diğer 3 bacak ise Red, Green ve Blue (RGB) renklerini ifade eder. Ortak anot ya da katot bacağının bir tarafında tek bacak, diğer tarafında ise 2 bacak vardır. Tek bacak kırmızı LED’i, diğer bacaklardan ortadaki yeşil LED’i, kalan son bacak ise mavi LED’i ifade eder. RGB’nin kırmızı bacağını 9, yeşil bacağını 10 ve mavi bacağını ise 11 numaralı PWM pinlerine bağlayacağız.

RGB LED’in bacaklarını Arduino üzerinde PWM (~) denilen pinlere bağlamak zorundayız. PWM nedir peki?
PWM (Pulse Width Modulation) – Darbe Genişlik Modülasyonu: Basitçe analog devre elemanlarını dijital sinyallerle kontrol etmemizi sağlayan bir yoldur. Sinyalin frekansının belirlenen değerlerde değiştirilmesi ile dijital sinyalin analog sinyali mimiklemesi gibi de düşünebiliriz. Arduino için analog voltaj çıktısı verebilir mi sorusunun cevabı hem evet hem de hayırdır. Arduino gerçekte bir analog voltaj çıktısına sahip değildir. Arduino çok hızlı çalıştığından PWM pinleri ile bu çıktıyı elde etmeye çalışır. Arduino’nun bir pini saniyede 1000 kez açıp kapayacak hıza sahip olduğu düşünüldüğünde PWM pinleri HIGH ve LOW konumlarıyla harcanan zamanı kullanmaktadır. Yani PWM pini HIGH konumunda iken daha fazla vakit harcıyorsa bu pine bağlı LED parlak yanacaktır. Tam tersi LOW konumunda iken harcadığı vakit daha fazla ise LED sönük kalacaktır. Arduino bu işlemi insanın gözünün görebileceğinden daha hızlı gerçekleştirdiğinden bunu farkedememekteyiz. Bu duruma bir nevi Arduino Analog Çıktı aldatmacası da diyebiliriz. Kısaca 0 ve 5V arasında değişen oranlarda gerilim uygulamak için PWM pinlerini kullanmalıyız. RGB 0-255 arası analog değerleri kullanarak farklı renkler gösterir böylece.
Devremizde şunları kullanacağız:
1- Arduino UNO
2- Breadboard
3- RGB LED
4- 3 adet 220 ohm direnç (Kırmızı, kırmızı, kahverengi)
5- Jumper kablolar
Devremizi şöyle kurabiliriz:

Devremize ait kodlar ise:
/* BlogKod Arduino ile RGB Uygulaması*/
const int kirmiziPin = 9; //Kırmızı LED'i 9 nolu pine sabitledik
const int yesilPin = 10; //Yeşil LED'i 10 nolu pine sabitledik
const int maviPin = 11; //Mavi LED'i 11 nolu pine sabitledik
void setup()
{
// LED pinlerini çıkış olarak tanımlıyoruz...
pinMode(kirmiziPin, OUTPUT);
pinMode(yesilPin, OUTPUT);
pinMode(maviPin, OUTPUT);
}
void loop()
{
// Tüm LED'ler sönük...
digitalWrite(kirmiziPin, LOW);
digitalWrite(yesilPin, LOW);
digitalWrite(maviPin, LOW);
delay(1000); // 1 saniye bekle...
// Yalnızca Kırmızı LED'i yakıyoruz...
digitalWrite(kirmiziPin, HIGH);
digitalWrite(yesilPin, LOW);
digitalWrite(maviPin, LOW);
delay(1000);
// Yalnızca Yeşil LED'i yakıyoruz...
digitalWrite(kirmiziPin, LOW);
digitalWrite(yesilPin, HIGH);
digitalWrite(maviPin, LOW);
delay(1000);
// Yalnızca Mavi LED'i yakıyoruz...
digitalWrite(kirmiziPin, LOW);
digitalWrite(yesilPin, LOW);
digitalWrite(maviPin, HIGH);
delay(1000);
// Sarı renk için Kırmızı ve Yeşil LED'leri yakıyoruz...
digitalWrite(kirmiziPin, HIGH);
digitalWrite(yesilPin, HIGH);
digitalWrite(maviPin, LOW);
delay(1000);
// Cyan rengi için Yeşil ve Mavi LED'leri yakıyoruz...
digitalWrite(kirmiziPin, LOW);
digitalWrite(yesilPin, HIGH);
digitalWrite(maviPin, HIGH);
delay(1000);
// Mor renk için Kırmızı ve Mavi LED'leri yakıyoruz...
digitalWrite(kirmiziPin, HIGH);
digitalWrite(yesilPin, LOW);
digitalWrite(maviPin, HIGH);
delay(1000);
// Beyaz renk için tüm LED'leri yakıyoruz...
digitalWrite(kirmiziPin, HIGH);
digitalWrite(yesilPin, HIGH);
digitalWrite(maviPin, HIGH);
delay(1000);
}

Arduino RGB Devre Videosu:
Devremiz yukarıdaki videodaki gibi çalışmıyorsa, pinleri kontrol etmeliyiz. RGB’nin uzun ucu ortak katot değil ortak anot uç da olabilir. Bu durumda jumper kablomuzu GND pinine değil 5V pinine bağlamamız gerekebilir.
Bir sonraki uygulamamızda görüşmek üzere…