CLAPPER – ACENDENDO LED COM SENSOR DE SOM COM ARDUÍNO

Olá pessoal, hoje iremos aprender como acender um LED com o módulo sensor de som, este módulo é capaz de captar ruídos e transformá-los em sinais, estes sinais são recebidos pelo Arduino que em conjunto com outros acessórios podem acionar lâmpadas, motores ou os mais diversos equipamentos eletrônicos. Para que o LED acenda e apague faz-se necessário batermos duas palmas seguidas. Mãos aos componentes e bom trabalho !!!


COMPONENTES NECESSÁRIOS



1 Arduino Uno R3
1 Protobord
1 Resistor de 330Ω
1 LED (Qualquer cor)
1 Módulo sensor de som
Fios jumpers


CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB. Agora, pegue a protoboard, o LED, o resistor, o sensor de som e os fios jumpers e conecte-os como mostra a figura.


http://facacomarduino.info/img/proj45_orig.jpeg


Não importa se você utiliza fios de cores diferentes ou furos diferentes na protoboard, desde que os componentes e os fios estejam conectados na mesma ordem da figura. Tenha cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja nova, a superfície dos furos ainda estará rígida.
A não inserção cuidadosa dos componentes pode resultar em danos. Certifique-se de que todos os componentes estejam conectados corretamente. Quando você estiver seguro de que tudo foi conectadocorretamente, ligue seu Arduino conectando-o ao cabo USB.


AGORA VAMOS AO CÓDIGO


// Projeto 45 – Acendendo LED com sensor de som

int microfone = 7; // Pino digital ligado ao sensor de som (DO)
int led = 8; // Pino ligado ao LED

int contPalmas = 0; // Contador de Palmas
int palmasRequeridaLigaLed = 2; // Contagem para acender o LED
int palmasRequeridaDesligaLed = 2; // Contagem para apagar o LED

// Tempo máximo entre o pulso seguinte
unsigned long tempMaxSom = 1000; 
unsigned long tempMinSom = 300;  
unsigned long compriSonoro = 100; // Comprimento do som esperado
unsigned long time;
unsigned long startTime = 0;

void setup() {    
 pinMode(microfone, INPUT); // Inicia o pino do microfone como entrada
 pinMode(led, OUTPUT); // Inicia os pino do LED como saída
// Desliga LED (o LED é invertido HIGH = desliga / LOW = liga)
 digitalWrite(led, HIGH); 
}

void loop() { 
 // Inicia a contagem de tempo
 time = millis();
 // Verifica o tempo entre o pulso inicial e o seguinte
 unsigned long tempoAposPalma = time - startTime;

 if (tempoAposPalma >= compriSonoro && digitalRead(microfone) == LOW) {

 // Verifica se o pulso recebido respeita o intervalo entre 1 pulso e outro
 if (tempoAposPalma < tempMinSom || tempoAposPalma > tempMaxSom) {
   
 // Caso contrario o intervalo resetara a contagem e o tempo
 contPalmas = 0;
 startTime = millis();
 }
 else {
   
 // Iniciada a contagem de pulso e o tempo
 contPalmas ++;
 startTime = millis();
 }

 // Verifica se a contagem de palma é igual ou superior ao número... 
//esperado e se o LED esta desligado
if((contPalmas>=palmasRequeridaLigaLed-1)&&(digitalRead(led)==HIGH)){
   
 // Acende o LED e zera a contagem
 digitalWrite(led, LOW);
 contPalmas = 0;
 }

 // Verifica se a contagem de palma é igual ou superior ao número... 
//esperado e se o LED esta aceso
if((contPalmas>=palmasRequeridaDesligaLed-1)&&(digitalRead(led)==LOW)){
   
 // Desliga LED e zera contagem
 digitalWrite(led, HIGH);
 contPalmas = 0;
 }
 }

}