Arduino Devreleri #16 Arduino RGB Led PWM Sinyali İle Renk Değiştirme

Merhabalar, bu yazımızda Arduino uygulamaları serisinden Arduino RGB Led PWM Sinyali İle Renk Değiştirme Uygulaması hakkında bilgi vereceğim.

Arduino programı ayrıntılı kod kısmı, devre bağlantı şeması, devre kurulumu detaylı anlatımı ve devre çalışma videosu şu şekildedir.

RGB LED NEDİR

RGB (Red Green Blue) Led, kırmızı, yeşil ve mavi renklerin bir araya getirilmesiyle oluşturulmuş led çeşididir. Bu renklerin birlikte çalıştırılması ile ara renkler meydana gelmektedir.

RGB Led’ler piyasada Ortak Katot ve Ortak Anot olmak üzere 2 çeşit bulunmaktadır. Ortak Katot RGB, ledlerin eksi uçlarının içeriden birleştirilerek dışarıya tek uç çıkartılması esasına göre yapılmıştır. Bu ortak uç eksiye (-) bağlanır. Ortak Anot RGB, ledlerin artı uçlarının içeriden birleştirilerek dışarıya tek uç çıkartılması esasına göre yapılmıştır. Bu ortak uç artıya (+) bağlanır.

RGB Led

RGB Led Ortak Anot katot

Önceki uygulamalarda LED’in yanması veya sönmesi için dijital çıkışları kullandık. Dijital işlemlerde 0 ve 1 değerleri söz konusudur. Yani LED ya açıktır ya da kapalıdır. Aradaki değerler yok sayılır.

Bu uygulamada PWM çıkışını kullanarak LED’e analog değer göndermeyi sağlayacağız. Öncelikle PWM’den bahsetmekte fayda var. Pulse Width Modulation (Darbe Genişliği Modülasyonu) veya PWM, dijital yollarla analog sonuçlar elde etmek için kullanılan bir tekniktir. Dijital kontrol, açık ve kapalı değerler arasında kare dalga oluşturmak için kullanılır. Bu açma-kapama modeli, sinyalin harcadığı süreye karşılık sinyalin harcadığı zamanın kısmını değiştirerek açık (5 Volt) ve kapalı (0 Volt) arasında gerilimleri simüle etmeyi sağlar. Böyle bir yapıda analog değer üretmek için darbe genişliğini değiştirmek yeterlidir.
Aşağıda verilen grafikte PWM ile analog sonuçların nasıl elde edildiğini görebilirsiniz.

PWM Sinyal Grafiği

Grafikte gösterilen yeşil çizgiler zamanı temsil etmektedir. Arduino’nun PWM frekansı yaklaşık 500Hz’dir. Yeşil çizgilerin her biri 2 milisaniyeyi temsil etmektedir. Ayrıca analogWrite() ile PWM pinlerine 0 ile 255 arasında değer gönderilmektedir. Örneğin analogWrite(255) ifadesi LED’in tam parlaklığını sağlarken, analogWrite(127) ifadesi LED’in yarı parlaklığını sağlar. 0 ile 255 arasındaki değerleri kullanarak LED’in farklı renklerde yanmasını sağlayabiliriz. Tabi PWM ile sadece LED’leri değil aynı zamanda servo motorları da kontrol edebiliriz. Yani özetle dijital yollarla analog sonuçlar üretmenin en iyi yolu PWM’dir.
Arduino UNO’da 14 adet dijital giriş/çıkış pini bulunmaktadır. Bunlardan 6 tanesi PWM çıkışı olarak kullanılmaktadır. PWM pinleri ~ simgesi ile belirtilmiştir. Bunlar; 3, 5, 6, 9, 10 ve 11 nolu pinlerdir.

Arduino PWM Sinyal Pinleri

RGB Ledimiz 0-255 arası bir parlaklıkta yanacaktır. Led 5V seviyesinde en parlak olarak yanmaktadır. Ara değerleri elde edebilmek için Arduino’nun Darbe Genişliği Modülasyonu (PWM – pulse width modulation) uçlarını kullanmamız gerekmektedir. PWM, 0 ile 5V arasında istediğimiz gerilimi Arduino’nun çıkış pininden almamızı sağlamaktadır. Her bir rengin RGB değeri aşağıda gösterilmiştir.

RGB Renk Skalası

0 – 255 ve 0V – 5V arasındaki ilişki aşağıdaki gibidir.

PWM Volt Değeri

