Um exemplo de semáforo utilizando a barra de leds RGB WS2812.
Através do controle da intensidade do brilho dos leds controlamos a cor que estará em evidência.
A biblioteca Adafruit_NeoPixel.h é a responsável pelo controle dos leds.
Sintaxe:
setPixelColor(LED, ValorVermelho, ValorVerde, ValorAzul);
O valor de LED deve ser de 0 a 7, indicando qual estará controlando.
Os valores das cores (Red, Green, Blue) devem estar entre 0 e 255. Sendo 0 como desligado e 255 o brilho máximo.
O amarelo é formado aplicando a mesma quantidade de luz vermelha e luz verde.
Abaixo o código fonte:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | /*--------------------------------------------------------- Programa : SEMÁFORO RGB WS2812 Autor : Fellipe Couto [ http://www.efeitonerd.com.br ] Data : 18/03/2023 ---------------------------------------------------------*/ #include <Adafruit_NeoPixel.h> //https://github.com/adafruit/Adafruit_NeoPixel #define RGB_PIN 2 //Pino de conexão da barra de leds #define RGB_PIXELS 8 //Número de leds rgb #define RGB_MIN 1 //Luminosidade mínima do led #define RGB_MAX 60 //Luminosidade máxima do led Adafruit_NeoPixel pixels(RGB_PIXELS, RGB_PIN); //Barra leds RGB WS2812 void setup() { pixels.begin(); //Inicializa a barra de leds RGB WS2812 } void loop() { light('g', 5); //Verde por 5 segundos light('y', 4); //Amarelo por 4 segundos light('r', 8); //Vermelho por 8 segundos } void light(char color, int timeSec) { //Todos com brilho mínimo pixels.setPixelColor(0, 0, RGB_MIN, 0); //Led, R, G, B (VERDE) pixels.setPixelColor(1, 0, RGB_MIN, 0); //Led, R, G, B (VERDE) pixels.setPixelColor(2, 0, RGB_MIN, 0); //Led, R, G, B (VERDE) pixels.setPixelColor(3, RGB_MIN, RGB_MIN, 0); //Led, R, G, B (AMARELO) pixels.setPixelColor(4, RGB_MIN, RGB_MIN, 0); //Led, R, G, B (AMARELO) pixels.setPixelColor(5, RGB_MIN, 0, 0); //Led, R, G, B (VERMELHO) pixels.setPixelColor(6, RGB_MIN, 0, 0); //Led, R, G, B (VERMELHO) pixels.setPixelColor(7, RGB_MIN, 0, 0); //Led, R, G, B (VERMELHO) //Acende a cor selecionada em brilho mais forte if (color == 'g') { //Green pixels.setPixelColor(0, 0, RGB_MAX, 0); //Led, R, G, B (VERDE) pixels.setPixelColor(1, 0, RGB_MAX, 0); //Led, R, G, B (VERDE) pixels.setPixelColor(2, 0, RGB_MAX, 0); //Led, R, G, B (VERDE) } else if (color == 'y') { //Yellow pixels.setPixelColor(3, RGB_MAX, RGB_MAX, 0); //Led, R, G, B (AMARELO) pixels.setPixelColor(4, RGB_MAX, RGB_MAX, 0); //Led, R, G, B (AMARELO) } else if (color == 'r') { //Red pixels.setPixelColor(5, RGB_MAX, 0, 0); //Led, R, G, B (VERMELHO) pixels.setPixelColor(6, RGB_MAX, 0, 0); //Led, R, G, B (VERMELHO) pixels.setPixelColor(7, RGB_MAX, 0, 0); //Led, R, G, B (VERMELHO) } pixels.show(); delay(timeSec * 1000); } |
Nenhum comentário:
Postar um comentário