• Yanıtla
  • Yeni Konu
  • Haber Ver
  • Okunmadı Say
  • Gönder
  • Yazdır
  • Favorilerime ekle
  • Yeni Anket

Gönderen Konu: Neopikxel Adreslenebilir Led Uygulaması  (Okunma sayısı 807 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Neopikxel Adreslenebilir Led Uygulaması
« : 01 Haziran 2018, 12:50:30 »
Bu projemizde adreslenebilir neopikxel ledleri tanıtıp, örnek bir uygulamayı paylaşacağız.

Ön Bilgi:
Led teknolojisi geliştikçe sıradan ledler yerlerini RGB ledlere ve şerit ledlere bıraktı. Sıradan ledler kırmızı, sarı, yeşil, mavi gibi tek bir renkte ışık verebilirken RGB ve şerit ledler farklı renklerde ışık verebilmekte.

12 ledden oluşan bir şerit led düşünelim. Bu şerit ledimizi farklı renklerde yakabiliyoruz. Ancak şeritteki bütün ledler aynı renkte yanmaktadır, ve aynı anda sönmektedir. Adreslenebilir neopikxel ledlerden yapılmış bir şerit leddeki ledlerin her birini farklı bir renkte, farklı bir parlaklıkta yakabilir, istediğimiz ledi söndürebiliriz. Bunu yapabilmek için bir mikrodenetleyiciye ihtiyacımız var. Bu projemizde 12 adetten oluşan adreslenebilir neopikxel ledlerimizi arduino ile süreceğiz. 12 adet RGB ledi arduino ile sürmek istersek her bir led için birer tane I/Q pini kullanma zorunluluğu ortaya çıkacaktır. Oysa ki adreslenebilir neopikxel ledlerimizin tamamını sürebilmek için bize 1 adet pwm özellikli 1 adet I/Q pini kullanmak yeterlidir. Bu pin tasarrufu bakımından da çok güzel bir özellikdeğil mi?

Neopikxel ledler normal ledler gibi tek tek satışa sunulabildiği gibi 4'lü, 8'li, 30'lu gibi gruplardan oluşan şerit, daire, yay ya da matris şeklinde de satılmaktadır.

Aşağıdaki fotoğraflarda çeşitli neopiksel ledleri görebilirsiniz.


Fotoğraf 1: 3'lü şerit


Fotoğraf 2: Esnek matris



Fotoğraf 3: Peşpeşe eklenebilir


Fotoğraf 4: 8x8 matris


Fotoğraf 5: Tekli


Fotoğraf 6: Çeyrek daire


Fotoğraf 7: Breadboard uyumlu


Fotoğraf 8: 7'li daire


Fotoğraf 9: 24'lü halka


Fotoğraf 10: 16'lı halka


Fotoğraf 11: 30'lu şerit


Fotoğraf 12: 8'li şerit

Neopikxel Led Pinleri

Fotoğraf 13: Neopiksel pinleri

Her bir neopixel led 4 pini bulunur. Bu pinlerin isimleri DIN, 5V, GND ve DOUT'tur. Mikrodenetleyiciden gelen bilgi işareti ilk ledin DIN pinine uygulanır. Diğer ledlerin DIN pinleri kendinden önce gelen ledin DOUT pinine paket içerisinde bağlıdır. Ayrıca bağlantı yapılması gerekmez. Ancak bu projemizde olduğu gibi tekli ledlerden bir şerit oluşturuyorsanız bu bağlantıları yapmanız gerekmektedir. Ledleri beslemek için 5Voltluk bir dc kaynağa ihtiyaç vardır. DC kaynağın pozitif kutbu ledin 5Volt pinine, negatif kutbu GND pinine bağlanmalıdır.

Video 1: Örnek Neopikxel led uygulaması


Fotoğraf 14: Montajı tamamlanmış devre


Fotoğraf 15: Montajı tamamlanmış devre

Devre şeması


Şema 1: Fritzing Devre Şeması

Arduino Kodları
Kod: [Seç]
#include <Adafruit_NeoPixel.h>  // neopixel kutuphanesi eklendi
#define PIN 6 // Digital 6. pini neopixelleri surmek icin kullaniyoruz
#define NUMPIXELS 12  // 12 adet ledimiz var

Adafruit_NeoPixel NeoPixel = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_RGB + NEO_KHZ800);

void setup() {
  NeoPixel.setBrightness(100);
  NeoPixel.begin();
  NeoPixel.show();
}