Yukarıda görüleceği üzere her bir PWM değerine karşılık üretilen bir Volt değeri bulunmaktadır.

Devremiz içerisinde değişken tanımlaması yapılmıştır. Değişken nedir? Nasıl tanımlanır konusunu merak ediyorsanız aşağıdaki linke tıklayarak öncelikle değişkenler konusuna bir göz atabilirsiniz.

https://egitim.ahmetcandemir.com.tr/arduino-dersleri-9-arduino-degiskenler-ve-tanimlamalar-variables/

NOT: Kod bölümü içerisinde yer alan ve // işareti ile başlayan satırlar açıklama satırlarıdır. O satırdaki kod bloğunun ne anlama geldiği ve nasıl çalıştığı ile ilgili bilgi verir. Arduino // işaretli alanı çalıştırmaz. Kod satırından isterseniz // işaret ile başlayan açıklama satırlarını silebilirsiniz.

KOD BÖLÜMÜ


/* 
PWM Sinyali İle RGB Led Yakma.
Ledlere PMW sinyali ile farklı volt değerleri göndererek farklı renkler elde edeceğiz.
Bunun için digital PMW çıkışları kullanıyoruz.
*/
int kled = 11;
int yled = 10;
int mled = 9;

void setup() { 

//Ledleri çıkış olarak tanımlıyoruz
pinMode(kled,OUTPUT);
pinMode(yled,OUTPUT);
pinMode(mled,OUTPUT);

}
void loop()
{
//Fuşya Renk LED aktif
analogWrite(kled,255);
analogWrite(yled,0);
analogWrite(mled,255);
delay(1000);

//Vişne Renk LED aktif
analogWrite(kled,128);
analogWrite(yled,0);
analogWrite(mled,0);
delay(1000);

//Turkuaz LED aktif
analogWrite(kled,0);
analogWrite(yled,255);
analogWrite(mled,255);
delay(1000);

//Zeytin Yeşili LED aktif
analogWrite(kled,128);
analogWrite(yled,128);
analogWrite(mled,0);
delay(1000);
}

DEVRENİN ÇALIŞMASI:

Kod bölümü 1 saniye aralıklarla Fuşya, Vişne, Turkuaz, Zeytin Yeşili renkleri verecek şekilde şekilde programlanmıştır. Delay içerisindeki değer değiştirilerek yanma ve sönme süresi ayarlanabilir.

DEVRE BAĞLANTI ŞEMASI

Arduino RGB Led PWM Sinyali İle Renk Değiştirme

DEVRE KURULUMU:

Malzemeler:

Arduino Uno
Breadboard
1 adet RGB led diyot
3 adet 220 Ω direnç
4 adet iki ucu erkek jumper kablo

Breadboard üzerine RGB led diyot yerleştirilir. Bizim kulandığımız RGB led ortak katod özellikli RGB led diyottur. Bu yüzden RGB led diyotta uzun bacağı eksi olarak kullanacağız. Uzun bacak harici diğer bacaklara seri olarak dirençler bağlanır.  Dirençlerin birer uçları RGB led diyotların bacağına, diğer uçları da board üzerinden Arduino’nun 9 , 10 ve 11. pinine bağlanır.  RGB led diyotun  (-) bacağı (uzun bacak) board üzerinden Arduino’nun GND pinine bağlanarak devre tamamlanır.

Arduino RGB Led PWM Sinyali İle Renk Değiştirme

Devre hakkında yorumlarınızı aşağıdaki yorum kısmına yazabilirsiniz. Youtube kanalımızda da mBlock ve Arduino ile ilgili ders videoları bulabileceksiniz. Youtube kanalıma abone olmayı da unutmayınız.

https://www.youtube.com/@candemirahmet

Oval@3x 2

Bu ipuçlarını kaçırmayın!

Kayıt butonuna bastıktan sonra e-postanız gelen kutunuza giderek gelen e-postayı onaylamayı unutmayınız. Gelen kutusunda görülmeyen postalar için Önemsiz -Spam klasörünü kontrol edebilirsiniz. Eğer kayıt e-postası ulaşmadıysa iletişim menüsünden bu durumu bildirebilirsiniz.

Yazan: Ahmet Candemir
Teknik Öğretmen - Cisco Instructor - Microsoft MCP - ECDL MS Office Advanced Expert - Adobe Eğitmeni - MEB Fatih Projesi Koordinatörü - Robotik Kodlama Eğitmeni