Vilken färg som helst består av tre färger: Röd, grön och blå, med en enkel RGB-LED kan du skapa vilken färg som helst. Men begränsningen för RGB-lysdioden är att den har tre separata lysdioder inuti den och kräver tre stift av vilken mikrokontroller som helst för att manövrera en RGB-lysdiod. Så det är inte möjligt att ansluta hundratals lysdioder med en mikrokontroller.
För att lösa detta problem har Adafruit skapat NeoPixel LED Strip. Det kräver bara tre stift för att driva flera RGB NeoPixel-lysdioder. Två stift är för ström och jord och en stift är för Data In (DI). Data IN-stift används för att adressera och kontrollera de olika lysdioderna i remsan med deras färg, ljusstyrka etc. Men det krävs en mikrokontroller för att köra NeoPixels. Arduino används mycket ofta med NeoPixel, så idag lär vi oss att gränssnitt NeoPixel LEDs med Arduino. Du kan läsa mer om NeoPixels på AdaFruit.
Här i detta projekt styr vi NeoPixel LED med Arduino och TFT LCD- pekskärm. Vi har skapat 7 beröringsknappar i olika färger på 2,4-tums TFT LCD-skärm och när vi trycker på knappen med viss färg på LCD-skärmen, lyser NeoPixel LED-remsan med samma färg på den knappen. Här har vi använt NeoPixel Digital RGB LED-remsa med 30 lysdioder.
NeoPixel RGB LED kan tändas i vilken färg som helst och så kan vi lägga till fler knappar på LCD-skärmen för att lysa LED i fler färger när vi trycker på dessa knappar. Andra vackra effekter och mönster kan också läggas till med Coding. Du kan bygga ett komplett Arduino-kontrollerat dekorationssystem med NEO Pixel-lysdioder och kan styra detta system med LCD som ligger nära dig.
Nödvändiga komponenter:
- Arduino Mega eller någon annan Arduino-modell
- 2,4 tums TFT LCD-skärm med SPFD5408-kontroller
- NeoPixel RGB LED Strip
- Anslutande ledningar
- USB-kabel eller 12 V 1A-adapter
Kretsanslutningar:
För att ansluta NeoPixels Strip till Arduino Mega, anslut bara Arduino 5V-stift till NeoPixels 5V-stift och Mega's GND till NeoPixels GND och anslut sedan NeoPixel DI-stift (data in) till Digital Pin nr 36 av Arduino Mega. Montera försiktigt TFT LCD Touch Shield över Arduino så att GND of MEGA ligger under GND of LCD och 5V pin av Arduino ansluts till 5V pin av LCD.
Var noga med att inte byta ut GND och 5V-stift NeoPixel LED-remsa medan du ansluter den till Arduino, annars skadar NeoPixel LED-remsan. Observera också att här har vi använt Arduino Mega men du kan använda vilken annan Arduino-modell som helst.
Anslutningar till Arduino till NeoPixel RGB LED Strip:
Arduino Pins |
NeoPixel Strips Pins |
5v |
5v |
GND |
GND |
Digital stift nr. 36 |
DI (data in) |
Arbetsförklaring:
Att arbeta med NeoPixel LED med Arduino är väldigt enkelt. Tryck bara på beröringsknappen i vilken färg som helst på LCD-skärmen där du vill lysa NeoPixel LED-remsan. LED-lampan tänds enligt den färgen. Koden är skriven på ett sådant sätt så att du kan upprepa denna uppgift oändligt utan att behöva återställa Arduino Mega. Du kan kontrollera koden och demo-videon i slutet av den här artikeln.
När någon knapp trycks på LCD-skärmen skickas data till Arduino och Arduino skickar vidare instruktioner till NeoPixel Strip för att tända därefter. Till exempel lyser NeoPixel LED-remsa i grön färg när vi trycker på den gröna knappen på LCD-skärmen och LED-remsan lyser i röd färg när vi trycker på den röda knappen och så vidare.
Programmeringsförklaring:
För att gränssnitt TFT LCD med Arduino har vi använt några bibliotek. Alla bibliotek finns i en rar-fil och kan laddas ner från den här länken. Klicka på 'Clone or download' och 'Download ZIP' fil och lägg till i din Arduino biblioteksmapp. Detta bibliotek behövs för att TFT LCD ska fungera korrekt.
#omfatta
Du bör testa din TFT LCD genom att bränna Arduino med exempelkoder i biblioteket och kontrollera om koder fungerar korrekt. Kontrollera först grafiktestet, kalibrera sedan testet och slutligen färgtestet. Om du upptäcker att alla funktioner fungerar bra, börja med koden i denna handledning.
Även för att NeoPixel RGB LED-strip ska fungera korrekt behöver du ytterligare ett bibliotek som kan laddas ner härifrån.
#omfatta
Som beskrivits tidigare är Digital Pin 36 i MEGA ansluten till DI-stift på NeoPixel LED Strip som visas i koden nedan. Antalet lysdioder i remsan är också 30 så som skrivs i kod:
#define PIN 36 #define NUM_LEDS 30
Visningsfärger på LCD-knappar betecknas av vissa koder. Du kan ändra dessa koder enligt din LCD.
#define BLACK 0x0000 #define GUL 0x001F #define GREEN 0xF800 #define RED 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81F #define BLUE 0xFFE0 #define WHITE 0xFFFF
Vissa parametrar för knapparna som storlek och position definieras i koden:
uint16_t bredd = 0; uint16_t höjd = 0; uint16_t x = 40; uint16_t y = höjd - 20; uint16_t w = 75; uint16_t h = 20;
h-parametern används för att justera storleken på knappen på LCD-skärmen. Om du gör det 40, fördubblas knappens storlek. y-parametern är y-koordinaten för LCD.
Peksknappar betecknas med siffror som visas 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 #define BUTTue
Vissa funktioner används för att avge färgen från NeoPixel som:
ogiltig EmitCyan (); ogiltig EmitWhite (); ogiltig EmitGreen (); ogiltigt EmitYellow (); ogiltig EmitPink (); ogiltig EmitBlack ();
För att hitta de digitala RGB-värden som ska anges för den angivna färgen kan du följa den här länken. Ange bara den färg du vill att din NeoPixel-remsa ska lysa, hitta RGB-värdena för den färgen och lägg in ovanstående funktioner.
void initializeButtons () -funktionen används för att ge text och färg till knapparna och även för att placera dem på önskad plats på LCD-skärmen.
ogiltigt initializeButtons () {uint16_t x = 40; uint16_t y = höjd - 20; uint16_t w = 75; uint16_t h = 40; uint8_t avstånd_x = 5………………..
void showCalibration () -funktionen används för att rita knapparna på LCD-skärmen.
void showCalibration () {tft.setCursor (40, 0); för (uint8_t i = 0; i <8; i ++) {knappar.drawButton (); }}
Vidare ges den fullständiga Arduino-koden för att lysa NeoPixel LED-remsan i önskad färg nedan. Koden är lite lång men enkel, du kan lätt förstå koden.