Paso 8: Parte 2 - el código de
Después de la hora de alarma, el bucle comprueba constantemente si el tiempo de alarma es igual al tiempo real con esta línea de código:
si (alarmSetting == 1 & & alarmSecond == now.second() & & alarmMinute == now.minute() & & alarmHour == now.hour() )
El problema con esta línea es que no comprueba por fecha, por lo que la alarma suene dentro de 24 horas. Para mi uso es adecuada, pero si desea configurar alarmas para más de un día más tarde agregar una función de la fecha establecida.
Cuando la alarma suene, ejecuta esta línea de código:
alarmNoiseOn(); moveLineTwo(); if(debounceIncrease == High) {}
realAnswer = mathValOne * mathValTwo + mathValThree;
moveLineOne();
Serial.Print ("¡ Hola!"); mensaje de activación
Serial.Print(mathValOne);
Serial.Print("*");
Serial.Print(mathValTwo);
Serial.Print("+");
Serial.Print(mathValThree);
Serial.Print ("=");
Serial.Print(inputAnswer);
Serial.Print("?");
Delay(100);
inputAnswer ++;
}
if(debounceDecrease == High) {}
inputAnswer--;
}
AlarmNoise en es una función de tono que coloca el timbre en un patrón familiar "alarma ". realAnswer almacena la respuesta real que se apagará la alarma. Las dos últimas funciones comprobar si los botones arriba / abajo que se haya pulsado, que a su vez cambia el valor de entrada.
Cuando se presiona el botón OK, el código comprueba si la respuesta de entrada es igual a la respuesta real:
if(digitalRead(buttonOK) == alto & & inputAnswer == realAnswer)
Si es así, noTone se llama (se apaga el zumbador) y todas las variables se restablecen a 0. Se muestra un mensaje de activación durante cinco segundos y luego la alarma vuelve al menú principal de hora.
Delay(500);
noTone(9);
clearLCD();
alarmSetting = 0;
moveLineOne();
Serial.Print ("¡ Buenos días!");
Delay(5000);
MenuPosition = 0;
mathValOne = 0;
mathValTwo = 0;
mathValThree = 0;
alarmSecond = 0;
alarmMinute = 0;
alarmHour = 0;
Si la respuesta de entrada no es igual (! =) a la respuesta real, entonces los valores de matemáticas se restablecen a un valor diferente al azar, dando al usuario otro problema a resolver.