Como fazer um LED piscar no ritmo da música 7

Certamente você já deve ter visto vídeos de luzes que piscam conforme o ritmo da música. Você sempre quis fazer um? Neste post vamos ensinar a utilizar um sensor de som KY-038 e um Arduino para você aprender como fazer um LED piscar no ritmo da música!

Como fazer um led piscar no ritmo da música

Existem diversas fitas de LEDs endereçáveis que utilizam o mesmo princípio de comunicação. Inclusive, você aprendeu como funciona a sua comunicação no nosso post sobre como fazer um pisca-pisca com Arduino. Dessa forma, somos capazes de criar diversos efeitos com os LEDs.

O Sensor de som KY-038 também já é conhecido do nosso blog. No último post sobre ele, vimos como acender uma lâmpada batendo palmas. Nos projetos anteriores utilizamos somente saída digital desse sensor, dessa vez, porém, vamos trabalhar com a saída analógica dele.

Para este projeto vamos precisar de:

Montagem do circuito

Como vamos utilizar a saída analógica do Sensor de som KY-038, temos que conectá-lo com uma entrada analógica do Arduino. Para acionar a fita de LEDs, utilizamos apenas uma saída digital.

Circuito de como fazer um led piscar no ritmo da música

 

Lógica de como fazer um LED piscar no ritmo da música

Para fazer o LED piscar no ritmo da música, utilizamos a saída analógica do sensor de som como entrada para o programa. O valor obtido definimos como a intensidade do brilho da fita de LEDs. Dessa forma, o LED não fica totalmente apagado e aumenta o brilho conforme aumenta a intensidade da música.

Você vai precisar adicionar a biblioteca da Adafruit para trabalhar com esse tipo de fita de LEDs.

//Programa: Como fazer um LED piscar no ritmo da musica
//Autor: FILIPEFLOP

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif


int nleds = 16; // Numero de LEDs na fita
int pinoLED = 6; // Pino que vai enviar os dados para a fita de LED
int pinosom = A5; // Pino que recebe a saida analogica do sensor de som

Adafruit_NeoPixel pixels=Adafruit_NeoPixel(nleds,pinoLED,NEO_GRB+NEO_KHZ800); // Define com a biblioteca o tipo de fita de LEDs que voce esta usando


void setup()
{
  pixels.begin();
  pixels.setBrightness(0);  
  pinMode(pinosom, INPUT); // Define o pino de entrada do sensor de som
  
}

int brilho =0;

void loop(){
  int som = analogRead(pinosom); //Lê o valor da porta analógica do sensor de som
  brilho = som/2; // Passa o valor lido pelo som para definir o brilho dos LEDs
  //   brilho = map(som,valorsilencio,valormusica,0,240); // Opção para um ajuste mais fino do brilho
  
  pixels.setBrightness(brilho); // Passa para os LEDs o valor da variável brilho
  
  for (int i=0;i<nleds;i++){
    pixels.setPixelColor(i,pixels.Color(0, 0, 255)); // Marca todos os nleds com a cor (azul, neste caso)
  }
  pixels.show();

}

É necessário, antes de funcionar o programa, fazer o ajuste da sensibilidade do sensor de som, de forma com que a luz fique fraca quando a música está baixa mas que fique forte quando a música está mais alta. Uma alternativa para ficar mais fácil de ajustar é dividir a variável som por um valor maior.

Como os LEDs somente mudam a intensidade no ritmo da música, tem-se um efeito fluído. Parece que eles estão até que eles estão dançando. É possível fazer os LEDs apagarem completamente utilizado um if e a porta digital do sensor de som, mas perderia esse efeito mais fluído.

Gostou de aprender como fazer um LED piscar no ritmo da música? Ajude-nos a melhorar o blog comentando abaixo sobre este tutorial. Não se esqueça de visitar o fórum da FILIPEFLOP!

Posts Relacionados

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

7 Comentários

  1. Olá boa tarde, ótimo trabalho, já cheguei a fazer um led que ascende conforme a musica, mas não utilizei Arduíno.
    Eu tentei mas com fracasso fazer um led rítmico estilo estéreo, usando um fone por exemplo, as vezes uma batida da musica fica do lado esquerdo enquanto o direito reproduz o complemento da música.
    Conseguiriam fazer um estilo estéreo ?

    1. Olá Alexandre!

      Como nós captamos o som com um sensor bem simples, não é possível fazer essa diferenciação com ele. Acredito que o ideal seria o som “passar” pelo arduino antes de ir para as caixas.

      Achei bem interessante a sua ideia e seria bem legal ver em nosso fórum. Você poderia postar?

      https://www.filipeflop.com/forum/

      Lá você pode tirar algumas dúvidas e postar seus projetos. Colaborar e aproveitar a comunidade!

      Abraços!

      André – Equipe FilipeFlop

  2. Pode ser usado a fita de led normal também?

    1. Olá Neudivan!

      É possível sim! O segredo está em usar a variável lida pelo sensor em intensidade nos LEDs.

      Numa fita norma essa intensidade é controlada pelo PWM.

      Abraços!

      André – Equipe FilipeFlop

  3. Seria possível fazer um exemplo onde as cores mudam?? de acordo com a som?

    1. Olá Alvaro!

      É mais tranquilo fazer do que parece 🙂

      Nesse trecho de código, definimos a cor dos LEDs:
      ” pixels.setPixelColor(i,pixels.Color(0, 0, 255));”
      Ali a ordem é RGB ( vermelho, verde e azul). Como queria que ficasse azul, coloquei o máximo no azul e zero nos outros.

      Basta alterar o código para a cor que você deseja.

      Quando você fizer, compartilha conosco? Que tal postar no nosso fórum?
      Lá você pode tirar algumas dúvidas e postar seus projetos. Colaborar e aproveitar a comunidade:

      https://www.filipeflop.com/forum/

      Abraços!

      André – Equipe FilipeFlop

  4. Boa noite.

    Duas perguntas rápidas. (sou novato de tudo)

    Primeira. O que é essa peça/mesa b_ranca onde tudo está conectado?

    segunda. Posso utilizar a quantidade/metros de fita de led que quiser?

    Vlw