Adreslenebilir (NeoPixel) LED Nedir? Arduino İle Adreslenebilir LED Kullanımı

Your ads will be inserted here by

Easy Plugin for AdSense.

Please go to the plugin admin page to
Paste your ad code OR
Suppress this ad slot.

 

Bu yazımızda yeni yeni yaygınlaşmaya başlayan bir üründen bahsedeceğiz. Adreslenebilir LED olarak bilinen bu ürün ileride bir hayli ilgi çekeceğe benziyor. Adreslenebilir ledi diğer ledlerden veya şerit ledlerden ayıran özelliği; ledleri tek tek adresleyerek çalıştırabilirsiniz. Mesela 8 ledden oluşan bir adreslenebilir lediniz var. Bu ledlerin 3. sünü yakabilir, 5. sini yakabilir ve 8. sini yakabilirsiniz. Aynı zamanda bu ledlerin de renkleri ile oynayabilirsiniz. 3. led kırmızı yanarken 5. ledi yeşil, 8. ledi mavi olarak çalıştırabilirsiniz.

Adreslenebilir ledler, özel bir haberleşme protokolü ile nokta bilgi gönderimi ile ilgili lede, parlaklık ve renk bilgisini gönderebilmektedir. Özel bir haberleşme protokolü dedik ancak seri haberleşme ile ilgilenenlerin bileceği bir tekniktir. I2C olarak bilinen seri haberleşme protokolüdür. Ancak kullanımı oldukça basittir.

Adreslenebilir ledlerin farklı çeşitleri bulunmaktadır.

Tekli Adreslenebilir LED

 

 

 

 

 

 

 

Çubuk Şeklinde Adreslenebilir LED

 

 

 

 

 

 

 

Halka Şeklinde Adreslenebilir LED

 

 

 

 

 

 

 

Matris Şeklinde Adreslenebilir LED

 

 

 

 

 

 

 

Şerit Şeklinde Adreslenebilir LED

 

 

 

 

 

 

 

 

Adreslenebilir ledler NeoPixel olarak da anılmaktadır bunun sebebi Adafruit firmasının üretmiş olduğu adreslenebilir ledlere verdiği isimdir. Kastedilen şey ise aynıdır.

Adreslenebilir ledler üzerinde seri haberleşmeyi gerçekleştiren entegreler bulunmaktadır. Bu entegreler ile de isimleri anılmaktadır. Bunlar ; WS2812, SK6812 ve APA102 entegreleridir.

Bizim ise programlanmasını göstereceğimiz WS2812 entegresinin kullanıldığı Adreslenebilir leddir.

Adreslenebilir LED Kullanımı ve Bağlantısı

Adreslenebilir RGB ledlerde her led üzerinde tümleik olarak 3 adet led bulunmaktadır. Bu ledler kırmızı, yeşil ve mavi renkte olan ledlerdir. Ancak sadece tek hat ile kontrol edilebilmektedir. Her led için 3 adet pin bağlantısı gerekmemektedir. 

 

Şerit halde ledleri kullanırken dikkat edilecek diğer bir husus ise güç tüketimidir.

Her led içerisinde 3 adet led bulunmaktadır demiştik. Bir led (RGB Led içerisinde ki tek bir Led) ortalama 20mA çektiği düşünülürse bir adet RGB led 20mA x 3 = 60mA akım çekecektir. 8 li çubuk led kullanıyorsanız 60mA x 8 = 480mA olacaktır. Yani 8’li çubuk led kullandığınız da Arduino üzerinden beslemek olumsuz sonuçlar doğurabilir. Ledlerin beslenmesi için harici bir kaynak kullanılmalıdır. Daha fazla sayıda lede sahip şerit kullanacaksanız ona uygun bir güç kaynağı seçmelisiniz.

Temel olarak adreslenebilir ledlerin üzerinde 4 tane pin bulunmaktadır. Bunlardan  2 tanesi Gnd. 1 tanesi Vdc, 1 tanesi de Din (bir tarafı Din diğer tarafı Dout) Din pini ile kontrol sağlanmaktadır.

 

Eğer 8li çubuk lede başka çubuk ledler eklemek isterseniz onları da Dout kısmına, yeni ekleyeceğiniz şerit ledin Din pini gelecek şekilde bağlamanız gerekir.

Arduino İle Adreslenebilir LED Bağlantı Şeması

Arduino İle Adreslenebilir LED Programı

Your ads will be inserted here by

Easy Plugin for AdSense.

