Orice culoare este alcătuită din trei culori: roșu, verde și albastru, folosind un LED RGB simplu puteți genera orice culoare. Dar limitarea LED-ului RGB este că are trei LED-uri separate în interior și necesită trei pini ai oricărui microcontroler pentru a funcționa un LED RGB. Deci, nu este posibil să conectați sute de LED-uri cu un singur microcontroler.
Pentru a depăși această problemă, Adafruit a creat NeoPixel LED Strip. Este nevoie de doar trei pini pentru a conduce mai multe LED-uri RGB NeoPixel. Doi pini sunt pentru alimentare și împământare și un pin este pentru date de intrare (DI). Pinul IN IN este utilizat pentru a adresa și controla diferitele LED-uri din bandă cu culoarea, luminozitatea etc. Dar necesită un microcontroler pentru a rula NeoPixels. Arduino este foarte frecvent utilizat cu NeoPixel, așa că astăzi vom învăța să interfață LED-urile NeoPixel cu Arduino. Puteți afla mai multe despre NeoPixels la AdaFruit.
Aici, în acest proiect, controlăm LED-ul NeoPixel utilizând ecranul tactil Arduino și TFT LCD. Am creat 7 butoane tactile de culori diferite pe ecranul TFT LCD de 2,4 inci și când atingem butonul de o anumită culoare de pe ecranul LCD, banda LED NeoPixel se luminează cu aceeași culoare a butonului respectiv. Aici am folosit banda LED LED RGB NeoPixel de 30 de LED-uri.
LED-ul NeoPixel RGB poate fi iluminat în orice culoare și astfel putem adăuga mai multe butoane pe ecranul LCD pentru a aprinde LED-ul în mai multe culori la atingerea acestor butoane. Alte efecte și modele frumoase pot fi, de asemenea, adăugate folosind Coding. Puteți construi un sistem complet de decorare Arduino controlat folosind LED-uri NEO Pixel și puteți controla acest sistem prin LCD aflat aproape de dvs.
Componente necesare:
- Arduino Mega sau orice alt model Arduino
- Ecran TFT LCD de 2,4 inci cu controler SPFD5408
- Benzi LED NeoPixel RGB
- Conectarea firelor
- Cablu USB sau adaptor 12 V 1A
Conexiuni de circuit:
Pentru a conecta NeoPixels Strip la Arduino Mega pur și simplu conectați pinul Arduino 5V la pinul 5V NeoPixel și GND Mega la GND-ul NeoPixel și apoi conectați pinul NeoPixel DI (date în) la pinul digital nr. 36 al Arduino Mega. Montați cu atenție ecranul tactil TFT LCD peste Arduino, astfel încât GND de MEGA să se afle sub GND de LCD și pinul de 5V al Arduino se conectează la pinul de 5V al LCD-ului.
Aveți grijă să nu schimbați GND și pinul 5V al benzii LED NeoPixel în timp ce îl conectați la Arduino, altfel va deteriora banda LED NeoPixel. De asemenea, rețineți că aici am folosit Arduino Mega, dar puteți utiliza orice alt model Arduino.
Conexiuni la banda LED Arduino la NeoPixel RGB:
Pinii Arduino |
Pinii NeoPixel Strip |
5v |
5v |
GND |
GND |
Pin digital nr. 36 |
DI (date în) |
Explicație de lucru:
Lucrul NeoPixel LED cu Arduino este foarte ușor. Doar atingeți butonul tactil de orice culoare de pe ecranul LCD în care doriți să luminați banda LED NeoPixel. LED-ul se va aprinde în funcție de acea culoare. Codul este scris în așa fel încât să puteți repeta această sarcină la nesfârșit, fără a fi nevoie să resetați Arduino Mega. Puteți verifica codul și videoclipul demonstrativ la sfârșitul acestui articol.
Când orice buton este apăsat pe ecranul LCD, datele sunt trimise către Arduino, iar Arduino trimite în continuare instrucțiuni către NeoPixel Strip pentru a se aprinde corespunzător. De exemplu, banda LED NeoPixel luminează în culoare verde când atingem butonul verde de pe ecranul LCD și banda LED luminează în culoare roșie atunci când apăsăm butonul roșu și așa mai departe.
Explicație de programare:
Pentru interfața TFT LCD cu Arduino am folosit câteva biblioteci. Toate bibliotecile vin într-un singur fișier rar și pot fi descărcate de pe acest link. Faceți clic pe fișierul „Clonați sau descărcați” și „Descărcați codul ZIP” și adăugați-l în dosarul bibliotecii Arduino. Această bibliotecă este necesară pentru buna funcționare a TFT LCD.
#include
Ar trebui să testați LCD-ul TFT arzând Arduino cu exemple de coduri date în bibliotecă și să verificați dacă codurile funcționează corect. Mai întâi verificați testul grafic, apoi calibrați testul și în cele din urmă testul vopselei. Dacă descoperiți că toate caracteristicile funcționează bine, începeți cu codul dat în acest tutorial.
De asemenea, pentru funcționarea corectă a benzii LED NeoPixel RGB, veți avea nevoie de încă o bibliotecă, care poate fi descărcată de aici.
#include
Așa cum s-a descris anterior, Pinul digital 36 al MEGA este conectat la pinul DI al LED-ului NeoPixel, așa cum se arată în codul de mai jos. De asemenea, numărul de LED-uri din bandă este de 30, așa cum este scris în cod:
#define PIN 36 #define NUM_LEDS 30
Culorile de afișare ale butoanelor LCD sunt indicate de unele Coduri. Puteți schimba aceste coduri în funcție de ecranul LCD.
#define BLACK 0x0000 #define YELLOW 0x001F #define GREEN 0xF800 #define RED 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81F #define BLUE 0xFFE0 #define WHITE 0xFFFF
Unii parametri pentru butoane precum dimensiunea și poziția sunt definiți în cod:
uint16_t lățime = 0; uint16_t înălțime = 0; uint16_t x = 40; uint16_t y = înălțime - 20; uint16_t w = 75; uint16_t h = 20;
Parametrul h este utilizat pentru a regla dimensiunea butonului de pe ecranul LCD. Dacă faceți 40, atunci dimensiunea butonului va fi dublată. parametrul y este coordonata y a ecranului LCD.
Butoanele tactile sunt indicate cu numere așa cum se arată în cod:
#define BUTTONS 9 #define BUTTON_Red 0 #define BUTTON_DarkRed 1 #define BUTTON_RED 2 #define BUTTON_DarkGreen 3 #define BUTTON_DeepRed 4 #define BUTTON_Blue 5 #define BUTTON_LightBlue 6 #BlueBUTTON_Light
Unele funcții sunt utilizate pentru a emite culoarea din NeoPixel, cum ar fi:
void EmitCyan (); void EmitWhite (); void EmitGreen (); void EmitYellow (); void EmitPink (); void EmitBlack ();
Pentru a găsi valorile digitale RGB care trebuie introduse pentru culoarea dată, puteți urmări acest link. Introduceți doar culoarea pe care doriți să o strălucească banda dvs. NeoPixel, găsiți valorile RGB pentru acea culoare și introduceți funcțiile de mai sus.
Funcția void initializeButtons () este utilizată pentru a da text și culoare butoanelor și, de asemenea, pentru a le plasa la locul dorit pe ecranul LCD.
void initializeButtons () {uint16_t x = 40; uint16_t y = înălțime - 20; uint16_t w = 75; uint16_t h = 40; uint8_t spacing_x = 5………………..
funcția de calibrare () este folosită pentru a desena butoanele de pe ecranul LCD.
void showCalibration () {tft.setCursor (40, 0); for (uint8_t i = 0; i <8; i ++) {buttons.drawButton (); }}
Mai departe, codul complet Arduino pentru strălucirea benzii LED NeoPixel în culoarea dorită este dat mai jos. Codul este puțin lung, dar simplu, puteți înțelege codul cu ușurință.