29 Eylül 2017 Yazarı yhackup 25

Arduino ile Adreslenebilir Şerit (Neopixel) Led Kodlamak

Merhabalar,
Bu yazıda Bu sayfadaki gibi ledlerin nasıl programlandığına değineceğim…

 

15 Adet Led düşünelim bu ledleri sırasıyla veya belirli animasyonlarla, kara şimşek usülü veya kayar şekilde yakabilmek için Arduino kullanmamız gerekir ise 15′ ledimizin – lerini ortak , + kutuplarını dijital ve analog girişleri kullanarak sırasıyla yakıp söndürebiliriz.

Fakat her pinlerin özelliği (PWM) aynı olmadığından , tümünün parlaklığını artırıp azaltamazsınız. ve tüm pinler dolduğu için arduinoyu başka iş için kullanamazsınız ve ledleriniz hep tek renk olur mecburen.

Varsayalım RGB led aldınız yine 1 led için 3 PWM pinlerinizi kullanmanız gerekir. Arduino da 6 pwm olduğunu düşünürsek. 1 arduino ile 2 RGB led kontrol edebilirsiniz.

 

  • Peki Nedir Bu Adreslenebilir led ?
    Bu Ledlerin her biri RGB’dir yani tabiri caizde sınırsız renk üretebilir. Her ledin içerisinde bir Kontrolcü (WS2812 ,  WS2811  ve SK6812)  ve 3 Adet led bulunur. RGB (Red,Green,Blue) (Kırmızı,Yeşil,Mavi) ve içerisindeki kontrolcü vasıtasıyla bu kontrolcüyü kodlayarak istediğimiz rengi üretmesiniz sağlayabiliriz.

 

  • Arduino’ya nasıl bağlanır  ?
    Adreslenebilir ledlerin bir çok türü var ben şerit led olanı üzerinden anlatım yapacağım.
    Adreslenebilir ledimiz 5v gerilim ile çalışır 3 girişi bulunur, 5v+ , Gnd ve Data girişi, Aşağıdaki gibi, Arduinon’un 5v ve gnd çıkışını olduğu gibi bağlayabiliriz.  PWM çıkışlarından herhangi birini de Adreslenebilir ledimizin Data girişine (Direnç kulanarak) bağlıyoruz..
  • Bu şekilde bir bağlantıdan sonra Arduino’da yazılım ile 1. led sarı yansın parlaklığı 50 olsun,  2. led kırmızı yansın parlaklığı 100 olsun,  3. led pembe yansın parlaklığı 50 olsun… diyerek istediğimiz sıradaki ledi istediğimiz tonda yakabiliriz ve sadece tek bir pwm çıkışı ile…
  • Dikkat edilmesi gereken şey ise, şerit ledimiz her ledde bir microchip ve 3 led olduğu düşünülünce, yüksek amper çekmekte arduino ile ek bir güç bağlantısı yapmadan en fazla ard arda 5 ledi tam parlaklıkta ve beyaz renkte yakabilirsiniz. (beyaz renk üretmek için led içerisinde 3 led’de yanmak zorunda) daha fazla ledi kodlamaya kalkarsanız güç yetmeyecek ve renk tonlarınız bozulacaktır.
  • Bunun için ek bir beslemeye ihtiyacınız olacak.  Bu ledlerimizin bir kaç türü olduğunu söylemiştik 1M-30led , 1M-60led,1M-144led gibi yani 1metrede 60 led sık bir şekilde yani, Elimdeki adreslenebilir led 1M-60led IP67 Modeli, yani 1 metre boyunda be 60 adet rgb led bulunuyor. IPxx ise su geçirmezlik serfitikası. Yaptığım testlerde 60 adreslenebilir ledimizi tam parlaklıkta ve beyaz renkte yaktığımızda yaklaşık 4 Amper güç çekmekte, ek besleme olmadan arduino ile yakmayı denediğimde ise renkler turuncuya kaymakta 🙂

    Bunu gidermek için, gerekli gerilimi lede dağıtabilirsiniz.
    leds_nobrown.jpg
  • Ek güç sağlamak için aşağıdaki şemayı kullanabiliriz.
  • Nelere Dikkat edilmeli ?
    • Bu ürünü kullanacaksanız ek güce mutlaka ihtiyacınız olacak, ek güç bağlantısına mutlaka bir kapasitor\kondansator ekleyin (1000 μF, 6.3V veya daha fazla..)
    • Data girişine mutlaka 300 ohm -500 ohm arası bir direnç ekleyin.
    • Arduino ‘nun pwm çıkışı ile ledin Data girişi arasındaki kabloyu olabildiğince kısa tutun 1 mt üzerine çıkmamaya çalışın.
    • Eğer arduino ile ledi ayrı ayrı güçle besleyecekseniz mutlaka GND yani – uçları birbirine bağlanmalıdır.
    • Adreslenebilir ledimiz statik elektrikten etkilenir, başlamadan önce en azından elinizi duvara yere dokundurarak üzerinizde oluşan statik elektriği boşaltın.
    • Arduino, 5V pine sadece 500 ma güç verebilir.  Her adreslenebilir led tam güçte 60 ma güç çeker.
      • 60 NeoPiksel Ledimiz olsa  × 60 mA ÷ 1000 = 3.6 Amper, yani hesabımıza göre de yukarıda bahsettğimiz gibi 60 ledimiz  yaklaşık 4A güç ister ve arduino bunu sağlayamaz, eğer arduino ile 60 ledi kullanmaya kalkarsanız üzerindeki direnç iyice ısınıp yanana kadar çalışır tabi bozuk renklerle sonra da arduinoyu çöpe atarsınız.
      • Ek güç bağlamayacaksanız 10 ledin üzerinde çıkmayın çıkacaksanız da parlaklığı 50’ye kadar düşürün (maximum 255’tir.)
      • Ledinize besleyeceğiniz güç kaynağı Amperi olabildiğince yüksek olabilir bu hiç sorun değil ama gerilimi 5v üzerine çıkarmamalısınız Ledleriniz bozulur.

 

  • Gelelim yazılım Kısmına, Eğer Yok ise önce Arduino IDE‘mizi kuruyoruz.

  • Dosyayı indirdikten sonra Aşağıdaki gibi kuruyoruz.

 

  • Ekrana Gelen bu uyarıları “Yükle” diyerek geçim

 

  • Ve Kurulum bittikten sonra pencereyi kapatın. Masaüstüne oluşan Arduino simgesine tıklayıp uygulamayı çalıştırın.
  • Adafruit Kütüphanesini Yükleme, Aşağıdaki adımlarla kütüphanemizi arduino ide’mize ekliyoruz
  • Arama kısmına yazarak bulabilirsiniz. Şu an son versiyonu 1.1.2 Sürekli güncellenmekte, siz gördüğünüz en son sürümü yükleyin.
  • Yükleme bittiğinde “INSTALLED” yazısını göreceksiniz. ve pencereyi kapatıyorsunuz.

 

  • Arduinomuzu açtığımızda, ekranımıza boş bir proje sayfası açılıyor.
    void setup() {
      // put your setup code here, to run once:
    
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
    
    }

     

  • Adafruid kütüphanemizi include ediyoruz, Adafruit_NeoPixel class’ımızı tanımlıyoruz, ardından Data olarak kullanacağımız pwm pinini ve ledimizde kaç adet ledimiz var onu tanımıyoruz.
    #include <Adafruit_NeoPixel.h>
    #define PIN 6
    #define NUMPIXELS 60
    
    Adafruit_NeoPixel NeoPixel = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
    
    
    void setup() {
      // put your setup code here, to run once:
    
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
    
    }

     

  • ve Setup’ta aşağıdaki  gibi başlatıp show ediyoruz. Herhangi bir renk tanımlaması adresleme yapmadığımız için tüm ledlerimiz off konumunda,
    #include <Adafruit_NeoPixel.h>
    #define PIN 6
    #define NUMPIXELS 60
    
    Adafruit_NeoPixel NeoPixel = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
    
    
    
    void setup() {
      NeoPixel.setBrightness(50); //Parlaklık
      NeoPixel.begin();
      NeoPixel.show(); 
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
    
    }

     

  • Kullanmamız gereken procedure’ümüzün birisi setBrightness bu ledlerimizin hangi parlaklıkta yanacağını ayarladığımız procedure, setPixelColor, kaçıncı ledi hangi renkte yakacağımızı ayarlarayacağımız procedure,  her zaman aldığı ilk değer ledin indexidir ve daima 0’dan başlar.  Öncelikle yukarıda bahsetmediğim bir konu daha var RGB ledlerin yanı sıra RGBW ledlerde vardır.
    • RGB , Red,Green,Blue yani Kırmızı, Yeşil, Mavi, ana renklerden oluşur beyaz rengi oluşturmak için 3’ü birden yanar.
    • RGBW, Red,Green,Blue,White yani Kırmızı, Yeşil, Mavi ve Beyaz ana renklerden oluşur beyaz rengi oluşturmak için sadece white olan 1 led yanar.
    • Benim elimdeki led RGB  olan modeli.

 

  • Bu örnekleri yaınca, Tv , Telefon lcd ekranlarının nasıl çalıştığını daha iyi anlaracaksınız. Aşağıdaki görüntüler, televizyon ve monitorün yakından fotoğrafları 1080p diye adlandırılan moitorlerde, yatay olarak 1920 adreslenebilir led, dikey olarak 1080 tane  adreslenebilir led kullanılır. Ve görüntü chipi bu ledleri çok hızlı bir şekilde kodlayarak güzel bir görüntü oluşturur.Eski bir Monitör’den görüntü.
    LG IPS Tv’den görüntü.

 

  • Yazının burasından sonra içerisinde 3 led bir chip bulunan her lede pixel, içerisindeki her bir lede led diyerek devam edeceğim.
    // ilk sıradaki pixelimin sadece Kırmızı ledini tam güç .
    NeoPixel.setPixelColor(0,NeoPixel.Color(255,0,0));
    
    // ikinci sıradaki pixelimin sadece Yeşil ledini tam güç .
    NeoPixel.setPixelColor(1,NeoPixel.Color(0,255,0));
    
    // Üçüncü sıradaki pixelimin sadece Mavi ledini tam güç .
    NeoPixel.setPixelColor(2,NeoPixel.Color(0,0,255));
    
    // Yukarıda, ilk 3 ledimizi ayrı renklerde kodladık
    // ve show diyerek pixellerimize güç veriyoruz ledlerimiz yanıyor.
    NeoPixel.show();

     

  • Aşağıdaki Renk Seçiciyi kullanarak, RGB değerlerine ulaşabilir, istediğiniz tonu uygulayabilirsiniz.

Bir kaç yakından görünüm

 

Örnek Projelerden bir tanesinin uygulanmış hali

 

 

 

 

 

 

 

Bulduğum bir örnekte yağmur bulutu efekti yapmış benim gibi kasvetli havaları sevenlerden sanırım,

 

Kurucusu ve Mühendisi Ladyada ürün tanıdım videosu.

* Bu bilgiler ışığında istediğinizi yapmak size kalmış.Kalın Sağlıcakla….