Problemas com Código Acender Led batendo Palmas

Galera, fiz um código em C para acender palmas, o problema é que o microfone de eletreto varia muito. Ou seja tem horas que ele bate 200,3,10,5, e assim vai aleatorio.

O que percebi e que quando bato palma o monitor marca 0, então fiz o código assim, mas as vezes ele bate 0 do nada e o led acende, queria algo fixo 0 ou 1.

boolean ValorSensor;
boolean estadoLed = 0;
const int PinoSensor = 0;
const int led1 = 8;
void setup(){
pinMode(led1, OUTPUT);
Serial.begin(9600);
}
void loop(){
ValorSensor = analogRead(PinoSensor);
Serial.print("Valor do Sensor = ");
Serial.println(ValorSensor);
if (ValorSensor == 0){
estadoLed = !estadoLed ;
}
digitalWrite(led1,estadoLed);
}

Exibições: 1739

Responder esta

Respostas a este tópico

Penso que o que pretende é "capturar" o evento PinoSensor igual a zero volts; nesse caso o melhor será usar "interrupts".

Com "interrupts" o evento é detectado e é chamada uma função para tratar do mesmo.

Desculpe a perguta, mas é tipo isso mesmo que falou, quero que capture o evento.

Mas como uso o comando interrupts?

Este link é o suficiente para perceber o funcionamento:

 http://www.jeremyblum.com/2011/03/07/arduino-tutorial-10-interrupts...

Opa vlw, tentei isso e funcionou usei outro exemplo na verdade do próprio site arduino, só que mesmo assim o eletreto é muito sensivel, então acho que terei q usar um potenciometro para o valor ficar em 0 e 1 né? Como coloco este potenciometro? Tem algum exemplo para ligar, desculpe é por que sou leigo na parte eletrica...

O meu é daqueles que já vem com circuito pronto e tem uma saída 5vdc , gnd e analogica, só estou usando ele...

Talvez seja possível atenuar a saída do microfone, um potenciómetro na saída de sinal talvez funcione.

Procure na net penso que por comparação se consegue chegar lá!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço