Boas Pessoal pretendo com uma placa com microfone para arduino ligar a sua saída analógica ao arduino e detetar o som de cães a ladrar e com isso ativar um relé.
Comparando os valores de som mais altos e mais baixos do micro, mapeando-os depois crio um "delta" diference entre os sons se fo superior ou inferior a um determinado valor dispara ativa o OUTPUT.
Podem ajudar?
const int microphone = A0;
const int led = 10;
const int relay = 11;
void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT);
pinMode(relay, OUTPUT);
}
void loop() {
int mn = 1024;
int mx = 0;
for (int i = 0; i < 100; ++i) {
int val = analogRead(microphone);
mn = min(mn, val);
mx = max(mx, val);
}
int delta = mx - mn;
Serial.print("Min=");
Serial.print(mn);
Serial.print(" Max=");
Serial.print(mx);
Serial.print(" Delta");
Serial.println(delta);
delay(100);
if (delta > 200) {
digitalWrite(led, HIGH);
digitalWrite(relay, HIGH);
delay(10000);
}
else {
digitalWrite(led, LOW);
digitalWrite(relay, LOW);
}
}
Hoje já chegaram os componentes e ja testei, mas desta forma creio não ser o melhor.
Gostaria de confirmar a ação durante X tempo.
Por exemplo if (Delta >200 ou outro valor) durante 5s então ai é que faz o OUTPUT.
Seria quase como um ONDELAY.