7 Mayıs 2020

Arduino ile RGB LED Uygulaması

Arduino mikrokontrolcüsü ile bu yazımda RGB LED yakma uygulaması yapacağız. Tek renkli ve 2 bacaklı LED ile RGB LED’i yakmak aynı prensipte uygulanmaktadır. RGB LED yakma uygulamasından önce RGB LED’ in ne olduğundan başlayalım.

RGB LED Nedir?

RGB LED ismini RED- BLUE- GREEN kelimelerinden almaktadır. Tek bir LED olmasına rağmen içerisinde temel renk olan kırmızı, yeşil ve mavi renk ışık yayan diyota sahiptir.


RGB LEDler genellikle 3 bacaklı olup bu bacaklardan 3′ ü farklı renklere sahip diyotların bacaklarıdır. Buna ek olarak 4. bacak ise ortak anot veya ortak katot bacağıdır. Ortak anot veya katot olma durumlarında RGB LED’ i yakan yazılım değişmektedir.


Ortak katotlu bir RGB LED yakılırken hangi renge ait diyodun ışık yayması isteniyorsa o diyodun anot kutbuna 5V gerilim yani lojik-1 sinyali uygulanır. Eğer RGB LED ortak anotlu ise hangi renge ait diyodun ışık yayması isteniyorsa o diyodun katot kutbuna 0V gerilim yani lojik-0 sinyali uygulanır. Bu sayede her iki durumda da istenilen renge sahip LED yanmış olur. RGB LED üzerinnde parlaklık ayarı yapılmak istenirse lojik-1 sinyalleri yerine PWM pinleri üzerinden PWM sinyalleri verilmelidir. Bu duruma yazımın ilerleyen kısımlarında değineceğim.

Kullanılacak Malzemeler

  • 1 adet Arduino UNO
  • 1 adet breadboard
  • 1 adet RGB LED
  • 3 adet 330 ohm direnç
  • 4 adet erkek-erkek jumper

Devre Şemasının Oluşturulması

Bu projede mikrokontrolcü olarak Arduino UNO geliştirme kartını kullanacağız. Dijital pini ve PWM çıkışlı pini olan farklı bir Arduino modeli de kullanılabilir.

Arduino ile RGB LED yakabilmek için RGB LED’ e ait R-G-B bacakları birer akım sınırlayıcı direnç ile birlikte Arduino kartının dijital pinlerine yerleştirilmelidir. RGB LED eğer ortak katotlu ise katot bacağı Arduino’ nun GND pinine; ortak anotlu ise Arduino’ nun 5V pinine bağlanmalıdır. Bu oluşturulan devre ile RGB LED istenilen renkte yakılabilmek için ilgili rengin bağlı olduğu dijital pinler lojik-1 sinyali üretmelidir.

RGB LED üzerinde parlaklık ayarı yaparak sonsuz renk çemberi içerisinden istenilen rengin yakılması istenirse Arduino üzerinde bulunan PWM pinleri ile RGB LED arasında bağlantı yapılmalıdır. Her iki durum için farklı devre kurmamak için PWM pinleri ile kurulan devreyi hem parlaklık ayarı için hem de sadece lojik-1 sinyalleri ile yakmak için kullanabiliriz.

Yukarıdaki devre şemasında da görüldüğü üzere Arduino ile RGB LED yakma uygulamasını breadboard üzerinde çalıştırabiliriz. Şimdi yukarıdaki devrenin istediğimiz gibi çalışabilmesi için gerekli kodları yazıp Arduino kartımıza kendi IDEsi aracılığıyla yüklemeliyiz.

Yazacağımız kodlar bizim oluşturacağımız devre senaryosuna göre farklılık gösterebilir. Hangi rengin RGB LED üzerinde yanmasını ve yanan bu rengin parlaklığının nasıl olmasını istiyorsak o duruma göre kodları yazmalıyız.

5V Gerilim Uygulayarak RGB LED Yakmak için Kodlar

RGB LED’ in dijital pinlerine bağlı bacakları OUTPUT olarak tanımlayarak yanması ve yine dijital pinlere bağlı butonu INPUT olarak tanımlayarak Arduino tarafından okunması sağlanmalıdır. Aşağıdaki kodlarda 3, 5 ve 6 numaralı pinler RGB LED için OUTPUT olarak tanımlanmıştır. Kod yazılırken parlaklık ayarı yapılması esnasında zorluk yaşanmaması için de bu pinler PWM pinleri olarak seçilmiştir. RGB LED’ in renk bacaklarının bağlı olduğu pinler “kirmizi”, “yesil” ve “mavi” isimli sabitlere atanmıştır.