void loop() {
NeoPixel.setPixelColor(0,NeoPixel.Color(255,0,0));  // 1. ledi kirmizi ayarladik
NeoPixel.setPixelColor(1,NeoPixel.Color(255,0,0));  // 2. ledi kirmizi ayarladik
NeoPixel.setPixelColor(2,NeoPixel.Color(255,0,0));  // 3. ledi kirmizi ayarladik
NeoPixel.setPixelColor(3,NeoPixel.Color(255,0,0));  // 4. ledi kirmizi ayarladik
NeoPixel.setPixelColor(4,NeoPixel.Color(255,0,0));  // 5. ledi kirmizi ayarladik
NeoPixel.setPixelColor(5,NeoPixel.Color(0,0,255));  // 6. ledi yesil ayarladik
NeoPixel.setPixelColor(6,NeoPixel.Color(0,0,255));  // 7. ledi yesil ayarladik
NeoPixel.setPixelColor(7,NeoPixel.Color(255,0,0));  // 8. ledi kirmizi ayarladik
NeoPixel.setPixelColor(8,NeoPixel.Color(255,0,0));  // 9. ledi kirmizi ayarladik
NeoPixel.setPixelColor(9,NeoPixel.Color(255,0,0));  // 10. ledi kirmizi ayarladik
NeoPixel.setPixelColor(10,NeoPixel.Color(255,0,0)); // 11. ledi kirmizi ayarladik
NeoPixel.setPixelColor(11,NeoPixel.Color(255,0,0)); // 12. ledi kirmizi ayarladik
NeoPixel.show();  // Renkleri ayarlanan ledler yakildi
delay(200); // 200 ms bekle

NeoPixel.setPixelColor(4,NeoPixel.Color(0,0,255));
NeoPixel.setPixelColor(7,NeoPixel.Color(0,0,255));
NeoPixel.show();
delay(200);

NeoPixel.setPixelColor(3,NeoPixel.Color(0,0,255));
NeoPixel.setPixelColor(8,NeoPixel.Color(0,0,255));
NeoPixel.show();
delay(200);


NeoPixel.setPixelColor(2,NeoPixel.Color(0,0,255));
NeoPixel.setPixelColor(9,NeoPixel.Color(0,0,255));
NeoPixel.show();
delay(200);

NeoPixel.setPixelColor(1,NeoPixel.Color(0,0,255));
NeoPixel.setPixelColor(10,NeoPixel.Color(0,0,255));
NeoPixel.show();
delay(200);

NeoPixel.setPixelColor(0,NeoPixel.Color(0,0,255));
NeoPixel.setPixelColor(11,NeoPixel.Color(0,0,255));
NeoPixel.show();
delay(200);

NeoPixel.setPixelColor(5,NeoPixel.Color(0,255,0));
NeoPixel.setPixelColor(6,NeoPixel.Color(0,255,0));
NeoPixel.show();
delay(200);


NeoPixel.setPixelColor(4,NeoPixel.Color(0,255,0));
NeoPixel.setPixelColor(7,NeoPixel.Color(0,255,0));
NeoPixel.show();
delay(200);

NeoPixel.setPixelColor(3,NeoPixel.Color(0,255,0));
NeoPixel.setPixelColor(8,NeoPixel.Color(0,255,0));
NeoPixel.show();
delay(200);


NeoPixel.setPixelColor(2,NeoPixel.Color(0,255,0));
NeoPixel.setPixelColor(9,NeoPixel.Color(0,255,0));
NeoPixel.show();
delay(200);

NeoPixel.setPixelColor(1,NeoPixel.Color(0,255,0));
NeoPixel.setPixelColor(10,NeoPixel.Color(0,255,0));
NeoPixel.show();
delay(200);

NeoPixel.setPixelColor(0,NeoPixel.Color(0,255,0));
NeoPixel.setPixelColor(11,NeoPixel.Color(0,255,0));
NeoPixel.show();
delay(200);

NeoPixel.setPixelColor(5,NeoPixel.Color(255,0,0));
NeoPixel.setPixelColor(6,NeoPixel.Color(255,0,0));
NeoPixel.show();
delay(200);


NeoPixel.setPixelColor(4,NeoPixel.Color(255,0,0));
NeoPixel.setPixelColor(7,NeoPixel.Color(255,0,0));
NeoPixel.show();
delay(200);

NeoPixel.setPixelColor(3,NeoPixel.Color(255,0,0));
NeoPixel.setPixelColor(8,NeoPixel.Color(255,0,0));
NeoPixel.show();
delay(200);

NeoPixel.setPixelColor(2,NeoPixel.Color(255,0,0));
NeoPixel.setPixelColor(9,NeoPixel.Color(255,0,0));
NeoPixel.show();
delay(200);

NeoPixel.setPixelColor(1,NeoPixel.Color(255,0,0));
NeoPixel.setPixelColor(10,NeoPixel.Color(255,0,0));
NeoPixel.show();
delay(200);

NeoPixel.setPixelColor(0,NeoPixel.Color(255,0,0));
NeoPixel.setPixelColor(11,NeoPixel.Color(255,0,0));
NeoPixel.show();
delay(200);

NeoPixel.setPixelColor(0,NeoPixel.Color(255,255,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(1,NeoPixel.Color(255,255,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(2,NeoPixel.Color(255,255,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(3,NeoPixel.Color(255,255,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(4,NeoPixel.Color(255,255,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(5,NeoPixel.Color(255,255,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(6,NeoPixel.Color(255,255,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(7,NeoPixel.Color(255,255,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(8,NeoPixel.Color(255,255,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(9,NeoPixel.Color(255,255,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(10,NeoPixel.Color(255,255,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(11,NeoPixel.Color(255,255,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(0,NeoPixel.Color(255,0,0));
NeoPixel.show();
delay(200);

NeoPixel.setPixelColor(1,NeoPixel.Color(0,255,0));
NeoPixel.show();
delay(200);

NeoPixel.setPixelColor(2,NeoPixel.Color(0,0,255));
NeoPixel.show();
delay(200);

NeoPixel.setPixelColor(3,NeoPixel.Color(255,0,0));
NeoPixel.show();
delay(200);

NeoPixel.setPixelColor(4,NeoPixel.Color(0,255,0));
NeoPixel.show();
delay(200);

NeoPixel.setPixelColor(5,NeoPixel.Color(0,0,255));
NeoPixel.show();
delay(200);

NeoPixel.setPixelColor(6,NeoPixel.Color(255,0,0));
NeoPixel.show();
delay(200);

NeoPixel.setPixelColor(7,NeoPixel.Color(0,255,0));
NeoPixel.show();
delay(200);

NeoPixel.setPixelColor(8,NeoPixel.Color(0,0,255));
NeoPixel.show();
delay(200);

NeoPixel.setPixelColor(9,NeoPixel.Color(255,0,0));
NeoPixel.show();
delay(200);

NeoPixel.setPixelColor(10,NeoPixel.Color(0,255,0));
NeoPixel.show();
delay(200);

NeoPixel.setPixelColor(11,NeoPixel.Color(0,0,255));
NeoPixel.show();
delay(200);

for (int domiRobot = 1; domiRobot <= 5; domiRobot ++) {

NeoPixel.setPixelColor(0,NeoPixel.Color(0,0,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(1,NeoPixel.Color(0,0,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(2,NeoPixel.Color(0,0,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(3,NeoPixel.Color(0,0,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(4,NeoPixel.Color(0,0,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(5,NeoPixel.Color(0,0,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(6,NeoPixel.Color(0,0,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(7,NeoPixel.Color(0,0,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(8,NeoPixel.Color(0,0,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(9,NeoPixel.Color(0,0,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(10,NeoPixel.Color(0,0,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(11,NeoPixel.Color(0,0,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(0,NeoPixel.Color(0,0,255));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(1,NeoPixel.Color(0,0,255));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(2,NeoPixel.Color(0,0,255));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(3,NeoPixel.Color(0,0,255));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(4,NeoPixel.Color(0,0,255));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(5,NeoPixel.Color(0,0,255));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(6,NeoPixel.Color(0,0,255));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(7,NeoPixel.Color(0,0,255));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(8,NeoPixel.Color(0,0,255));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(9,NeoPixel.Color(0,0,255));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(10,NeoPixel.Color(0,0,255));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(11,NeoPixel.Color(0,0,255));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(11,NeoPixel.Color(0,255,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(10,NeoPixel.Color(0,255,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(9,NeoPixel.Color(0,255,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(8,NeoPixel.Color(0,255,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(7,NeoPixel.Color(0,255,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(6,NeoPixel.Color(0,255,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(5,NeoPixel.Color(0,255,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(4,NeoPixel.Color(0,255,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(3,NeoPixel.Color(0,255,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(2,NeoPixel.Color(0,255,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(1,NeoPixel.Color(0,255,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(0,NeoPixel.Color(0,255,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(0,NeoPixel.Color(255,0,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(1,NeoPixel.Color(255,0,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(2,NeoPixel.Color(255,0,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(3,NeoPixel.Color(255,0,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(4,NeoPixel.Color(255,0,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(5,NeoPixel.Color(255,0,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(6,NeoPixel.Color(255,0,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(7,NeoPixel.Color(255,0,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(8,NeoPixel.Color(255,0,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(9,NeoPixel.Color(255,0,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(10,NeoPixel.Color(255,0,0));
NeoPixel.show();
delay(50);

NeoPixel.setPixelColor(11,NeoPixel.Color(255,0,0));
NeoPixel.show();
delay(50);}

}

Malzeme listesi

Download
İhtiyaç duyulması halinde  projeye ait dosyaları konu ekinden indirebilirsiniz.

Spina Bifida     temrinlerim.org     Robotik Center
MESLEĞE BAŞLANGIÇ: SENE 1983 CUMHURİYET ENDÜSTRİ MESLEK LİSESİ ELEKTRONİK BÖLÜMÜ BOLU