Zabłyśnij w swoim domu! [Poradnik]
Dzisiaj na warsztat bierzemy ledy adresowane. A w ogóle to co to takiego…?
Otóż to nic innego jak taśma (pasek) diod RGB, w której możemy dowolnie ustawiać które diody lub dioda ma się zapalić i dodatkowo możemy wybrać jej barwę. Nic zatem nie stoi na przeszkodzie żeby część świeciła się na zielono, część na niebiesko, a reszta żeby migała na czerwono. Najprościej mówiąc- nie ma ograniczeń, nie to co w przypadku innych “zwykłych” ledów. Efekt jaki można uzyskać możecie zobaczyć na filmie umieszczonym pod linkiem na dole artykułu.
Przechodząc do konkretów, co będzie wam potrzebne:
- pasek adresowany LED WS2812b: botland.com.pl/pl/paski-led-adresowane
- zasilacz 5V/10A/50W: botland.com.pl/pl/zasilacze-montazowe
- Arduino UNO (może być dowolne): botland.com.pl/pl/arduino
- rezystor 220Ω (może być 220Ω-470Ω): botland.com.pl/pl/rezystory
- 4 przewody męsko-męskie (jeśli nie chcemy lutować): botland.com.pl/pl/przewody-polaczeniowe
- płytka prototypowa: botland.com.pl/pl/plytki-stykowe
- przewód zakończony wtyczką (do podłączenia zasilacza do gniazdka): botland.com.pl/pl/wtyczka
- śrubokręt
Po zgromadzeniu części łączymy cały układ. Poniżej zdjęcie, schemat i opis podłączenia:
Wtyczkę podłączamy do wejścia zasilacza (L- brązowy, N- niebieski i PE- żółty), a wyjście (5V i GND) podłączamy do dłuższych przewodów w ledach (czerwony- ‘+’, biały- ‘-‘). Z kolei trzy przewody połączone wychodzące z ledów podłączamy do Arduino (czerwony- ‘5V’, biały- ‘GND’, zielony- ‘DIN’ (łączymy poprzez rezystor!)).
Okej, po zmontowaniu układu nie pozostało nic innego jak wgranie programu i podziwianie efektu końcowego. Niezbędnym elementem jest też pobranie biblioteki Adafruit_Neopixel z tej strony: https://github.com/adafruit/Adafruit_NeoPixel. Tak pobraną bibliotekę umieszczamy w folderze /libraries w Arduino i możemy działać dalej!
Poniżej zamieszczam kod wraz z krótkim filmem pokazującym jak działa:
#include <Adafruit_NeoPixel.h> #ifdef __AVR__ #include <avr/power.h> #endif #define PIN 5 //tutaj podajemy numer cyfrowego pinu pod który podłaczamy ledy #define NUMPIXELS 150 //tutaj podajemy ilość ledów jakie chcemy obsłużyć Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); int delayval = 10; // delay na 10ms int delayval2 = 25; // delay na 20ms void setup() { pixels.begin(); // This initializes the NeoPixel library. } void loop() { //kazdy piksel ma swój indywidualny numer. Indeksowanie zaczyna się od 0 i kończy na liczbie ledów-1 for(int i=0;i<NUMPIXELS;i++){ // pixels.Color - tutaj podajemy wartości z zakresu 0-255 dla (G,R,B) pixels.setPixelColor(i, pixels.Color(0,150,0)); pixels.show(); // To nam wykonuje instrukcje, czyli dany piksel zaczyna swiecic tak jak okreslilismy to wyżej delay(delayval); // opóźnienie dla uzyskania lepszego efektu } for(int i=NUMPIXELS;i>0;i--){ // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255 pixels.setPixelColor(i, pixels.Color(0,0,150)); pixels.show(); delay(delayval); } for(int i=0;i<NUMPIXELS;i++){ pixels.setPixelColor(i, pixels.Color(150,0,0)); pixels.show(); delay(delayval); } for(int i=NUMPIXELS;i>=0;i--){ pixels.setPixelColor(i, pixels.Color(150,150,150)); pixels.show(); delay(delayval); } for(int i=NUMPIXELS;i>0;i--){ pixels.setPixelColor(i, pixels.Color(0,0,0)); pixels.show(); delay(delayval); } //kilka diod for(int i=0;i<NUMPIXELS;i++){ pixels.setPixelColor(i, pixels.Color(0,150,0)); pixels.setPixelColor(i-3, pixels.Color(0,0,0)); pixels.show(); delay(delayval); } for(int i=NUMPIXELS;i>0;i--){ pixels.setPixelColor(i, pixels.Color(0,0,150)); pixels.setPixelColor(i+3, pixels.Color(0,0,0)); pixels.show(); delay(delayval); } for(int i=0;i<NUMPIXELS;i++){ pixels.setPixelColor(i, pixels.Color(150,0,0)); pixels.setPixelColor(i-3, pixels.Color(0,0,0)); pixels.show(); delay(delayval); } for(int i=NUMPIXELS;i>0;i--){ pixels.setPixelColor(i, pixels.Color(150,150,150)); pixels.setPixelColor(i+3, pixels.Color(0,0,0)); pixels.show(); delay(delayval); } //funkcja random(max) wybiera losowe wartości z zakresu 0 do max for(int i=0;i<300;i++){ pixels.setPixelColor(random(NUMPIXELS), pixels.Color(random(255),random(255),random(255))); pixels.show(); delay(delayval2); } }
Ledy adresowane mają nieograniczone zastosowania- od wykorzystania ich jako zegar po wskaźnik temperatury otoczenia. Dodatkowo idealnie sprawdzą się jako ozdoba pokoju lub propozycja dla graczy- przyklejenie ich za monitorem. Na bank wywołacie efekt “WOW!” u każdego kto do was przyjdzie. W Internecie znajdziecie masę jeszcze innych pomysłów. Próbujcie!
Do dzieła!
Wszystkie niezbędne części do wykonania powyższego projektu znajdziecie na Botlandzie-> botland.com.pl