Advertisement
RuiViana

FitaLED.ino

Dec 28th, 2021
1,376
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.80 KB | None | 0 0
  1. #include <FastLED.h>                              // Biblioteca para fita de LED
  2. #define interruptPin 2                            // Pino para entrada de pulso de Digital de audio
  3. #define NUM_LEDS 60                               // Numero de LEDs
  4. #define DATA_PIN 12                               // Pino de controle da  fita de LED Data Out
  5. CRGB leds[NUM_LEDS];                              // Isntancia da matriz de LED
  6. static uint8_t hue;                               // Controle de gama do LED
  7. bool pulso = false;                               // Controle de atualização da matriz de LED
  8. //---------------------------------------------------------------------------------------------------------------
  9. void pulsar() {                                   // Rotina para manusear interrupt de pulso de audio
  10.   pulso = true;                                   // Habilita rotina de ligar LED por interrupt de pulso digital de audio
  11. }
  12. //---------------------------------------------------------------------------------------------------------------
  13. void setup() {
  14.   pinMode(interruptPin, INPUT);                         // Pino digital de audio como entrada
  15.   FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);  // Controle ordendado como GRB
  16.   for (int pos = 0; pos < NUM_LEDS; pos++)              // Endereca cada celula da matriz de LED
  17.   {
  18.     leds[pos] =  CRGB::Black;                           // Limpa a matriz para apagar todos LEDs
  19.   }
  20.   attachInterrupt(digitalPinToInterrupt(interruptPin), pulsar, CHANGE);    // Habilita interrupt de pulso digital de audio
  21. }
  22. //---------------------------------------------------------------------------------------------------------------
  23. void loop() {
  24.   for (int pos = NUM_LEDS; pos >= 0; pos--)             // Endereca cada celula da matriz de LED na ordem inversa
  25.   {
  26.     leds[pos] = leds[pos - 1];                          // Faz um shift de uma por uma das celulas da matriz
  27.   }
  28.   if (pulso == true)                                    // Se rotina de ligar LED foi habilitada por pulso digital de audio
  29.   {
  30.     pulso = false;                                      // Desabilita refazer a rotina
  31.     for (int i = 0; i < 4; i++)                         // Endereca as 4 primeira celulas da matiz de LED
  32.       leds[i] =  CHSV(hue+=3, 255, 255);                // Carrega as 4 primeira celulas da matriz de LED com valores de gama variado
  33.   }
  34.   else                                                  // Se rotina de ligar LED nao foi habilitada por pulso digital de audio
  35.     leds[0] =  CRGB::Black;                             // Apaga o LED posicao 0 da matriz
  36.   FastLED.show();                                       // Roda rotina que scanneia a matriz e ativa cada LED da tira
  37.   delay(10);                                            // Aguarda tempo para visualização
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement