Stap 8: Deel 2 - de Code
Nadat de alarmtijd is ingesteld, controleert de lus voortdurend als het alarmtijdstip gelijk aan de real time met deze coderegel is:
als (alarmSetting == 1 & & alarmSecond == now.second() & & alarmMinute == now.minute() & & alarmHour now.hour() == )
Het probleem met deze lijn is dat het niet gecontroleerd op datum, zodat het alarm binnen 24 uur afgaat. Voor mijn toepassing dat is voldoende, maar als u wilt instellen van alarmen voor meer dan een dag later toevoegen een ingestelde datumfunctie.
Wanneer het alarm afgaat, loopt deze coderegel:
alarmNoiseOn(); moveLineTwo(); if(debounceIncrease == High) {}
realAnswer = mathValOne * mathValTwo + mathValThree;
moveLineOne();
Serial.Print ("Hallo!"); wakeup bericht
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 op is een Toon -functie die lussen van de zoemer in een vertrouwd "alarm "-patroon. realAnswer slaat de werkelijke antwoord dat het alarm wordt uitgeschakeld. De laatste twee functies controleren als het omhoog of omlaag knoppen zijn ingedrukt, die op zijn beurt de invoerwaarde die verandert.
Wanneer op de knop OK wordt gedrukt, wordt de code controleert als de input antwoord gelijk aan het werkelijke antwoord is:
if(digitalRead(buttonOK) == HIGH & & inputAnswer == realAnswer)
Het is noTone heet (schakelt de zoemer) als alle variabelen worden teruggesteld aan 0. Een wakeup verschijnt gedurende vijf seconden dan de wekker keert terug naar de belangrijkste tijd-menu.
delay(500);
noTone(9);
clearLCD();
alarmSetting = 0;
moveLineOne();
Serial.Print ("Goedemorgen!");
delay(5000);
MenuPosition = 0;
mathValOne = 0;
mathValTwo = 0;
mathValThree = 0;
alarmSecond = 0;
alarmMinute = 0;
alarmHour = 0;
Als de input antwoord niet gelijk (! =) naar het werkelijke antwoord, de wiskundige waarden worden opnieuw een andere willekeurige waarde, geven de gebruiker een ander probleem op te lossen.