Arduino binära väckarklocka (7 / 16 steg)
Steg 7: Display koden
Display()-funktionen fungerar genom att kontrollera stänga om de timmarna variabel kan delas av 16, om det kan, det kommer att vända på LED som representerar 16, annars av den. Försök sedan att dela resten av tidigare uppdelningen med 8, turn 8-ledde på om det kunde delas, annars av, dela resten av det uppdelningen med 4 och så vidare. Samma process upprepas sedan i minuter men börjar vid 32 istället för 16.Display() använder de hours_p och minutes_p pekare som pekar till antingen variabler timmar och minuter, eller variablerna alarm_hours och alarm_minutes. Vad de pekar på avgörs i inställningar växlingskoden (i den buttons() funktionen). Så när strömbrytaren slås till en (larm), displayen visar automatiskt Alarmtid, och när den slås tillbaka till T (tid) visas den aktuella tiden.
____________________________________________________________________
Funktionen display():
"INRE" VARIABLER FÖR FUNKTIONEN:
int övrigt.
int led_value;
void display()
{
Display() visar den ordinarie tid eller alarmtiden,
beroende på vilken hours_p pekar på, avgörs detta
av settings_switch_state, i funktionen buttons()
Visar timmar:
resten = * hours_p;
för (int jag = 0; jag < 5; i ++) / / repetera fyra alla fem timmars-lysdioder
{
led_value = 16/round(pow(2,i)); först ledde = 16, andra = 8, tredje = 4 etc.
om (resten/led_value == 1)
digitalWrite (hour_pins [i], hög);
annat
digitalWrite (hour_pins [i], låg);
resten av timmarna sparas för
Nästa LED som visar ett lägre värde
resten = resten % led_value;
}
Visa minuter:
resten = * minutes_p;
för (int jag = 0; jag < 6; i ++) / / upprepa för alla sex minuters-lysdioder
{
led_value = 32/round(pow(2,i)); första 32, sedan 16, då 8 etc.
om (resten/led_value == 1)
digitalWrite (minute_pins [i], hög);
annat
digitalWrite (minute_pins [i], låg);
resten av protokollet sparas för
Nästa LED som visar ett lägre värde
resten = resten % led_value;
}
}
____________________________________________________________________