Introducción
Si has vivido en los años 90, probablemente recuerdes "The Clapper". Tenían un comercial muy pegadizo... “Aplaude y apaga. ¡El badajo! . ¡Todavía tengo un Clapper en funcionamiento desde entonces y hasta hace poco lo usaba regularmente! En este tutorial haremos una versión más simple del Clapper usando el sensor de sonido digital . Este tutorial se basa en gran medida en los detalles del tutorial anterior. Entonces, si aún no lo has hecho, te animo a que mires el Empezando con el sensor de sonido digital. tutorial. La configuración física (hardware y conexiones) será idéntica. En este tutorial solo modificaremos un poco el script para reconocer cuando se hayan detectado dos aplausos sucesivos, lo que encenderá un LED.
Hardware requerido
El hardware es idéntico al del tutorial anterior, pero enumeramos la lista de materiales aquí nuevamente.
- 1X Sensor de sonido digital
- 1X Arduino Nano
- 1X NTEA-MD, ensamblado
- 3 X cables Dupont, hembra a macho
Configurando el hardware
¡Igual que el tutorial anterior!
- pin VCC en el sensor al pin 3.3V en el Nano.
- Pin GND en el sensor al pin GND en el Nano.
- Pin digital (etiquetado “fuera”) en el sensor para cosa análoga pin A3 en el Nano.
Configurando el software
En el tutorial anterior optamos por no utilizar el único pin digital disponible, D13, que estaba en el mismo lado que los pines 3.3V y GND. En su lugar, decidimos utilizar un pin analógico para mantener disponible D13. Aquí quedará claro por qué lo hicimos. Sin tener que rehacer nada de hardware ni cableado, ya que es idéntico al tutorial anterior, aquí alteraremos un poco el script para poder detectar dos aplausos sucesivos. Una vez detectado, esto encenderá el LED Nano integrado, que está controlado por el pin digital D13.
Se modifica el guión para detectar dos aplausos. Hay algunos temporizadores que configuran una bandera para garantizar que la secuencia funcione correctamente. El tiempo entre las dos palmadas debe ser de un mínimo de 100 ms, pero inferior a 4000 ms. Si el tiempo excede, reinicie la secuencia. Esa fue una única detección y el cronómetro expiró. Si dos aplausos están demasiado juntos (menos de 100 ms), el cronómetro simplemente se reinicia. Descubrí que a veces, cuando se detecta un sonido, el sensor genera un grupo de activadores. Es decir, no solo un desencadenante, sino un grupo en unos pocos pasos de tiempo. Para evitar posibles problemas, tenemos el requisito de temporizador mínimo de 100 ms.
Simplemente copie el siguiente script en el software IDE.
// Project title: "Tutorial: Making "The Clapper" with the digital sound sensor" // Date of last edit: Dec 6 2021, PTSolns // For bugs or questions please send us an email at contact@PTSolns.com // Overview: This is the script for the digital sound sensor. Set up the hardware as outlined in the tutorial. int flag_clap = 0;
int estado_LED = 0; // Realizar un seguimiento del estado del LED int estadoSensor = 1; // Salida digital del sensor temporizador prolongado sin firmar; temporizador largo_min = 100; // Tiempo mínimo entre la primera y la segunda palmada. Si el segundo aplauso ocurre antes de este tiempo, no
registrarse como un segundo aplauso, sino simplemente restablecer el cronómetro del primer aplauso. temporizador largo_max = 4000; // Tiempo máximo entre la primera y la segunda palmada. Si pasó el tiempo, reinicia flag_claps configuración nula() { modopin(A3, ENTRADA); // Recuerde, estamos usando el pin analógico A3 como pin de entrada digital. ¡Ningún problema! pinMode(LED_BUILTIN, SALIDA); // LED integrado } bucle vacío() { estadoSensor = digitalRead(A3); if (statusSensor == 0 && (flag_clap == 0 || flag_clap == 1)) { // Ingresa al bucle IF solo cuando se detecta el primer aplauso. bandera_aplauso = 1; // Primer aplauso detectado temporizador = milis(); // Inicia el cronómetro } if (flag_clap == 1 && ((millis() - timer) > timer_min)) { // Si se detecta el primer aplauso y ha pasado el tiempo mínimo. bandera_aplauso = 2; // Listo para aceptar el segundo aplauso. } if (flag_clap == 2 && ((millis() - timer) > timer_max)) { // ¡Esperó demasiado! Reiniciar bandera_aplauso = 0; } if ((statusSensor == 0) && (flag_clap == 2)) { // Si se detecta aplauso y flag_clap está listo bandera_aplauso = 0; //Restablecer la bandera para la siguiente ronda if (LED_status == 0) { // Significa que el LED está actualmente APAGADO, así que enciéndalo estado_LED = 1; escritura digital (LED_BUILTIN, ALTA); } else if (LED_status == 1) { // Significa que el LED está actualmente ENCENDIDO, así que apágalo estado_LED = 0; escritura digital (LED_BUILTIN, BAJO); } retraso(500); // Necesita un pequeño retraso entre encender y apagar el LED; de lo contrario, la secuencia de aplausos se confunde. } }
Resultados y conclusión
El vídeo muestra un par de cosas. Primero, el LED verde del sensor de sonido se enciende momentáneamente cuando se detecta el aplauso. En total, a lo largo de este video, este LED de activación se ENCIENDE cuatro veces. Además, el LED rojo integrado (controlado por D13) se enciende después de los dos primeros aplausos y luego se apaga después de los dos aplausos siguientes. Es un poco difícil de ver ya que el LED de alimentación integrado, que también es rojo, está justo al lado del LED controlado D13 que estamos cambiando. Pero si miras de cerca puedes distinguir qué LED es cuál.
Este tutorial hizo sólo una versión simple del badajo original. El badajo original no solo encendía un LED. Encendió un relé, que alimentó un tomacorriente. ¡Esto es mucho más práctico! Pero aquí presentamos sólo la prueba de concepto. Podrías agregar el relevo y divertirte con él. ¡Pero tome las precauciones adecuadas al manipular cualquier dispositivo electrónico que tenga que ver con voltajes y corrientes domésticos!
Además, la clapeta tiene dos salidas. El primero se enciende con dos aplausos y el segundo con tres. Puede ampliar fácilmente el script anterior para agregar la detección del tercer aplauso. Finalmente, el badajo también tiene una función "Ausente". Es básicamente lo mismo que el potenciómetro del sensor de sonido. Al girar el dial "Ausente" de la claqueta se cambia el umbral de detección, lo que hace que el dispositivo sea muy sensible al ruido. ¡Ahí lo tienes!
<estilo>
código{
tamaño de fuente: 13px;
}
</estilo>