Qualsevol color es compon de tres colors: vermell, verd i blau, mitjançant un senzill LED RGB podeu generar qualsevol color. Però la limitació del LED RGB és que té tres LED separats al seu interior i requereix tres pins de qualsevol microcontrolador per funcionar un LED RGB. Per tant, no és possible connectar centenars de LEDs amb un microcontrolador.
Per superar aquest problema, Adafruit ha creat NeoPixel LED Strip. Només requereix tres pins per accionar diversos LED NeoPixel RGB. Dos pins són per a alimentació i terra i un pin per a Data In (DI). El pin Data IN s’utilitza per dirigir i controlar els diferents LEDs de la tira amb el seu color, brillantor, etc. Arduino s’utilitza molt habitualment amb NeoPixel, de manera que avui aprendrem a Interfazar els LED NeoPixel amb Arduino. Podeu obtenir més informació sobre NeoPixels a AdaFruit.
![]()
Aquí, en aquest projecte, controlem el NeoPixel LED mitjançant la pantalla tàctil Arduino i TFT LCD. Hem creat 7 botons tàctils de diferents colors a la pantalla TFT LCD de 2,4 polzades i quan toquem el botó de cert color de la pantalla LCD, la tira LED NeoPixel s’il·lumina amb el mateix color d’aquest botó. Aquí hem utilitzat una tira LED LED NeoPixel Digital RGB de 30 LED.
El LED RGB de NeoPixel es pot il·luminar en qualsevol color i, per tant, podem afegir més botons a la pantalla LCD perquè il·lumini el LED amb més colors en tocar aquests botons. També es poden afegir altres efectes i patrons preciosos mitjançant la codificació. Podeu construir un sistema de decoració complet Arduino controlat mitjançant LED de píxels NEO i podeu controlar aquest sistema mitjançant un LCD situat a prop vostre.
Components necessaris:
- Arduino Mega o qualsevol altre model Arduino
- Escut LCD TFT de 2,4 polzades amb controlador SPFD5408
- Cinta LED NeoPixel RGB
- Connexió de cables
- Cable USB o adaptador de 12 V 1A
Connexions de circuits:
Per connectar NeoPixels Strip a Arduino Mega, simplement connecteu el pin Arduino 5V al pin 5V de NeoPixel i el GND de Mega al GND de NeoPixel i, a continuació, connecteu el pin DI de NeoPixel (dades entrades) al pin digital núm. 36 d’Arduino Mega. Munteu amb cura l’escut tàctil TFT LCD sobre Arduino de manera que el GND de MEGA quedi sota el GND de la pantalla LCD i el pin de 5 V d’Arduino es connecti al pin de 5 V de la pantalla LCD.
![]()
![]()
![]()
Tingueu cura de no intercanviar els pins GND i 5V de la tira LED NeoPixel mentre la connecteu a Arduino, en cas contrari danyarà la tira LED NeoPixel. Tingueu en compte també que aquí hem utilitzat Arduino Mega, però podeu utilitzar qualsevol altre model Arduino.
Connexions a Arduino a NeoPixel RGB LED Strip:
|
Pins Arduino |
Pins de NeoPixel Strip |
|
5v |
5v |
|
GND |
GND |
|
Pin digital núm. 36 |
DI (dades incloses) |
Explicació de treball:
El treball del NeoPixel LED amb Arduino és molt fàcil. Només cal que toqueu el botó tàctil de qualsevol color de la pantalla LCD on vulgueu il·luminar la tira LED NeoPixel. El LED s’encendrà segons aquest color. El codi està escrit de manera que pugueu repetir aquesta tasca sense parar sense haver de reiniciar l'Arduino Mega. Podeu consultar el codi i el vídeo de demostració al final d’aquest article.
![]()
Quan es prem qualsevol botó a la pantalla LCD, les dades s’envien a Arduino i Arduino també envia instruccions a NeoPixel Strip perquè s’encengui. Per exemple, la tira LED NeoPixel brilla en color verd quan toquem el botó verd de la pantalla LCD i la tira LED es llueix en color vermell quan premem el botó vermell, etc.
Explicació de la programació:
Per a la interfície TFT LCD amb Arduino hem utilitzat algunes biblioteques. Totes les biblioteques inclouen un fitxer rar i es poden descarregar des d’aquest enllaç. Feu clic a "Clona o descarrega" i al fitxer "Descarrega ZIP" i afegiu-lo a la carpeta de la biblioteca Arduino. Aquesta biblioteca és necessària per al bon funcionament de la pantalla TFT LCD.
#incloure
Haureu de provar el vostre LCD TFT mitjançant la gravació d'Arduino amb exemples de codis que es donen a la biblioteca i comproveu si els codis funcionen correctament. Primer comproveu la prova gràfica, després calibreu la prova i, finalment, la prova de pintura. Si trobeu que totes les funcions funcionen bé, comenceu pel codi que apareix en aquest tutorial.
També per al bon funcionament de la tira LED NeoPixel RGB, necessitareu una biblioteca més, que es pot descarregar des d’aquí.
#incloure
Com es va descriure anteriorment, el pin digital 36 de MEGA està connectat al pin DI de la tira LED NeoPixel tal com es mostra al codi següent. A més, el nombre de LEDs de la franja és de 30, tal com s’escriu al codi:
#define PIN 36 #define NUM_LEDS 30
Els colors de la pantalla dels botons LCD es denoten mitjançant alguns codis. Podeu canviar aquests codis segons el vostre 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
Alguns paràmetres dels botons, com ara la mida i la posició, es defineixen al codi:
uint16_t ample = 0; uint16_t alçada = 0; uint16_t x = 40; uint16_t y = altura - 20; uint16_t w = 75; uint16_t h = 20;
El paràmetre h s'utilitza per ajustar la mida del botó a la pantalla LCD. Si en feu 40, la mida del botó es duplicarà. El paràmetre y és la coordenada y de la pantalla LCD.
Els botons tàctils es denoten amb números tal com es mostra al codi:
#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 #defut BUTTON_Light
Algunes funcions s’utilitzen per emetre el color de NeoPixel com:
void EmitCyan (); void EmitWhite (); void EmitGreen (); void EmitYellow (); void EmitPink (); void EmitBlack ();
Per trobar els valors RGB digitals que cal introduir per al color donat, podeu seguir aquest enllaç. Només cal que introduïu el color que voleu que brilli la vostra tira NeoPixel, cerqueu els valors RGB d’aquest color i poseu les funcions anteriors.
La funció void initializeButtons () s'utilitza per donar text i color als botons i també per col·locar-los al lloc desitjat a la pantalla LCD.
void initializeButtons () {uint16_t x = 40; uint16_t y = altura - 20; uint16_t w = 75; uint16_t h = 40; uint8_t spacing_x = 5………………..
void showCalibration () s'utilitza per dibuixar els botons de la pantalla LCD.
void showCalibration () {tft.setCursor (40, 0); per a (uint8_t i = 0; i <8; i ++) {buttons.drawButton (); }}
A continuació es mostra el Codi Arduino complet per il·luminar la tira LED NeoPixel amb el color desitjat. El codi és una mica llarg però senzill, es pot entendre fàcilment.
