Stap 7:12 h vs. 24h tijd
Oorspronkelijk bouwde ik deze schets voor 24 uur tijd, zo 1 pm eigenlijk weergegeven als 13. Veel mensen verkiezen een 12u-klok, met AM/PM, dus ik heb de laatste schets gewijzigd daarvoor in plaats daarvan. Nu heb ik tweede gedachten, dus ik ben het toevoegen van een schakelaar om te kiezen welk formaat u wilt zien.
Eerst moeten we lezen een schakelaar om te bepalen van de indeling, dan moeten we overstappen van sommige code op basis van de resultaten van die gelezen.
Wij zullen gebruiken pin 5 voor de switch, als de Ethernet-Shield zelf gebruik pinnen 4, 10, 11, 12 & 13.
Sluit een switch tussen pin 5 en grond. U hoeft niet een pullup weerstand, omdat we het een ingebouwd in de arduino met behulp van de opdracht INPUT_PULLUP zal gebruiken.
Hier is de waarin dit probleem optreedt code zoals het er nu uitziet:
lcd.setCursor (0,0);
Als (uur() < 10) {}
LCD.Print("0"); }
Als (uur() > 12) {}
LCD.Print("0");
LCD.Print(Hour()-12); } else {}
LCD.Print(Hour()); }
LCD.Print(":");
Als (minute() < 10) {}
LCD.Print("0"); }
LCD.Print(Minute());
LCD.Print(":");
Als (second() < 10) {}
LCD.Print("0"); }
LCD.Print(Second());
Als (uur() > 12) {}
LCD.Print ("PM"); }
else {}
LCD.Print ("AM"); }
Hier is hoe de nieuwe code met de mogelijkheid te schakelen heen en weer zou uitzien:
12h_24h (bij de bovenkant van de schets voorafgaand aan void setup
int timeFormatPin = 5; switch aangesloten op digital pin 5
int timeFormatVal = 0; variabele de lees waarde op te slaan
zetten in void setup replaceing de oorspronkelijke code hierboven vermelde
lcd.setCursor (0,0);
Als (uur() < 10) {}
LCD.Print("0"); }
12h / 24h
pinMode (timeFormatPin, INPUT_PULLUP); Hiermee stelt u de digitale pin 5 als input en activeert pull up weerstand
timeFormatVal = digitalRead(timeFormatPin); Lees de invoer pin
Als (timeFormatVal == 1) {}
Als (uur() < 10) {}
LCD.Print("0");}
LCD.Print(Hour());
} else {}
Als (uur() > 12) {}
Als ((uur)-12 < 10) {}
LCD.Print("0");}
LCD.Print(Hour()-12); } else {}
LCD.Print(Hour()); }
}
LCD.Print(":");
Als (minute() < 10) {}
LCD.Print("0"); }
LCD.Print(Minute());
LCD.Print(":");
Als (second() < 10) {}
LCD.Print("0"); }
LCD.Print(Second());
Als (timeFormatVal == 1) {}
LCD.Print ("24");
} else {}
Als (uur() > 12) {}
LCD.Print ("PM"); }
else {}
LCD.Print ("AM"); }
}