Enhver farge består av tre farger: rød, grønn og blå, ved hjelp av en enkel RGB-LED kan du generere hvilken som helst farge. Men begrensningen av RGB LED er at den har tre separate lysdioder inni den og krever tre pins av en hvilken som helst mikrokontroller for å betjene en RGB LED. Så det er ikke mulig å koble hundrevis av lysdioder med en mikrokontroller.
For å løse dette problemet har Adafruit opprettet NeoPixel LED Strip. Det krever bare tre pinner for å kjøre flere RGB NeoPixel-lysdioder. To pinner er for strøm og jord, og en pinne er for Data In (DI). Data IN pin brukes til å adressere og kontrollere de forskjellige lysdiodene i stripen med farge, lysstyrke osv. Men det krever en mikrokontroller for å kjøre NeoPixels. Arduino brukes veldig ofte med NeoPixel, så i dag vil vi lære å grensesnitt NeoPixel LED-er med Arduino. Du kan lære mer om NeoPixels på AdaFruit.
Her i dette prosjektet styrer vi NeoPixel LED ved hjelp av Arduino og TFT LCD berøringsskjerm. Vi har laget 7 berøringsknapper i forskjellige farger på 2,4-tommers TFT LCD-skjerm, og når vi trykker på knappen med en viss farge på LCD-skjermen, lyser NeoPixel LED-stripen opp med samme farge på den knappen. Her har vi brukt NeoPixel Digital RGB LED-stripe på 30 LED.
NeoPixel RGB LED kan lyses i hvilken som helst farge, og slik at vi kan legge til flere knapper på LCD-skjermen for å lyse LED-en i flere farger når vi trykker på disse knappene. Andre vakre effekter og mønstre kan også legges til ved hjelp av koding. Du kan bygge et komplett Arduino-kontrollert dekorasjonssystem ved hjelp av NEO Pixel-lysdioder og kan styre dette systemet ved hjelp av LCD som ligger nær deg.
Nødvendige komponenter:
- Arduino Mega eller en hvilken som helst annen Arduino-modell
- 2,4 tommers TFT LCD-skjerm med SPFD5408-kontroller
- NeoPixel RGB LED Strip
- Koble ledninger
- USB-kabel eller 12 V 1A-adapter
Kretsforbindelser:
For å koble NeoPixels Strip til Arduino Mega, koble bare Arduino 5V-pin til NeoPixels 5V-pin og Mega's GND til NeoPixels GND og koble deretter NeoPixel DI-pin (data inn) til Digital Pin nr. 36 av Arduino Mega. Monter TFT LCD Touch Shield forsiktig over Arduino slik at GND av MEGA ligger under GND av LCD og 5V pin av Arduino kobles til 5V pin av LCD.
Pass på at du ikke bytter ut GND og 5V pin NeoPixel LED-stripe mens du kobler den til Arduino, ellers vil det skade NeoPixel LED-stripen. Vær også oppmerksom på at her har vi brukt Arduino Mega, men du kan bruke hvilken som helst annen Arduino-modell.
Tilkoblinger til Arduino til NeoPixel RGB LED Strip:
Arduino Pins |
NeoPixel Strips Pins |
5v |
5v |
GND |
GND |
Digital pin nr. 36 |
DI (data i) |
Arbeidsforklaring:
Å arbeide med NeoPixel LED med Arduino er veldig enkelt. Bare trykk på berøringsknappen i en hvilken som helst farge på LCD-skjermen der du vil gløde NeoPixel LED-stripen. LED-lampen vil lyse i henhold til den fargen. Koden er skrevet på en slik måte at du kan gjenta denne oppgaven uendelig uten å måtte tilbakestille Arduino Mega. Du kan sjekke koden og demonstrasjonsvideoen på slutten av denne artikkelen.
Når en knapp trykkes på LCD-skjermen, sendes data til Arduino, og Arduino sender videre instruksjon til NeoPixel Strip for å lyse tilsvarende. For eksempel lyser NeoPixel LED-stripe i grønn farge når vi trykker på den grønne knappen på LCD-skjermen, og LED-stripen lyser i rød farge når vi trykker på den røde knappen og så videre.
Programmeringsforklaring:
For å interface TFT LCD med Arduino har vi brukt noen biblioteker. Alle bibliotekene kommer i en rar fil og kan lastes ned fra denne lenken. Klikk på 'Clone or download' og 'Download ZIP' fil og legg til i Arduino biblioteksmappen. Dette biblioteket er nødvendig for at TFT LCD skal fungere korrekt.
#inkludere
Du bør teste TFT LCD-skjermen ved å brenne Arduino med eksempler på koder gitt i biblioteket og sjekke om kodene fungerer som de skal. Sjekk først grafiktesten, deretter kalibrer test og til slutt malingstest. Hvis du finner ut at alle funksjonene fungerer bra, så start med koden gitt i denne opplæringen.
Også for at NeoPixel RGB LED-stripe skal fungere riktig, trenger du ett bibliotek til, som kan lastes ned herfra.
#inkludere
Som beskrevet tidligere er Digital Pin 36 på MEGA koblet til DI-pin på NeoPixel LED Strip som vist i koden nedenfor. Antall LED-er i stripen er også 30 slik som det er skrevet i kode:
#define PIN 36 #define NUM_LEDS 30
Visningsfarger på LCD-knapper er betegnet med noen koder. Du kan endre disse kodene i henhold til LCD-skjermen.
#define BLACK 0x0000 #define GUL 0x001F #define GREEN 0xF800 #define RED 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81F #define BLUE 0xFFE0 #define WHITE 0xFFFF
Noen parametere for knappene som størrelse og posisjon er definert i koden:
uint16_t bredde = 0; uint16_t høyde = 0; uint16_t x = 40; uint16_t y = høyde - 20; uint16_t w = 75; uint16_t h = 20;
h-parameteren brukes til å justere størrelsen på knappen på LCD-skjermen. Hvis du gjør det 40, blir størrelsen på knappen doblet. y-parameteren er y-koordinaten til LCD-skjermen.
Berøringsknapper er betegnet med tall som vist i koden:
#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 #defineBUTTue
Noen funksjoner brukes til å sende ut fargen fra NeoPixel som:
ugyldig EmitCyan (); ugyldig EmitWhite (); ugyldig EmitGreen (); ugyldig EmitYellow (); ugyldig EmitPink (); ugyldig EmitBlack ();
For å finne de digitale RGB-verdiene som skal angis for den gitte fargen, kan du følge denne lenken. Bare skriv inn fargen du vil at NeoPixel-stripen skal lyse, finn RGB-verdiene for den fargen og legg inn funksjonene ovenfor.
void initializeButtons () -funksjonen brukes til å gi tekst og farge til knappene og også for å plassere dem på ønsket sted på LCD-skjermen.
ugyldig initializeButtons () {uint16_t x = 40; uint16_t y = høyde - 20; uint16_t w = 75; uint16_t h = 40; uint8_t avstand_x = 5………………..
void showCalibration () -funksjonen brukes til å tegne knappene på LCD-skjermen.
void showCalibration () {tft.setCursor (40, 0); for (uint8_t i = 0; i <8; i ++) {buttons.drawButton (); }}
Videre er den fullstendige Arduino-koden for glødende NeoPixel LED-stripe i ønsket farge gitt nedenfor. Koden er litt lang, men enkel, du kan forstå koden enkelt.