#include <Adafruit_NeoPixel.h> //Adiciona a biblioteca Adafruit NeoPixel
#define DIN 12 //Nomeia o pino 6 do Arduino
#define qtdLEDs 12 //Informa a quantidade de LEDs que serão ligados em cascata
Adafruit_NeoPixel LED_INDICATOR(qtdLEDs, DIN); //Instancia o objeto "LED_INDICATOR", informando a quantidade e o pino de sinal
//variaveis globais
int baudrate = 115200;
char inByte;
unsigned long lasttime = 0;
unsigned long timedelay = 250;
bool blink_ctl = false;
bool blink_status = true;
void yellow_blink()
{
if (blink_ctl)
{
uint64_t now = millis();
if((now -lasttime) >= timedelay)
{
lasttime = now;
if(!blink_status) blink_status = true;
else blink_status = false;
}
if(blink_status)
{
for(int i=0; i<qtdLEDs; i++)
{
LED_INDICATOR.setPixelColor(i, LED_INDICATOR.Color(255, 255, 0));
}
LED_INDICATOR.show();
}
else
{
LED_INDICATOR.clear();
LED_INDICATOR.show();
}
}
}
void leds()
{
if(Serial.available() > 0) inByte = Serial.read();
switch (inByte)
{
case 'a':
LED_INDICATOR.setPixelColor(0, LED_INDICATOR.Color(0, 0, 255));
LED_INDICATOR.show();
break;
case 'b':
LED_INDICATOR.setPixelColor(0, LED_INDICATOR.Color(0, 255, 0));
LED_INDICATOR.show();
break;
case 'c':
LED_INDICATOR.setPixelColor(0, LED_INDICATOR.Color(255, 0, 0));
LED_INDICATOR.show();
break;
case 'd':
LED_INDICATOR.setPixelColor(0, LED_INDICATOR.Color(0, 0, 0));
LED_INDICATOR.show();
break;
case 'e':
LED_INDICATOR.setPixelColor(1, LED_INDICATOR.Color(0, 0, 255));
LED_INDICATOR.show();
break;
case 'f':
LED_INDICATOR.setPixelColor(1, LED_INDICATOR.Color(0, 255, 0));
LED_INDICATOR.show();
break;
case 'g':
LED_INDICATOR.setPixelColor(1, LED_INDICATOR.Color(255, 0, 0));
LED_INDICATOR.show();
break;
case 'h':
LED_INDICATOR.setPixelColor(1, LED_INDICATOR.Color(0, 0, 0));
LED_INDICATOR.show();
break;
case 'i':
LED_INDICATOR.setPixelColor(2, LED_INDICATOR.Color(0, 0, 255));
LED_INDICATOR.show();
break;
case 'j':
LED_INDICATOR.setPixelColor(2, LED_INDICATOR.Color(0, 255, 0));
LED_INDICATOR.show();
break;
case 'k':
LED_INDICATOR.setPixelColor(2, LED_INDICATOR.Color(255, 0, 0));
LED_INDICATOR.show();
break;
case 'l':
LED_INDICATOR.setPixelColor(2, LED_INDICATOR.Color(0, 0, 0));
LED_INDICATOR.show();
break;
case 'm':
LED_INDICATOR.setPixelColor(3, LED_INDICATOR.Color(0, 0, 255));
LED_INDICATOR.show();
break;
case 'n':
LED_INDICATOR.setPixelColor(3, LED_INDICATOR.Color(0, 255, 0));
LED_INDICATOR.show();
break;
case 'o':
LED_INDICATOR.setPixelColor(3, LED_INDICATOR.Color(255, 0, 0));
LED_INDICATOR.show();
break;
case 'p':
LED_INDICATOR.setPixelColor(3, LED_INDICATOR.Color(0, 0, 0));
LED_INDICATOR.show();
break;
case 'q':
LED_INDICATOR.setPixelColor(4, LED_INDICATOR.Color(0, 0, 255));
LED_INDICATOR.show();
break;
case 'r':
LED_INDICATOR.setPixelColor(4, LED_INDICATOR.Color(0, 255, 0));
LED_INDICATOR.show();
break;
case 's':
LED_INDICATOR.setPixelColor(4, LED_INDICATOR.Color(255, 0, 0));
LED_INDICATOR.show();
break;
case 't':
LED_INDICATOR.setPixelColor(4, LED_INDICATOR.Color(0, 0, 0));
LED_INDICATOR.show();
break;
case 'u':
LED_INDICATOR.setPixelColor(5, LED_INDICATOR.Color(0, 0, 255));
LED_INDICATOR.show();
break;
case 'v':
LED_INDICATOR.setPixelColor(5, LED_INDICATOR.Color(0, 255, 0));
LED_INDICATOR.show();
break;
case 'w':
LED_INDICATOR.setPixelColor(5, LED_INDICATOR.Color(255, 0, 0));
LED_INDICATOR.show();
break;
case 'x':
LED_INDICATOR.setPixelColor(5, LED_INDICATOR.Color(0, 0, 0));
LED_INDICATOR.show();
break;
case 'y':
LED_INDICATOR.setPixelColor(6, LED_INDICATOR.Color(0, 0, 255));
LED_INDICATOR.show();
break;
case 'z':
LED_INDICATOR.setPixelColor(6, LED_INDICATOR.Color(0, 255, 0));
LED_INDICATOR.show();
break;
case 'A':
LED_INDICATOR.setPixelColor(6, LED_INDICATOR.Color(255, 0, 0));
LED_INDICATOR.show();
break;
case 'B':
LED_INDICATOR.setPixelColor(6, LED_INDICATOR.Color(0, 0, 0));
LED_INDICATOR.show();
break;
case 'C':
LED_INDICATOR.setPixelColor(7, LED_INDICATOR.Color(0, 0, 255));
LED_INDICATOR.show();
break;
case 'D':
LED_INDICATOR.setPixelColor(7, LED_INDICATOR.Color(0, 255, 0));
LED_INDICATOR.show();
break;
case 'E':
LED_INDICATOR.setPixelColor(7, LED_INDICATOR.Color(255, 0, 0));
LED_INDICATOR.show();
break;
case 'F':
LED_INDICATOR.setPixelColor(7, LED_INDICATOR.Color(0, 0, 0));
LED_INDICATOR.show();
break;
case 'G':
LED_INDICATOR.setPixelColor(8, LED_INDICATOR.Color(0, 0, 255));
LED_INDICATOR.show();
break;
case 'H':
LED_INDICATOR.setPixelColor(8, LED_INDICATOR.Color(0, 255, 0));
LED_INDICATOR.show();
break;
case 'I':
LED_INDICATOR.setPixelColor(8, LED_INDICATOR.Color(255, 0, 0));
LED_INDICATOR.show();
break;
case 'J':
LED_INDICATOR.setPixelColor(8, LED_INDICATOR.Color(0, 0, 0));
LED_INDICATOR.show();
break;
case 'K':
LED_INDICATOR.setPixelColor(9, LED_INDICATOR.Color(0, 0, 255));
LED_INDICATOR.show();
break;
case 'L':
LED_INDICATOR.setPixelColor(9, LED_INDICATOR.Color(0, 255, 0));
LED_INDICATOR.show();
break;
case 'M':
LED_INDICATOR.setPixelColor(9, LED_INDICATOR.Color(255, 0, 0));
LED_INDICATOR.show();
break;
case 'N':
LED_INDICATOR.setPixelColor(9, LED_INDICATOR.Color(0, 0, 0));
LED_INDICATOR.show();
break;
case 'O':
LED_INDICATOR.setPixelColor(10, LED_INDICATOR.Color(0, 0, 255));
LED_INDICATOR.show();
break;
case 'P':
LED_INDICATOR.setPixelColor(10, LED_INDICATOR.Color(0, 255, 0));
LED_INDICATOR.show();
break;
case 'Q':
LED_INDICATOR.setPixelColor(10, LED_INDICATOR.Color(255, 0, 0));
LED_INDICATOR.show();
break;
case 'R':
LED_INDICATOR.setPixelColor(10, LED_INDICATOR.Color(0, 0, 0));
LED_INDICATOR.show();
break;
case 'S':
LED_INDICATOR.setPixelColor(11, LED_INDICATOR.Color(0, 0, 255));
LED_INDICATOR.show();
break;
case 'T':
LED_INDICATOR.setPixelColor(11, LED_INDICATOR.Color(0, 255, 0));
LED_INDICATOR.show();
break;
case 'U':
LED_INDICATOR.setPixelColor(11, LED_INDICATOR.Color(255, 0, 0));
LED_INDICATOR.show();
break;
case 'V':
LED_INDICATOR.setPixelColor(11, LED_INDICATOR.Color(0, 0, 0));
LED_INDICATOR.show();
break;
case 'W':
blink_ctl = true;
break;
case 'Y':
blink_ctl = false;
LED_INDICATOR.clear(); //desliga todos os LEDs
LED_INDICATOR.show();
break;
}
}
void setup()
{
pinMode(DIN, OUTPUT); //Configura o pino 6 como saída
LED_INDICATOR.begin(); //Inicia o objeto "LED_INDICATOR"
Serial.begin(baudrate);
LED_INDICATOR.clear(); //desliga todos os LEDs
LED_INDICATOR.show();
}
void loop()
{
yellow_blink();
leds();
}