Clap Lamp debounce

1

Tengo problemas con el código de mi LED de aplauso. Se enciende y apaga cuando aplaudo, pero rebota, y no puedo encontrar / encontrar una manera de solucionar este problema. Creo que sí sé por qué está sucediendo. La señal de sonido es puntiaguda y detecta más picos con una sola palmada. Estoy usando Interrupts con Arduino, porque si el código está en bucle, el aplauso es demasiado corto y no se lee. ¿Cómo resolver esto? Se adjuntan imágenes del esquema y código y se mueve digital (amarillo) al pin 2 para interrupciones.

    
pregunta user43648

1 respuesta

3

No hay necesidad de interrupciones aquí.

Primero elimine el digitalWrite de su bucle de vacío () {}.

Ahora, ponga esto en su bucle de vacío () {}:

if (digitalRead(trigger)==1) {
    state = !state;
    digitalWrite(LED,state);
    delay(1000);
}

¿Ves lo que hice? El bucle de vacío ahora es súper rápido, hasta que se detecta un sonido. En ese momento, se enciende el LED, seguido de un retraso de 1s para asegurar que el nivel de sonido disminuya por debajo del nivel de activación.

Puedes experimentar para obtener el tiempo de retardo a tu gusto.

    
respondido por el neonzeon

Lea otras preguntas en las etiquetas