Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <FastLED.h> // Biblioteca para fita de LED
- #define interruptPin 2 // Pino para entrada de pulso de Digital de audio
- #define NUM_LEDS 60 // Numero de LEDs
- #define DATA_PIN 12 // Pino de controle da fita de LED Data Out
- CRGB leds[NUM_LEDS]; // Isntancia da matriz de LED
- static uint8_t hue; // Controle de gama do LED
- bool pulso = false; // Controle de atualização da matriz de LED
- //---------------------------------------------------------------------------------------------------------------
- void pulsar() { // Rotina para manusear interrupt de pulso de audio
- pulso = true; // Habilita rotina de ligar LED por interrupt de pulso digital de audio
- }
- //---------------------------------------------------------------------------------------------------------------
- void setup() {
- pinMode(interruptPin, INPUT); // Pino digital de audio como entrada
- FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS); // Controle ordendado como GRB
- for (int pos = 0; pos < NUM_LEDS; pos++) // Endereca cada celula da matriz de LED
- {
- leds[pos] = CRGB::Black; // Limpa a matriz para apagar todos LEDs
- }
- attachInterrupt(digitalPinToInterrupt(interruptPin), pulsar, CHANGE); // Habilita interrupt de pulso digital de audio
- }
- //---------------------------------------------------------------------------------------------------------------
- void loop() {
- for (int pos = NUM_LEDS; pos >= 0; pos--) // Endereca cada celula da matriz de LED na ordem inversa
- {
- leds[pos] = leds[pos - 1]; // Faz um shift de uma por uma das celulas da matriz
- }
- if (pulso == true) // Se rotina de ligar LED foi habilitada por pulso digital de audio
- {
- pulso = false; // Desabilita refazer a rotina
- for (int i = 0; i < 4; i++) // Endereca as 4 primeira celulas da matiz de LED
- leds[i] = CHSV(hue+=3, 255, 255); // Carrega as 4 primeira celulas da matriz de LED com valores de gama variado
- }
- else // Se rotina de ligar LED nao foi habilitada por pulso digital de audio
- leds[0] = CRGB::Black; // Apaga o LED posicao 0 da matriz
- FastLED.show(); // Roda rotina que scanneia a matriz e ativa cada LED da tira
- delay(10); // Aguarda tempo para visualização
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement