- Ordenadores
- Arduino
- Cómo añadir una alarma a tu proyecto de reloj Arduino
Libro Relacionado
Por Brock Craft
Añadir una alarma es la modificación de hardware más fácil para tu proyecto de Arduino Clock. Sólo tiene que conectar la sirena piezoeléctrica. Con eso añadido, simplemente crea una función para reproducir la alarma. Añade el siguiente código en la parte inferior de tu sketch de Arduino:
void soundAlarm() { float alarmFrequency=1400; // El valor del tono de alarma en Hz período de flotación = (1.0 / alarmFrequency) * 1000000; pitido largoDuración=250000; // el tiempo en microsegundos (0.25 segundos) long elapsedTime = 0; mientras que (elapsedTime < beepDuration) { digitalWrite(piezoPin,HIGH); delayMicrosegundos(period / 2); digitalWrite(piezoPin, LOW); delayMicrosegundos(period / 2); elapsTime += (period); } digitalWrite(piezoPin, LOW); delayMicrosegundos(beepDuration); // Escuche si se presiona cualquiera de los dos botones y si es así, apague la alarma int hrs=digitalRead(incrementAlarmHrsPin); int mins=digitalRead(incrementAlarmMinsPin); si (hrs==HIGH ||| mins=HIGH){ alarm=false; }}} o (hrs=HIGH ||| mins=HIGH).
Este código utiliza la fórmula estándar para obtener el período de una frecuencia; el período es la duración de un ciclo único en un evento repetitivo y es el recíproco de la frecuencia. Usted especifica la frecuencia de su tono de alarma en hercios (Hz) y la asigna a la variable flotante alarmFrequency.
Su alarma alternará entre tocar un tono en esta frecuencia.
Dos enteros largos, beepDuration y el elapsedTime, almacenan el tiempo transcurrido que ha estado sonando el tono y la duración que desea que se reproduzca. El bucle while los utiliza para limitar el tiempo de reproducción de la nota a 0,25 segundos (beepduration).
Con el período calculado, utilice este valor para escribir rápidamente los valores ALTO y BAJO en el piezoPin. Un ciclo incluye tiempos de encendido y apagado, por lo que la cantidad de tiempo para escribir el pin ALTO y BAJO es la mitad del período total. Esto se escribe en los pines digitales utilizando:
digitalWrite(piezoPin,HIGH);delayMicrosegundos(período / 2);digitalWrite(piezoPin,LOW);delayMicrosegundos(período / 2);
La función delayMicroseconds() es la cantidad de tiempo más corta que puedes retardar el Arduino, y es necesaria para generar un tono. Una vez que se ha tocado el tono, las dos líneas siguientes crean silencio durante la misma duración, 0,25 segundos, manteniendo pulsado el botón piezoPin LOW:
digitalWrite(piezoPin, LOW); delayMicrosegundos(beepDuration);
Lo último que debe hacer es proporcionar una forma de silenciar la alarma, si pulsa cualquiera de los botones. Los números enteros locales, hrs y mins, almacenan el valor de los botones utilizados para programar la alarma. Si el botón de las horas o el botón de los minutos se pone en ALTO porque el botón fue presionado, la condición de alarma se establece en falsa. Las barras verticales | | | indican una evaluación O lógica:
int hrs=digitalRead(incrementAlarmHrsPin); int mins=digitalRead(incrementAlarmMinsPin); si (hrs===HIGH || mins==HIGH){ alarm=false; }}} (hrs==HIGH || mins=HIGH)
Whew. Eso era mucho código; pero ahora el reloj está listo para hacer su prueba. En el código, ajusta la hora de la alarma para que sea algo en el siguiente minuto más o menos; luego en código y envía el código al Arduino. Asegúrese de que el interruptor deslizante esté en la posición de armado y que se muestre su asterisco. Muy pronto, deberías tener tu alarma gratificante.
Si tiene algún problema, verifique sus conexiones. A continuación, compruebe su código para asegurarse de que es correcto.
¡Bip! ¡¡Beep!! ¡¡¡Beep!!! Es hora de darse palmaditas en la espalda para construir un reloj despertador completamente funcional desde cero!