Vsaka barva je sestavljena iz treh barv: rdeče, zelene in modre, z uporabo preproste RGB LED lahko ustvarite poljubno barvo. Toda omejitev RGB LED je, da ima v sebi tri ločene LED in potrebuje tri nožice katerega koli mikrokrmilnika za upravljanje ene RGB LED. Torej ni mogoče povezati na stotine LED z enim mikrokrmilnikom.
Da bi rešili to težavo, je Adafruit ustvaril LED trak NeoPixel. Za pogon več LED RGB NeoPixel potrebujejo le tri nožice. Dva zatiča sta za napajanje in ozemljitev, en zatič pa za vhod za podatke (DI). Zatič Data IN se uporablja za naslavljanje in nadzor različnih LED v traku z njihovo barvo, svetlostjo itd. Za delovanje NeoPixels pa potrebuje mikrokrmilnik. Arduino se zelo pogosto uporablja z NeoPixel, zato se bomo danes naučili vmesnika LED NeoPixel z Arduino. Več o NeoPixels lahko izveste na AdaFruit.
V tem projektu nadzorujemo LED NeoPixel z uporabo zaslona na dotik Arduino in TFT LCD. Na 2,4-palčnem TFT LCD-zaslonu smo ustvarili 7 gumbov na dotik različnih barv in ko se dotaknemo gumba določene barve na LCD-prikazovalniku, LED trak NeoPixel zasveti z isto barvo kot ta gumb. Tu smo uporabili NeoPixel Digital RGB LED trak s 30 LED.
NeoPixel RGB LED je lahko osvetljen v kateri koli barvi, zato lahko na LCD-prikazovalniku dodamo več gumbov, da ob pritisku na te gumbe zasveti LED v več barvah. S kodiranjem lahko dodate tudi druge čudovite učinke in vzorce. Z LED-diodami NEO Pixel lahko zgradite popoln sistem za okrasitev, ki ga nadzoruje Arduino, in ga lahko nadzorujete tako, da LCD zaslon leži blizu vas.
Zahtevane komponente:
- Arduino Mega ali kateri koli drug model Arduino
- 2,4-palčni TFT LCD ščit s krmilnikom SPFD5408
- LED trak NeoPixel RGB
- Povezovanje žic
- Kabel USB ali adapter 12 V 1A
Circuit Connections:
Če želite povezati NeoPixels Strip z Arduino Mega, preprosto priključite 5-pin Arduino na 5-pin NeoPixel in Mega GND na GND NeoPixel in nato priključite NeoPixel DI-pin (podatki v) na digitalni pin št. 36 Arduino Mega. Previdno pritrdite zaslon na dotik TFT LCD na Arduino, tako da leži GND MEGA pod GND LCD-ja, 5V-pin Arduina pa se poveže s 5-pin LCD-jem.
Pazite, da med priključitvijo na Arduino ne zamenjate GND in 5V zatiča LED traku NeoPixel, sicer lahko poškodujete trak LED NeoPixel. Upoštevajte tudi, da smo tukaj uporabili Arduino Mega, lahko pa uporabite kateri koli drug model Arduino.
Povezave z Arduino na NeoPixel RGB LED trak:
Arduino zatiči |
Zatiči NeoPixel Strip |
5v |
5v |
GND |
GND |
Digitalni pin št. 36 |
DI (podatki v) |
Delovna razlaga:
Delo z NeoPixel LED z Arduino je zelo enostavno. Preprosto tapnite gumb na dotik katere koli barve na LCD-prikazovalniku, v katerem želite osvetliti LED trak NeoPixel. LED bo zasvetil glede na to barvo. Koda je napisana tako, da lahko to nalogo ponavljate neskončno, ne da bi morali ponastaviti Arduino Mega. Kodo in predstavitveni video lahko preverite na koncu tega članka.
Ko na LCD-ju tapnete kateri koli gumb, se podatki pošljejo Arduinu, Arduino pa pošlje navodila NeoPixel Strip, da se ustrezno prižge. LED trak NeoPixel na primer sveti v zeleni barvi, ko tapnemo zeleni gumb na LCD-ju, LED trak pa zasveti v rdeči barvi, ko pritisnemo rdeči gumb itd.
Pojasnilo programiranja:
Za vmesnik TFT LCD z Arduino smo uporabili nekaj knjižnic. Vse knjižnice so v eni rar datoteki in jih lahko prenesete s te povezave. Kliknite datoteko »Kloniraj ali prenesi« in »Prenesi ZIP« in jo dodaj v mapo knjižnice Arduino. Ta knjižnica je potrebna za pravilno delovanje LCD TFT.
#include
Moral bi test vaš TFT LCD s sežigom Arduino s primeri oznak, navedenih v knjižnico in preverite, če so oznake deluje pravilno. Najprej preverite grafični test, nato umerite in na koncu preizkusite s slikanjem. Če ugotovite, da vse funkcije dobro delujejo, začnite s kodo, navedeno v tej vadnici.
Za pravilno delovanje LED traku NeoPixel RGB boste potrebovali še eno knjižnico, ki jo lahko prenesete od tukaj.
#include
Kot je bilo že opisano, je digitalni pin 36 MEGA povezan z DI-jem NeoPixel LED traku, kot je prikazano v spodnji kodi. Tudi število LED v traku je 30, kot je zapisano v kodi:
#define PIN 36 #define NUM_LEDS 30
Barve zaslona gumbov LCD so označene z nekaterimi kodami. Te kode lahko spremenite glede na LCD.
#define BLACK 0x0000 #define RUMENA 0x001F #define ZELENA 0xF800 #define RDEČA 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81F #define MODRA 0xFFE0 #define BELA 0xFFFF
Nekateri parametri gumbov, kot so velikost in položaj, so definirani v kodi:
uint16_t širina = 0; uint16_t višina = 0; uint16_t x = 40; uint16_t y = višina - 20; uint16_t w = 75; uint16_t h = 20;
Parameter h se uporablja za prilagoditev velikosti gumba na LCD-prikazovalniku. Če naredite 40, se bo velikost gumba podvojila. y parameter je y koordinata LCD-ja.
Gumbi na dotik so označeni s številkami, kot je prikazano v kodi:
#define GUMBI 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_Define BUTTON_Define BUTTON_Define BIGHTTONE
Nekatere funkcije se uporabljajo za oddajanje barve iz NeoPixel, kot so:
void EmitCyan (); void EmitWhite (); void EmitGreen (); void EmitYellow (); void EmitPink (); void EmitBlack ();
Če želite najti digitalne vrednosti RGB, ki jih želite vnesti za določeno barvo, lahko sledite tej povezavi. Preprosto vnesite barvo, za katero želite, da trak NeoPixel sveti, poiščite vrednosti RGB za to barvo in vstavite zgornje funkcije.
funkcija void initializeButtons () se uporablja za dajanje besedil in barv gumbom ter za njihovo namestitev na želeno mesto na LCD-prikazovalniku.
void initializeButtons () {uint16_t x = 40; uint16_t y = višina - 20; uint16_t w = 75; uint16_t h = 40; uint8_t razmik_x = 5………………..
void show Funkcija Kalibracija () se uporablja za risanje gumbov na LCD-prikazovalniku.
void showCalibration () {tft.setCursor (40, 0); za (uint8_t i = 0; i <8; i ++) {gumbi.drawButton (); }}
Nadalje je spodaj navedena celotna Arduino koda za svetleči LED trak NeoPixel v želeni barvi. Koda je nekoliko dolga, a preprosta, lahko jo preprosto razumete.