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.
-
- Bu ledler indexine göre kodlanabilirler, örneğin 100 Adet adreslenebilir ledi ard arda bağlayarak, Arduinonun tek pwm çıkışı ile tüm 100 ledi de ayrı ayrı kontrol edebiliriz, renk tonu parlaklığı vs vs…
- Adreslenebilir led üreticisi yavaş yavaş çoğalmaya başlıyor ama öncüsü Adafruit firmasıdır. Pahalı şimdilik ama üretici çoğaldıkça fiyatları düşecektir.
- Bir kaç adreslenebilir led modeli ve videoları
- Belki böyle bir hediye yapmak istersiniz 🙂
- 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.
- 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.
Örnek Projelerden bir tanesinin uygulanmış hali
Kurucusu ve Mühendisi Ladyada ürün tanıdım videosu.
* Bu bilgiler ışığında istediğinizi yapmak size kalmış.Kalın Sağlıcakla….
Açıklayıcı net bilgiler için teşekkürler…
Merhaba. ARGB şerit led, arduino uno ve led adaptörü ile monitöre ambiligt yani ekrandaki rengi yansıtma yapmaya çalıştım. Fakat bir türlü yapamıyorum. Kodu hazır aldım. Örnek aldığım video ise bu: https://www.youtube.com/watch?v=qbCOKqMyx-U&list=WL&index=29
Yardımcı olacak biri varsa gerçekten çok sevinirim. Uğraştım ama bir türlü yapamadım.
Merhaba, kaynak için teşekkürler. 12v luk ledin bağlantısını nasıl sağlayacağız.
Açıkçası şurada takıldım “Arduino, 5V pine sadece 500 ma güç verebilir. Her adreslenebilir led tam güçte 60 ma güç çeker.” ve sonrasındaki maddeler.
Yapmak istediğimi açıklayarak sorayım.
Arabanın stop lambasını led e dönüştürüyorum.
Sinyal lambası kayar led olacak şekilde yapacağım.
Stop un çizimi bu:
Sarı olan yol ayna pleksi olacak.(sonsuz led denen olay)
Sarı yol, sol alt köşeden başlayıp saat yönüne doğru tamamlanacak,
Tamamlandıktan sonra yine saat yönünde sönecek bu böyle devam edecek.
Elimde 12V luk adreslenebilir rgb led var.
Bunları kullanmak istiyorum.
İstediğim uygun bir sinyal renk kodunu ayarlayıp ledleri aktif etmek istiyorum.
1 – Araba 12V veriyor. Lede ve arduino ya ayrı ayrı 12v mu vermeliyim. (Burada led in + ve – si haricinde DIN çıkışını arduino ya yularıda anlattığım gibi bağlayacağım.)
2 – İki lambayıda (sağ-sol) tek arduino ile kontrol edebilir miyim.
3 – Arduino Pro Mini ch340g kullanmam yeterli/uygun olur mu?
4 – Arduino ve led de normalde enerji hiç olmayacak. Sinyal verdiğimizde ikisine enerji gidecek değil mi?
5 – Arduino pro mini de derleme gecikmesini nasıl önleyebiliriz?
Yorum yazarken biraz daha canlandı kafamda ama yine de fazla bilgi göz çıkarmaz diye düşünüyorum :))
1 – Araba 12 değil 14.5 verir bunu göz önünde bulundurun, Şerit ledin 12+ ve – girişini doğrudan araçtan alabilrisin , Data (DIN) girişini arduinodan alacaksın , Arduinoyu bir regülatörle 5v veya 9v sabitlemelisin LM7805 , LM7809 gibi bir şey olayı çözer.
2 – Evet edebilirsin tek arduino işi çözer hatta Neopixel led DIN girişi Analog değil digitaj pin kullandığı için 10 tane farklı neopixel kontrol edebilirsin.
3 – Olur hiç parketmez.
4 – Her ikisinde de araba çalıştığı sürece elektrik olacak çalışacak, ve aracından sinyal verdiğinde arduinonun herhangi bir pinini tetikleyeceksin bu da senin kodunu tetikleyecek.
Tabi sinyal rolen enerjiyi dijital olarak enerji verip kestiği için senin sürekli bir pini kontrol etmen gerekiyor. sinyal sürekli yanmıyor burada bir efor harcaman lazım.
5 – Gecikmeyi önlemek için Bootloader Yükleme denilen işlemi yapman gerekir, bunun için elinde iki arduino gerekecek bir çakma arduino uno kullanabilirsin. burada örnek bir işlem var..
https://www.youtube.com/watch?v=YFqvK9ZbbgY
Hızlı cevabın için teşekkürler.
Aklımda bu aşamalardan sonra bir-iki soru daha var onlar içinde daha sonra seni rahatsız edebilirim 🙂
Rica ederim hiç problem değil , bende benzer bir çalışma yapıyordum sonra iş güç atıl kaldı kenarda bir de reklamcı bir arkadaş olması lazım pleksi falan bulup kestirmek güç.
Pleksi den yana sıkıntım yok. Tanıdığım malzemeci ve kesimci var. İstersen temin edebilirim.
Teşekkürler, bugünlerde çok yoğunum Yekta başladığımda mailiniz doğru ise ulaşırım size
Hocam çok teşekkürler, gerçekten çok faydalı olmuş. eğer müsait bir vaktiniz olursa bir şey sormak istiyorum. Üniversitemiz adına bir elektrikli araç yapıyoruz ve sinyallerin, dörtlülerin vs. bu şekilde adreslenebilir ledrlerden yapmak istiyoruz.
Örnek olarak atıyorum => https://www.youtube.com/watch?v=qdWxWcyq2Ys
12, sn ye bakarsanız görebilirisniz.
Sorum şu biz bu adreslenebilir ledlerden kullanacağız fakat dış mekan olduğu için görünmeyeceğini düşünüyorum. Yani aslında sormak istediğim daha yüksek watt bulabileceğimiz adreslenebilir ledler var mı? ben biraz araştırdım ( WS2811 ) buldum ama bu ledler de tekli halde satılıyor, acaba şerit olanları var mı? bilginiz varsa bilgilendirme yapabilirseniz çok sevinirim.
Teşekkürler iyi günler..
iletişim = ethemdere34@gmail.com
Merhaba tebrik ederim çalışmanızdan dolayı , WS2811 araçlara takılan bagaj altı kayar ledlerde de kullanılan led modeli , açıkcası bu da gündüz çok belirgin olmayacaktır , ayrıca biliyorsunuz bu ledler fazla ısıya dayanamaz özellikle araç far camı içerisinde iken çabuk bozulacaktır.
Eğer sadece proje çalışsın ileride çözüm buluruz diyorsanız WS2811 alıp , yan yana dizebilirsiniz, örneğin 40cm olsa sinyal uzunluğu 160cm alıp 4e bölüp yanyana mesela.
veya bu merceklerden kullanılabilir etkisi büyük olacaktır.
Çok teşekkürler hocam, yine sorum olursa buradan yazabilir sorun olmaz değil mi?
Kesinlikle olmaz, elimden geldiğince yardımcı olurum 😉
normal ledlerle benzeri bi uygulama yapmak mümkün mü?
Mümkün değil.
MERHABALAR BU NEOPIXEL R,G,B,12V GIRISI OLAN LEDLER ICIN UYGUN MU? LEDLERI SIRA ILE YAKABILMEK MUMKUN MU? TESEKKURLER
5v olanı da var 12v olanı da var, hangisini kullanıyorsan ona göre beslersin. ledleri istediğin gibi yakabilirsin videolarda görüldüğü gibi.
Merhabalar Hocam;
Ben uzun zamandır adreslenebilir ledler ile ilgili araştırma yapmaktayım. Lise de ve üniversite de Pic kontrollü Microişlemci dersi aldım, Arduino ile kodlama yapmayı gram bilmiyorum. WS2812B Adreslenebilir şerit ledi ile uygulamalı proje devreleri buldum, fakat her hangi bilgim olmadığı için türkçe kaynak da sınırlı ve bir şey anlamadım sizden ricam. Linkte paylaştığım sitede ki Adreslenebilir led animasyonunun kodları nedir, sağdan sola soldan sağa veya ortadan iki yana açılan bir animasyon nasıl oluşturabilirim ve bunun gibi animasyonlar oluşturabilmem için nasıl bir yol izlemem gerekir.
https://randomnerdtutorials.com/guide-for-ws2812b-addressable-rgb-led-strip-with-arduino/
https://gph.is/2JSsvMj
Merhaba İbrahim,
Bu işlemleri yapabilmen için öncelikle arduino öğrenmen gerekiyor , gram arduino bilmeden ezbere olmaz.
Bende bilgim olmadığını öğrenmek için nasıl bir yol izlemem gerektiğini sordum. Kaynak vb yani
Hmm pardon, Yazınızdan Hazır kod istiyorsunuz gibi düşündüm.
Ben size bir youtube kanalı olan “Meraklı Maymun” kanalını öneririm başlangıç için çok başarılı anlatımı var.
“Örnek Projelerden bir tanesinin uygulanmış hali” bunun kodları varmı sayfanızda ? teşekkürler.
Merhaba,
Siz kütüphaneyi yüklediğinizde (Example-Örnekler) Menüsünde bir kaç örnek kodda ekleniyor.
Selamın Aleyküm Size Telefon Numarası İle Ulaşmamız Mümkünmü ?
Aleykum Selam,
Buraya Telefon yazmam doğru olmaz dilerseniz buradan veya facebook kanalından iletişim kurabilirsiniz.
Merak edilen bir konuydu.Herzamanki gibi güzel açıklamalar ile bizleri aydınlattınız.
Teşekkürler
Ben teşekkür ederim 🙂