Son dönemdeki en eğlenceli Arduino modüllerinden birisi hiç şüphesiz NeoPixel adreslenebilir RGB LED‘ler. Bu LED şeritleri geleneksel şeritler gibi hepsi aynı renkte olmak zorunda değil. Şerit üzerindeki istediğimiz LED’i istediğimiz renge ayarlayabiliyoruz. Böylece olağanüstü ışık oyunları elde etmek mümkün.
Bu yazıda bu adreslenebilir LED’lerin en temel versiyonlarından olan WS2812B-8 kodlu 8 LED’li modülün nasıl kullanıldığını öğreneceğiz.
Öncelikle elektronik yapı ile başlayalım. Bu RGB LED’ler kendi içlerinde bir entegre devreye sahipler ve belirli bir veri biçimi ile Arduino’ya bağlanıyorlar. NeoPixel adreslenebilir RGB LED’leri tekli veya uzun şeritler halinde de edinebiliyoruz. Projemizde kullanacağımız 8’li parçaları da peş peşe ekleyebiliyoruz.
Şeridin arkasındaki pin bağlantıları alışık olduğumuz VCC (5V) ve GND‘nin yanında bir yanda IN, diğer yanda OUT pinlerini içeriyor. İlk şeridimizi Arduino’ya IN pini ile bağlıyoruz. Sıraya eklenecek şeritleri de öncekinin OUT pini sonrakinin IN pinine bağlanacak şekilde bağlıyoruz. Elbette ek şeritlere VCC ve GND bağlantılarını da sağlıyoruz.
IN pinini Arduino’nun dijital pinine küçük bir direnç ile bağlamak öneriliyor. Gerçekten gerekli değil, ancak NeoPixel LED şeridimizin sağlığı için kullanmakta büyük fayda var. Bu direnç değeri 330 ile 680 Ohm arasında herhangi bir değer olabilir. Uzun şeritler kullanacaksak sondaki şeritlere giden sinyalin düşmemesi için direnç değerini küçültmekte fayda var.
Çok uzun şeritlerde ilk şeridin VCC ve GND arasına 1000 µF değerinde bir elektrolitik kondansatör eklenmesi de ani gerilim değişmelerinin önüne geçmek için öneriliyor. Kısa şeritler için hiç gerek yok.
Devre kurulumumuzla başlayalım. Her şey oldukça basit.
NeoPixel RGB LED şeritleri Adafruit‘in NeoPixel kütüphanesi aracılığıyla kullanıyoruz. Bu kütüphaneyi Arduino’nun kütüphane yöneticisinden aratıp yükleyebiliyoruz.
Aşağıdaki sketch 8’li NeoPixel RGB LED şeridin her bir LED’ini farklı renkte yakıyor.
Arduino’da iyi olmak için öncelikle elektronikte iyi olmak gerekir. Türkiye’nin en iyi temel elektronik eğitim seti ARDUINO ÖNCESİ TEMEL ELEKTRONİK EĞİTİM VE DENEY SETİ‘ni keşfedin. Gereksiz bilgilerden arındırılmış basit ve eğlenceli anlatımla ELEKTRONİK öğrenin ve Arduino’ya METE HOCA farkıyla güçlü başlayın!
Sketch kodunu kopyalamak için pencerenin sağ üst köşesindeki butona tıklayabilir veya buraya tıklayarak ZIP dosyası olarak indirebilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#include <Adafruit_NeoPixel.h> // Kütüphaneyi tanımlıyoruz int led_sayisi = 8; // Kaç adet tekil LED kullandığımızı belirliyoruz int led = 7; // NeoPixel LED şeridin bağlı olduğu pin int parlaklik = 50; // LED'lerin parlaklık değeri (0-255 arası) Adafruit_NeoPixel serit(led_sayisi, led, NEO_GRB + NEO_KHZ800); // Tanımlamalar yapılıyor void setup() { serit.begin(); // Kütüphane başlatılıyor serit.clear(); // LED'ler temizleniyor serit.setBrightness(parlaklik); // LED parlaklığı ayarlanıyor } void loop() { serit.setPixelColor(0, serit.Color(255, 0, 0)); // İlk LED'e rengi atanıyor serit.setPixelColor(1, serit.Color(255, 127, 0)); serit.setPixelColor(2, serit.Color(255, 255, 0)); serit.setPixelColor(3, serit.Color(0, 255, 0)); serit.setPixelColor(4, serit.Color(0, 0, 255)); serit.setPixelColor(5, serit.Color(46, 43, 95)); serit.setPixelColor(6, serit.Color(139, 0, 255)); serit.setPixelColor(7, serit.Color(255, 255, 255)); serit.show(); // Renkleri atanmış LED'ler yakılıyor } |
Elbette bu şerit LED’lerimizi öylece durağan şekilde yakmak zorunda değiliz. Aşağıdaki sketch bize çok güzel bir gökkuşağı efekti veriyor.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#include <Adafruit_NeoPixel.h> // Kütüphaneyi tanımlıyoruz int led_sayisi = 8; // Kaç adet tekil LED kullandığımızı belirliyoruz int led = 7; // NeoPixel LED şeridin bağlı olduğu pin int bekleme = 5; // Renk değişiklikleri arasındaki bekleme int parlaklik = 50; // LED'lerin parlaklık değeri (0-255 arası) Adafruit_NeoPixel serit(led_sayisi, led, NEO_GRB + NEO_KHZ800); // Tanımlamalar yapılıyor void setup() { serit.begin(); // Kütüphane başlatılıyor serit.setBrightness(parlaklik); // LED parlaklığı ayarlanıyor } void loop() { for(long x = 0; x < 5*65536; x += 256) { // Kayan gökkuşağı efekti kodunun başlangıcı for(int y=0; y<led_sayisi; y++) { // LED sayısına göre döngü kuruluyor int z = x + (y * 65536L / led_sayisi); // LED'lerin renkleri hesaplanıyor serit.setPixelColor(y, serit.gamma32(serit.ColorHSV(z))); // Renkler atanıyor } serit.show(); // Renkleri atanmış LED'ler yakılıyor delay(bekleme); // Geçişler arasındaki bekleme } } |