Please go to the plugin admin page to
Paste your ad code OR
Suppress this ad slot.

Öncelikle program fonksiyonlarını içeren kütüphaneyi eklememiz gerekiyor.

Arduino IDE menüsünden Taslak >> Library ekle >> Libraryleri düzenle seçeneği tıklanır. Daha sonra açılan pencereden arama çubuğuna kütüphanemizin adını yazarak aratıyoruz. “FastLED”. Gelen kütüphaneyi son versiyonu ile “Kur” butonuna tıklayarak indiriyoruz. Eğer program yazma ekranına eklenmediyse Taslak >> Library ekle seçeneği ile gelen menüden “FastLED” seçeneğini bulup ekleyebiliriz.

Kısaca FastLED komutlarından bahsedelim:

#define LED_PIN 7                 // Ledi bağladığımız pini buraya yazıyoruz. Yani Led üzerinde Din’e bağladığımız pin
#define NUM_LEDS 8            // Burada Kaçlı Led kullanacağımızı belirtiyoruz.
CRGB leds[NUM_LEDS];        // Bir dizin oluşturuyoruz. bir üstte led sayısını belirttiğimiz için buraya bir şey yazmıyoruz.

void setup() {

FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);

}

Setup kısmına yukarıdaki şekilde konfigürasyon ayarı yapıyoruz. tabi tanımlamaları ve değişken isimlerini yukarıda yazdığımızdan değişken isimleri direk yerleşecektir. Bu kısma bir şey yazmıyoruz.

CRGB(kırmızı, yeşil, mavi);    // Belirtilen ledin renkleri burada ayarlanmaktadır. Kırmızı, yeşil ve mavi yazan yerlere 0-255 arasında değerler yazabilirsiniz. Bu değer o rengin ne kadar yanacağını kontrol eder. Mesela (255,0 ,0) şeklinde bir kullanımda sadece kırmızı yanacaktır. Benzer şekilde renk kombinasyonları da yapabilirsiniz.

leds[i] = CRGB(255, 0, 0);     //Led için yaptığınız renk ayarını “i” ile belirtilen lede aktarabilirsiniz. i = 0 ise 0. led gibi..

FastLED.show();     // Bu fonksiyonu yaptığınız ayarlardan sonra kullanmanız gerekmektedir. Çünkü bu komut led için yaptığınız ayarlamaların çalıştırılmasını (gösterilmesini) sağlıyor.

FastLED.clear();   // Ledlerin tamamının sönmesini sağlar ancak bu fonksiyondan sonra da FastLED.show() fonksiyonunu kullanmanız gerekmektedir.

 

Şimdi ledleri sırası ile değişik renklerde yakacak program kodlarına bakalım:

#include <FastLED.h>

#define LED_PIN 7

#define NUM_LEDS 8

CRGB leds[NUM_LEDS];

void setup() {

FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);

}

 

void loop() {

leds[0] = CRGB(255, 0, 0);

FastLED.show();

delay(500);

leds[1] = CRGB(0, 255, 0);

FastLED.show();

delay(500);

leds[2] = CRGB(0, 0, 255);

FastLED.show();

delay(500);

leds[3] = CRGB(150, 0, 255);

FastLED.show();

delay(500);

leds[4] = CRGB(255, 200, 20);

FastLED.show();

delay(500);

leds[5] = CRGB(85, 60, 180);

FastLED.show();

delay(500);

leds[6] = CRGB(50, 255, 20);

FastLED.show();

delay(500);

leds[7] = CRGB(50, 255, 20);

FastLED.show();

delay(500);

}

Aşağıdaki FOR komutu ile Ledlerin tek tek nasıl programlandığı görülmektedir:

 

#include <FastLED.h>
#define LED_PIN 7
#define NUM_LEDS 8
CRGB leds[NUM_LEDS];
int time=100;                           //time değişkeni ile ms olarak ledlerin arasındaki geçiş süresini ayarlayabilirsiniz.

void setup() {

FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);

}

void loop() {

for(int i = 0 ; i < 8 ; i++ ){
leds[i] = CRGB(255, 0, 0);
FastLED.show();
delay(time);
}
FastLED.clear();
FastLED.show();
delay(500);

///////////////////////////////

for(int i = 8 ; i > 0 ; i– ){
leds[i] = CRGB(255, 0, 0);
FastLED.show();
delay(time);
}
FastLED.clear();
FastLED.show();
delay(500);

}

 

Dudigan