#define kirmizi 3
#define yesil 5
#define mavi 6

void setup()
{
  pinMode(kirmizi, OUTPUT);
  pinMode(yesil, OUTPUT);
  pinMode(mavi, OUTPUT);
}

void loop()
{
  digitalWrite(kirmizi, HIGH);
  delay(500);
  digitalWrite(kirmizi, LOW);
  digitalWrite(yesil, HIGH);
  delay(500);
  digitalWrite(yesil, LOW);
  digitalWrite(mavi, HIGH);
  delay(500);
  digitalWrite(mavi, LOW);
}

Yukarıdaki kod Arduino UNO kartına yüklediğinde 3, 5 ve 6 numaralı pinlere bağlı ortak katotlu RGB LED‘ in 500 ms zaman farkıyla sırasıyla kırmızı, yeşil ve mavi yandığı gözlemlenir.

PWM Tekniği ile RGB LED Parlaklık Kontrolü için Kodlar

RGB LED’ in 3 adet renk bacakları Arduino kartının dijital pinlerinden lojik-1 sinyali aldığında maksimum parlaklıkta yanmaktadır. Üstteki kodda bu duruma örnektir. Eğer bir LED üzerinde parlaklık kontrolü yapılmak isteniyorsa PWM tekniği başvurulması en olası tekniktir.

Arduino mikrokontrolcüsünün pinlerinden en fazla 5V değerinde bir gerilim elde edilebilmektedir. PWM (Pulse Width Modulation) tekniği ile 5V gerilim 0V – 5V arasında bir gerilim seviyesine ayarlanabilmektedir. Bu işlemin işlemciyi yormaması için mikroişlemci ve mikrodenetleyicilerde özel olarak PWM pinleri bulunmaktadır. Bu pinler ile üretilen PWM sinyalleri işlemciye ek yük bindirmemektedir.

Dijital pinlerin 8 bit çözünürlükte olduğunu ve bunun da 0- 255 arasında veri anlamına geldiğini göz önünde bulundurursak PWM pinlerinden analogWrite() fonksiyonu ile PWM sinyali üretebiliriz.

PWM sinyalinin doluluk oranının 0- 255 arasında denk geldiği sayı Arduino kartının PWM pinlerinde kullanılabilmektedir. Örnek olarak LED’ in yarı parlaklıkta yanması için %50 doluluk oranına sahip bir PWM sinyali üretilmelidir. Bunun için de 0- 255 arası çözünürlüğe sahip Arduino PWM pinlerinden analogWrite(127) komutu ile bu sinyal üretilmelidir.

#define kirmizi 3
#define yesil 5
#define mavi 6

void RGB(int x, int y, int z);
//sonsuz renk cemberi için fonksiyon bildirimi

void setup()
{
  pinMode(kirmizi, OUTPUT);
  pinMode(yesil, OUTPUT);
  pinMode(mavi, OUTPUT);

}

void loop()
{
  analogWrite(kirmizi,127);
  //%50 parlaklıkta kirmizi
  analogWrite(kirmizi, 0);
  //kirmizi led soner

  analogWrite(yesil,64);
  //%25 parlaklıkta yesil
  analogWrite(yesil, 0);
  //yesil led soner

  analogWrite(mavi,191);
  //%75 parlaklıkta mavi
  analogWrite(mavi, 0);
  //mavi led soner

  RGB(13, 107, 241);
  /* %5.1 parlaklikta kirmizi 
  %41.9 parlaklikta yesil 
  %94.5 parlaklikta mavi renk barindiran bir renk */
}

void RGB(int x, int y, int z)
{
  analogWrite(kirmizi,x);
  analogWrite(yesil, y);
  analogWrite(mavi, z);
  //aynı anda 3 rengin istenilen oranda yanmasi
}

Yukarıdaki kod Arduino UNO kartına yüklediğinde 3, 5 ve 6 numaralı pinlere RGB LED’ in yazılan koddaki PWM sinyalinin doluluk oranının değiştirilmesi ile farklı renklerde yandığı gözlemlenir. Bu kod sayesinde RGB LED’ in rengi kontrol edilebilir.

Yorum bölümünden tüm sorularınızı bana iletebilirsiniz.

Çalışmalarınızda başarılar dilerim.

Hamit Can Dinç.

Share

Hamit Can Dinç

Yıldız Teknik Üniversitesinde Elektrik Mühendisliği öğrencisi. Araştırma ve geliştirme odaklı projelerde yer almayı sever.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir