Qualquer cor é composta por três cores: Vermelho, Verde e Azul, usando um simples LED RGB você pode gerar qualquer cor. Mas a limitação do LED RGB é que ele possui três LEDs separados dentro dele e requer três pinos de qualquer microcontrolador para operar um LED RGB. Portanto, não é possível conectar centenas de LEDs a um microcontrolador.
Para superar este problema, a Adafruit criou a NeoPixel LED Strip. Requer apenas três pinos para acionar vários LEDs RGB NeoPixel. Dois pinos são para alimentação e aterramento e um pino é para Data In (DI). O pino Data IN é usado para endereçar e controlar os diferentes LEDs na faixa com sua cor, brilho, etc. Mas é necessário um microcontrolador para executar o NeoPixels. Arduino é muito comumente usado com NeoPixel, então hoje vamos aprender a fazer a interface de LEDs NeoPixel com Arduino. Você pode aprender mais sobre NeoPixels em AdaFruit.
Aqui neste projeto estamos controlando NeoPixel LED usando Arduino e tela de toque TFT LCD. Criamos 7 botões de toque de cores diferentes no LCD TFT de 2,4 polegadas e quando tocamos no botão de determinada cor no LCD, a faixa de LED NeoPixel acende com a mesma cor daquele botão. Aqui usamos a faixa de LED RGB digital NeoPixel de 30 LEDs.
O LED RGB NeoPixel pode ser iluminado em qualquer cor e, portanto, podemos adicionar mais botões no LCD para iluminar o LED em mais cores ao tocar nesses botões. Outros belos efeitos e padrões também podem ser adicionados usando a codificação. Você pode construir um sistema de decoração totalmente controlado por Arduino usando NEO Pixel LEDs e pode controlar esse sistema por um LCD próximo a você.
Componentes necessários:
- Arduino Mega ou qualquer outro modelo Arduino
- Escudo TFT LCD de 2,4 polegadas com controlador SPFD5408
- Fita LED NeoPixel RGB
- Fios de conexão
- Cabo USB ou adaptador 12 V 1A
Conexões de circuito:
Para conectar o NeoPixels Strip ao Arduino Mega simplesmente conecte o pino 5V do Arduino ao pino 5V do NeoPixel e o GND do Mega ao GND do NeoPixel e, em seguida, conecte o pino DI do NeoPixel (entrada de dados) ao pino digital nº 36 do Arduino Mega. Monte com cuidado o TFT LCD Touch Shield sobre o Arduino de forma que o GND do MEGA fique abaixo do GND do LCD e o pino 5V do Arduino se conecte ao pino 5V do LCD.
Tome cuidado para não trocar o GND e o pino de 5 V da faixa de LED NeoPixel ao conectá-lo ao Arduino, caso contrário, a faixa de LED NeoPixel será danificada. Observe também que aqui usamos o Arduino Mega, mas você pode usar qualquer outro modelo do Arduino.
Conexões para Arduino para NeoPixel RGB LED Strip:
Arduino Pins |
Pins da tira NeoPixel |
5v |
5v |
GND |
GND |
Pin digital nº 36 |
DI (dados em) |
Explicação de trabalho:
Trabalhar com NeoPixel LED com Arduino é muito fácil. Basta tocar no botão de toque de qualquer cor no LCD em que deseja iluminar a faixa de LED NeoPixel. O LED acenderá de acordo com essa cor. O código é escrito de forma que você possa repetir essa tarefa indefinidamente, sem ter que reiniciar o Arduino Mega. Você pode verificar o código e o vídeo de demonstração no final deste artigo.
Quando qualquer botão é pressionado no LCD, os dados são enviados ao Arduino e o Arduino envia instruções para o NeoPixel Strip para acender de acordo. Por exemplo, a faixa de LED NeoPixel brilha na cor verde quando tocamos no botão verde no LCD e a faixa de LED brilha na cor vermelha quando pressionamos o botão vermelho e assim por diante.
Explicação de programação:
Para fazer a interface do TFT LCD com o Arduino, usamos algumas bibliotecas. Todas as bibliotecas vêm em um arquivo rar e podem ser baixadas deste link. Clique em 'Clonar ou baixar' e 'Baixar arquivo ZIP' e adicionar à pasta da biblioteca do Arduino. Esta biblioteca é necessária para o funcionamento adequado do LCD TFT.
#incluir
Você deve testar seu LCD TFT queimando o Arduino com códigos de exemplo fornecidos na Biblioteca e verificar se os códigos estão funcionando corretamente. Primeiro verifique o teste gráfico, depois calibre o teste e, finalmente, o teste de pintura. Se você achar que todos os recursos estão funcionando bem, comece com o código fornecido neste tutorial.
Também para o correto funcionamento da faixa de LEDs RGB NeoPixel, você precisará de mais uma biblioteca, que pode ser baixada aqui.
#incluir
Conforme descrito anteriormente, o pino digital 36 do MEGA é conectado ao pino DI da faixa de LED NeoPixel conforme mostrado no código abaixo. Além disso, o número de LEDs na Faixa é 30, conforme está escrito no código:
#define PIN 36 #define NUM_LEDS 30
As cores de exibição dos botões LCD são indicadas por alguns códigos. Você pode alterar esses códigos de acordo com o seu LCD.
#define PRETO 0x0000 #define AMARELO 0x001F #define VERDE 0xF800 #define VERMELHO 0x07E0 #define CIANO 0x07FF #define MAGENTA 0xF81F #define AZUL 0xFFE0 #define WHITE 0xFFFF
Alguns parâmetros para os botões, como tamanho e posição, são definidos no código:
uint16_t largura = 0; uint16_t height = 0; uint16_t x = 40; uint16_t y = altura - 20; uint16_t w = 75; uint16_t h = 20;
O parâmetro h é usado para ajustar o tamanho do botão no LCD. Se você aumentar para 40, o tamanho do botão será duplicado. O parâmetro y é a coordenada y do LCD.
Os botões de toque são denotados por números, conforme mostrado no código:
#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 #define BUTTON_LightBlue1
Algumas funções são usadas para emitir a cor do NeoPixel como:
void EmitCyan (); void EmitWhite (); void EmitGreen (); void EmitYellow (); void EmitPink (); void EmitBlack ();
Para encontrar os valores RGB digital a serem inseridos para a cor fornecida, você pode seguir este link. Basta inserir a cor que deseja que a faixa NeoPixel brilhe, encontrar os valores RGB para essa cor e inserir as funções acima.
A função void initializeButtons () é usada para dar texto e cor aos botões e também para colocá-los no local necessário no 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………………..
A função void showCalibration () é usada para desenhar os botões no LCD.
void showCalibration () {tft.setCursor (40, 0); para (uint8_t i = 0; i <8; i ++) {buttons.drawButton (); }}
Além disso, o código Arduino completo para acender a faixa de LED NeoPixel na cor desejada é fornecido abaixo. O código é um pouco longo, mas simples, você pode entender o código facilmente.