Ferramentas do usuário

Ferramentas do site


projeto:fita_de_leds_reativa_ao_som

Fita de LEDs reativa ao som

Status: Pronto Anos atrás
O projeto consiste numa fita de leds que é acionada conforme alguma fonte de som tem picos de intensidade. Essa fonte de som pode ser as caixas de som de uma festa, palmas ou até uma conversa.
As cores são escolhidas aleatoriamente.
Autor: Gabriel Becker

Material

  • A: Módulo sensor de som com microfone de eletreto (A3), CI LM393 (A2), potenciômetro (A1) e saída digital
  • B: Fita de LEDs RGB
  • C: Arduino
  • D: CI ULN2004
  • E: Fonte 9V
  • D: Protoboard

Fotos

Resultados


12

Etapas

O CI deve ser conectado à protoboard e em seguida a fita de Leds é conectada ao CI que apresenta uma correspondência simétrica exceto nos pinos 8 e 9. Os pinos R, G e B da fita podem ser conectados em quaisquer pinos simétricos. Os pinos do arduino são ligados ao CI obedecendo essa correspondência. O VCC da fonte é conectado ao pino 9 do CI e ao pino VIN do arduino. O ground da fonte é conectado ao arduino.
O módulo sensor de som deve ser ligado ao ground, VCC e o sinal ao pino 2 do arduino.

Funcionamento

O ci fornece à fonte um sinal proporcional de 0 a 9 volt. O arduino só fornece sinais até 5V e a fita demanda mais (9 a 12 volts) e por isso é necessário o uso desse circuito integrado.
O arduino pode ser alimentado pelo usb ou por uma fonte (de 9 a 12V). Essa alimentação pode ser feita pelo borne ou pelo pino VIN.
O módulo sensor de som envia um sinal digital para o arduino. Esse sinal será nível alto quando o sinal do microfone foi maior que um parâmetro controlado pelo potenciômetro. Assim sendo- para cada música diferente deverá ser feita uma calibragem do sensor, alterando o valor do potenciômetro.

Código

O algoritmo escolhido faz uma repetição contínua em que verifica o estado SoundState que é alterado pela “batida da música” (interrupção quando a intensidade sonora é a desejada, ajustada pelo potenciômetro). Quando o estado é alto, cores são impressas. Essas cores são escolhidas aleatoriamente na velocidade que se desejar.

#define LEDstripRED 11               // Referente ao pino Vermelho da Fita de Leds
#define LEDstripGREEN 10              // Referente ao pino Verde da Fita de Leds
#define LEDstripBLUE 9              // Referente ao pino Azul da Fita de Leds
#define SOUND 2                      // Referente à entrada do Sensor de Intensidade Sonora. Deve ser 2 ou 3 em função do uso de interrupção (para arduino Arduino Uno)
#define offDelay 5                   // Delay de varredura quando soundState está em nível lógico alto  (ligado/colorido)
#define onDelay 2*offDelay           // Delay de varredura quando soundState está em nível lógico baixo (apagado)
#define debouncingDelay 1            // Delay durante interrupção. 
#define colorChanging  50*offDelay   // Velocidade da mudanaça de cores

volatile boolean soundState = 0; // variável de comunicação de informações alteradas na interrupção
volatile  int color1 = 0 ;  // Variáveis para controlar a cor da fita de led
volatile int color2 = 0 ;
volatile int color3 = 0;

void setup()
{
  pinMode(SOUND,         INPUT_PULLUP);   // inicialiação de pino para interrupção
  pinMode(LEDstripRED,   OUTPUT);
  pinMode(LEDstripGREEN, OUTPUT);
  pinMode(LEDstripBLUE,  OUTPUT);
  attachInterrupt(digitalPinToInterrupt(SOUND), soundEvent , CHANGE);   // associar pino de interrupção (SOUND) e tipo de evento (CHANGE) com a função de tratamento (soundEvent)
}

void loop()
{
  for (int i = 0; i < colorChanging ; i++) {
    if (soundState) {   // se o nível lógico da variável for 1, a fita de leds é acesa com uma cor
      analogWrite(LEDstripRED,   color1);
      analogWrite(LEDstripGREEN, color2);
      analogWrite(LEDstripBLUE,  color3);
      soundState = 0;
      delay(onDelay);
    }
    else {       // se o nível lógico da variável for 0, a fita de led recebe metade da intensidade
      analogWrite(LEDstripRED,   0);
      analogWrite(LEDstripGREEN, 0);
      analogWrite(LEDstripBLUE,  0);
      delay(offDelay);
    }

  }
  color1 = random(155)+100;  // Variam randomicamente a cor da fita de leds
  color2 = random(185)+70;
  color3 = random(185)+70;
  //soundState=0;
  
  delay(debouncingDelay);
}

void soundEvent () { // função de tratamento de interrupção
  soundState = !soundState; // inverte sinal lógico
}

A Fazeres

  • PCB
  • Automatizar ajuste de sensibilidade
  • Criar opções de variação de cores (entre elas uma que seja sensitiva à frequência da onda sonora)

Gabriel Becker 12017/10/26 01:41

projeto/fita_de_leds_reativa_ao_som.txt · Última modificação: 2019/02/23 14:43 por gabrielbckr