Dowolny kolor składa się z trzech kolorów: czerwonego, zielonego i niebieskiego, za pomocą prostej diody LED RGB można wygenerować dowolny kolor. Ale ograniczenie diody LED RGB polega na tym, że ma w środku trzy oddzielne diody LED i wymaga trzech pinów dowolnego mikrokontrolera do obsługi jednej diody LED RGB. Nie jest więc możliwe połączenie setek diod LED z jednym mikrokontrolerem.
Aby rozwiązać ten problem, Adafruit stworzył pasek LED NeoPixel. Wymaga tylko trzech pinów do sterowania kilkoma diodami LED RGB NeoPixel. Dwa piny służą do zasilania i uziemienia, a jeden do wejścia danych (DI). Pin Data IN służy do adresowania i sterowania różnymi diodami LED w pasku za pomocą ich koloru, jasności itp. Jednak do uruchomienia NeoPixels wymagany jest mikrokontroler. Arduino jest bardzo często używane z NeoPixel, więc dzisiaj nauczymy się łączyć diody NeoPixel z Arduino. Możesz dowiedzieć się więcej o NeoPixels w AdaFruit.
Tutaj w tym projekcie sterujemy diodą NeoPixel za pomocą Arduino i ekranu dotykowego TFT LCD. Stworzyliśmy 7 przycisków dotykowych o różnych kolorach na 2,4-calowym wyświetlaczu TFT LCD, a po dotknięciu przycisku określonego koloru na wyświetlaczu LCD pasek LED NeoPixel zaświeci się tym samym kolorem co ten przycisk. Tutaj użyliśmy taśmy NeoPixel Digital RGB LED składającej się z 30 diod.
NeoPixel RGB LED może być podświetlany w dowolnym kolorze, dzięki czemu możemy dodać więcej przycisków na wyświetlaczu LCD, aby po naciśnięciu tych przycisków świecić diodą LED w większej liczbie kolorów. Inne piękne efekty i wzory można również dodać za pomocą kodowania. Możesz zbudować w pełni kontrolowany przez Arduino system dekoracji przy użyciu diod LED NEO Pixel i sterować tym systemem za pomocą wyświetlacza LCD leżącego blisko Ciebie.
Wymagane komponenty:
- Arduino Mega lub dowolny inny model Arduino
- 2,4-calowy ekran TFT LCD z kontrolerem SPFD5408
- Taśma LED NeoPixel RGB
- Podłączanie przewodów
- Kabel USB lub adapter 12 V 1 A.
Połączenia obwodów:
Aby podłączyć pasek NeoPixels Strip do Arduino Mega, wystarczy podłączyć pin Arduino 5V do pin 5V NeoPixel i GND Mega do GND NeoPixel, a następnie podłącz pin NeoPixel DI (wejście danych) do pinu cyfrowego nr 36 Arduino Mega. Ostrożnie zamontuj osłonę dotykową TFT LCD na Arduino tak, aby GND MEGA znajdowało się poniżej GND LCD, a pin 5 V Arduino łączył się z pinem 5 V LCD.
Uważaj, aby nie zamieniać GND i 5V pinów paska NeoPixel LED podczas podłączania go do Arduino, w przeciwnym razie spowoduje to uszkodzenie paska LED NeoPixel. Zwróć również uwagę, że tutaj użyliśmy Arduino Mega, ale możesz użyć dowolnego innego modelu Arduino.
Połączenia Arduino z taśmą NeoPixel RGB LED:
Piny Arduino |
Piny NeoPixel Strip |
5v |
5v |
GND |
GND |
Cyfrowy pin nr. 36 |
DI (wejście danych) |
Objaśnienie robocze:
Współpraca NeoPixel LED z Arduino jest bardzo prosta. Wystarczy dotknąć przycisku dotykowego dowolnego koloru na wyświetlaczu LCD, w którym chcesz oświetlić pasek LED NeoPixel. Dioda LED zaświeci się zgodnie z tym kolorem. Kod jest napisany w taki sposób, abyś mógł powtarzać to zadanie w nieskończoność bez konieczności resetowania Arduino Mega. Możesz sprawdzić kod i wideo demonstracyjne na końcu tego artykułu.
Po dotknięciu dowolnego przycisku na wyświetlaczu LCD dane są wysyłane do Arduino, a Arduino dalej wysyła instrukcję do paska NeoPixel, aby odpowiednio zaświeciła. Na przykład pasek LED NeoPixel świeci na zielono po naciśnięciu zielonego przycisku na wyświetlaczu LCD, a pasek LED świeci na czerwono po naciśnięciu czerwonego przycisku i tak dalej.
Objaśnienie programowania:
Do interfejsu TFT LCD z Arduino wykorzystaliśmy kilka bibliotek. Wszystkie biblioteki znajdują się w jednym pliku rar i można je pobrać z tego łącza. Kliknij „Klonuj lub pobierz” i „Pobierz plik ZIP” i dodaj do folderu biblioteki Arduino. Ta biblioteka jest potrzebna do prawidłowego działania TFT LCD.
#zawierać
Powinieneś przetestować swój TFT LCD paląc Arduino z przykładowymi kodami podanymi w Bibliotece i sprawdzić, czy kody działają poprawnie. Najpierw sprawdź test grafiki, następnie skalibruj test, a na końcu test malowania. Jeśli okaże się, że wszystkie funkcje działają poprawnie, zacznij od kodu podanego w tym samouczku.
Również do prawidłowego funkcjonowania taśmy LED NeoPixel RGB potrzebna będzie jeszcze jedna biblioteka, którą można pobrać stąd.
#zawierać
Jak opisano wcześniej, pin cyfrowy 36 MEGA jest podłączony do pinu DI taśmy NeoPixel LED Strip, jak pokazano na poniższym kodzie. Również ilość diod w pasku to 30 tak jak jest napisane w kodzie:
# zdefiniować PIN 36 # zdefiniować NUM_LEDS 30
Kolory wyświetlacza przycisków LCD są oznaczone niektórymi kodami. Możesz zmienić te kody zgodnie z wyświetlaczem LCD.
# zdefiniować CZARNY 0x0000 # zdefiniować ŻÓŁTY 0x001F # zdefiniować ZIELONY 0xF800 # zdefiniować CZERWONY 0x07E0 # zdefiniować CZARNY 0x07FF # zdefiniować MAGENTA 0xF81F # zdefiniować NIEBIESKI 0xFFE0 # zdefiniować BIAŁY 0xFFFF
Niektóre parametry przycisków, takie jak rozmiar i położenie, są zdefiniowane w kodzie:
uint16_t width = 0; uint16_t height = 0; uint16_t x = 40; uint16_t y = wysokość - 20; uint16_t w = 75; uint16_t h = 20;
Parametr h służy do regulacji rozmiaru przycisku na wyświetlaczu LCD. Jeśli zrobisz to 40, rozmiar przycisku zostanie podwojony. Parametr y to współrzędna y wyświetlacza LCD.
Przyciski dotykowe są oznaczone numerami zgodnie z kodem:
# zdefiniować BUTTONS 9 # zdefiniować BUTTON_Red 0 # zdefiniować BUTTON_Ciemnoczerwony 1 # zdefiniować BUTTON_RED 2 # zdefiniować BUTTON_Ciemnozielony 3 # zdefiniować BUTTON_DeepRed 4 # zdefiniować BUTTON_Blue 5 # zdefiniować BUTTON_TON_LightBightlight 6
Niektóre funkcje są używane do emitowania koloru z NeoPixel, na przykład:
void EmitCyan (); void EmitWhite (); void EmitGreen (); void EmitYellow (); void EmitPink (); void EmitBlack ();
Aby znaleźć cyfrowe wartości RGB do wprowadzenia dla danego koloru, możesz skorzystać z tego łącza. Po prostu wprowadź kolor, który ma świecić pasek NeoPixel, znajdź wartości RGB dla tego koloru i wprowadź powyższe funkcje.
Funkcja void initializeButtons () służy do nadawania tekstu i koloru przyciskom, a także do umieszczania ich w wybranym miejscu na wyświetlaczu LCD.
void initializeButtons () {uint16_t x = 40; uint16_t y = wysokość - 20; uint16_t w = 75; uint16_t h = 40; uint8_t spacing_x = 5………………..
Funkcja void showCalibration () służy do rysowania przycisków na wyświetlaczu LCD.
void showCalibration () {tft.setCursor (40, 0); for (uint8_t i = 0; i <8; i ++) {buttons.drawButton (); }}
Ponadto pełny kod Arduino do świecenia paska LED NeoPixel w żądanym kolorze znajduje się poniżej. Kod jest trochę długi, ale prosty, można go łatwo zrozumieć.