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

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: MakerHero

#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 de obter a versão definitiva do 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 mostro ali no código.

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.

Faça seu comentário

Acesse sua conta e participe

68 Comentários

  1. bom dia!! gostaria de saber como faço para os leds mudarem de cor automaticamente. obg!!!

    1. Olá!

      Você pode copiar as linhas 34 a 36 e colar algumas vezes abaixo, alterando os valores entre 0 e 255 dentro de “pixels.Color(0, 0, 255)” para fazer com que os leds mudem de cor.

      Abraços!
      Vinícius – Equipe MakerHero

      1. bom dia, tentei colocar as linhas porém os leds apenas ficaram brancos!!

        1. Olá!

          Como ficou o seu código?

          Abraços!
          Vinícius – Equipe MakerHero

  2. Boa noite, gostaria de saber se posso controlar a cor desse led através do ethernet shield

    1. Olá Vithor!

      Acredito que seja possível sim, fazer com que as variáveis sejam alteradas via ethernet para a mudança de cores.

      Abraços!
      Vinícius – Equipe MakerHero

  3. Como faço com uma fita de led inderessavel?? Tenho 120 leds em 2 metros…o que preciso comprar.. me ensina aí.. obrigado

    1. Olá Claudinei!

      Os LED’s endereçáveis já possuem os componentes responsáveis pelo endereçamento dentro dos próprios LED’s, acredito que seria inviável fazer uma fita de LED endereçável com componentes externos.

      Abraços!
      Vinícius – Equipe MakerHero

  4. Como faço com uma fita de led inderessavel?? Tenho 120 leds em 2 metros…

  5. Boa noite, funcionou tudo certo, mas o meu LED 2 do ky-038 que regula a sensibilidade não esta apagando como mostra o vídeo, deveria vibrar junto com a régua. Já fiz de tudo para tentar achar o ponto perfeito e ainda não acho.

    1. Olá Vithor,

      A régua de LED está vibrando normalmente? Ou fica fixa como o LED 2?

      Abraços!

      Vinícius – Equipe MakerHero

      1. Consegui fazer, não tinha visto sua resposta. Mas muito obrigado

        1. Olá Vithor,

          Disponha! 🙂

          Abraços!
          Vinícius – Equipe MakerHero

  6. Fiz conforme o tutorial, porém botei alimentação externa na fita led pois ela é 12 volts.
    Ela liga normal fica com todos LED’s ligados, quando aciono o Arduino, a fita fica piscando de forma aleatória várias cores diferentes, não tem variação, testei 2 sensores de som diferentes mas o resultado é o mesmo, testei mexer na sensibilidade mas mesmo no mínimo é o mesmo…
    Tens ideia de onde posso estar errando?

    achei um tutorial para testar se o sensor está funcionando de forma correta, mas só vou poder testar mais perto do final de semana…

    1. Olá Bernardo,

      As réguas de LED do projeto acima são de 4 a 7 volts.

      Caso esteja utilizando uma fita diferente, é preciso ver as especificações dela, pode ser que ela espere um sinal de 12 volts.
      Como o Arduino trabalha com 5 volts, pode ser por isso que a fita se comporta aleatoriamente.

      Também é possível que os comandos da biblioteca utilizada não sejam compatíveis com a fita de LED, se for uma diferente da usada no projeto.

      Abraços!
      Vinícius – Equipe MakerHero

  7. Boa tarde, como faço para emendar as duas réguas de led?

    1. Olá Vithor,

      Para emendar as duas réguas, você deve conectar os pinos da seguinte forma:

      GND -> GND
      DOUT -> DIN
      4-7VDC -> 4-7VDC
      GND -> GND

      Se quiser, pode usar fios para auxiliar nas soldas, unir diretamente com solda, ou colocar conectores nas réguas, fica a seu critério.

      Abraços!
      Vinícius – Equipe MakerHero

  8. Consigo trocar o sensor de som por uma entrada P2?

    1. Olá Bernardo,

      Utilizando o código do post não é possível. O sensor de som possui uma saída analógica de 0V a 5V proporcional ao som detectado. Já uma saída P2 funciona de maneira diferente.

      Abraço!
      Rosana – Equipe MakerHero

  9. comprei o Kit Fita de LED RGB 10m que vende no ff, mas a fita de led ao inves de ser GND/DOUT/VDC/GND ela controla as cores .. VDC (+12V)/R/G/B..
    para que possa usar o recurso musical, onde controlo o DCOUT, endereço as 3 cores (R/G/B) ou preciso fazer outra coisa?

    Francisco Ricardo Andraschko
  10. Boa tarde, como faço para ter varias cores a dor ao som da musica.
    Obrigado.

  11. Olá André, parabéns pelo trabalho.
    Gostaria de executar um projeto mas estou tendo dificuldades. Se você ajudar meu contato é [email protected].
    Você faz projeto por encomenda?

  12. Olá André, parabéns pelo trabalho.
    Gostaria de executar um projeto mas estou tendo dificuldades. Se você ajudar meu contato é [email protected].
    Você faz projeto por encomenda?

  13. Olá, sou iniciante na eletrônica. Funcionou tudo certinho mas queria ajustar a sensibilidade. Queria que ficasse bem fraco a luz quando não tivesse som e piscasse bem forte junto da musica.

  14. Ola, boa tarde, gostei muito do trabalho, poderia me tirar uma duvida?! , gostaria de saber se e possível usar um amplificador PAM8610 (para reproduzir algo no mesmo dispositivo que eu usar aquela fita de led de 12v) ainda terei que usar esse Sensor de som KY-038 ?
    fico grato pela atenção.

    1. Klau,

      Acaba sendo necessário, pois você precisa identificar o som e mandá-lo para a placa.

      Abraços!
      Diogo – Equipe MakerHero

  15. Muito show.
    É possível fazer vários leds piscarem?

    1. Samuel,

      Você se refere a utilizar outras plaquinhas LED dessas piscarem? Sim, é possível 🙂

      Abraços!
      Diogo – Equipe MakerHero

  16. Alguém perto de São Paulo que poderia montar esse sistema pra mim ?

  17. Se eu quisesse mudar a fita de leds por varios leds oq eu deveria fzer?

    1. Marcos,

      Você teria que provavelmente modificar o código inteiro, tendo em vista que ele utiliza a biblioteca para a fita de LEDs.

      Abraços!
      Diogo – Equipe MakerHero

  18. Onde consigo alguém que monte esse sistema pra mim ? Sou de Guararema SP o email é [email protected]

  19. Quero saber como faço para ligar uma fita de Led branca de 12v na batida da música meu módulo e de 1500 rms qual resistor colocar

    1. Olá, João Carlos,

      Qual módulo você está utilizando?

      Abraços!
      Diogo – Equipe MakerHero

  20. Bom dia, André.

    Cara, teu fiz uma caixa de som e coloquei um módulo digital pequeno. Instalei um fita de LED e gostaria que ele tocasse no ritmo da música, inclusive já tenho a placa, só que não consigo mais fazer com que ela pisque depois que coloquei esse módulo digital, você tem alguma sugestão?

    1. Olá Daniel,

      Que módulo você está usando?

      Abraço!
      Rosana – Equipe MakerHero

  21. Olá fiz todas as ligações mas meu led não acendeu, poderia me ajudar

    1. Olá Rayanne!

      Você já mexeu com Arduino? Se esse é seu primeiro contato sugiro seguir esse tutorial antes: https://www.makerhero.com/blog/primeiros-passos-com-arduino/
      Qualquer coisa entre novamente em contato com a gente!

      Abraço!
      Rosana – Equipe MakerHero

  22. Boa tarde! Ficou muito legal!
    Teria como fazer 12 fresnel com halogenas de 1000W piscar dessa mesma maneira?

    1. Olá Tiago,

      Não recomendo. Pode estragar as halogenas.

      Abraço!
      Rosana – Equipe MakerHero

  23. Eu consigo usar esse circuito para controlar lâmpadas coloridas em uma tensão maior ?

    1. Olá Tom,

      Para acionar uma lâmpada LED utilizando esse circuito você deverá utilizar um relé.

      Abraços,
      Rosana – Equipe MakerHero

  24. bom dia como meto os leds só a acender só quando o sensor detectar a música e também como por a trocar de cores.

    obrigado abraço

    1. Olá Cristiano,

      Para mudar a cor dos LEDs, você precisa alterar os valores da linha 35 do código.

      pixels.setPixelColor(i,pixels.Color(r, g, b));

      Exemplo:
      pixels.setPixelColor(i,pixels.Color(255, 0, 0)); -> você terá o cor vermelha
      pixels.setPixelColor(i,pixels.Color(0, 255, 0)); -> você terá o cor verde
      pixels.setPixelColor(i,pixels.Color(0, 0, 255)); -> você terá o cor azul

      Acredito que isso te ajude.
      Abraços,

      Rosana – Equipe MakerHero

      1. Boa tarde ajudou bastante queria saber se dava para quando o sensor não captar som os LEDs se desligasse

        1. Olá,

          Você pode dar um comando “if” para que os LEDs não acendam quando o valor detectado pelo sensor for menor que um valor estipulado.

          Abraço,
          Rosana – Equipe MakerHero

  25. olá, eu gostei do seu projeto, porém eu tenho uma dúvida, seria possível fazer com que os leds tivessem uma mudança de cor conforme a altura da música? por exemplo, a música está baixa, os leds estão verdes, a música fica um pouco mais alta e os leds ficam amarelos, depois laranjas e quando o som estiver muito alto fique vermelho.
    seria possível fazer? desde já agradeço.

    1. Olá Habner!

      É possível sim, teria que colocar uma estrutura com ifs, tipo:
      if(som >= 0 )…

      Parecido com o que tem neste post:
      https://www.makerhero.com/blog/medidor-de-indice-uv-com-arduino/

      Abraços!

      André – Equipe MakerHero

      1. Muito Obrigado pela dica, irei trabalhar em cima do código 🙂

  26. Boa noite,

    Primeiro, gostaria de agradecer pelo seu trabalho, gostaria tirar uma dúvida, que é o uso de uma fita led SMD 5050 de 5M que vai utilizar uma fonte de 7,5A (se o calculo estiver correto), porém, quero usar esse led em um arduino nano e alimentar esse Arduíno com a fonte de 7,5A com um relé de 10A e 250V AC e 30V DC para entrada da fonte e saída de 10A e 125V AC / 28V DC para alimentar a placa, fita e componente que identifica som. Então a dúvida é, se esse circuito que descrevi vai alimentar a placa com a fita e o módulo detector de som?

    Obrigado!

    1. Olá Rodrigo!

      Não entendi muito bem a função do relé nesse circuito. Mas a princípio é possível alimentar todo mundo com essa tensão.

      Fico bastante feliz que gostou do post 🙂

      Abraços!

      André – Equipe MakerHero

  27. “É 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.”
    Poderia explicar com outras palavras??

    1. Olá!

      Você tem que mexer nessa seção do código e ajustar de forma com que melhor se adeque:
      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

      Você pode tentar vários números para dividir a variável “som” e passar para a brilho.

      Abraços!

      André – Equipe MakerHero

  28. O vídeo está fora do ar, existe outro link?

  29. Ola, boa noite, ótimo trabalho, gostaria de tirar uma duvida! , gostaria de saber se e possível fazer um emissor de áudio MP3 por Bluetooth para ser recebido o mesmo áudio em outro dispositivo?

    1. Olá Paulo!

      Obrigado pelos elogios! Foi um projeto que curti bastante de fazer.

      Nesse post falamos sobre receber um áudio bluetooth:
      https://www.makerhero.com/blog/caixa-de-som-amplificador-de-audio-bluetooth/

      Abraços!

      André – Equipe MakerHero

  30. Amigo, eu conseguiria usar essa logica em 15m de fitas led ws2812 ou w2812ws??

    1. Olá!

      Consegue, sim. A lógica é a mesma, o acionamento só que é diferente.

      Abraços!

      André – Equipe MakerHero

  31. Bom dia !
    Se eu usar o sensor de som KY-038, em um cubo 4x4x4 com arduino uno consigo fazer que o cubo acompanhe uma música ?

    1. Olá Edvaldo!

      O cubo é feito de LEDs?

      Basta alterar a intensidade da luz desse cubo de acordo com a intensidade percebida com o sensor de som.

      Abraços!

      André – Equipe MakerHero

  32. 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

    1. Olá Adalberto!

      Essa peça se chama protoboard. Você conecta os cabos à ela.

      Pode usar a quantidade que a sua placa suportar, sem problemas.

      Abraços!

      André – Equipe MakerHero

  33. 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?

      Abraços!

      André – Equipe MakerHero

  34. 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 MakerHero

  35. 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.

      Abraços!

      André – Equipe MakerHero