Arduino Internet tid klienten (7 / 10 steg)
Steg 7:12 h vs 24h tid
Ursprungligen byggde jag denna skiss för 24h tid, så 1 pm faktiskt visas som 13. Många föräldrar föredrar en 12h klocka, med AM/PM, så jag ändrade den slutliga skissen för det istället. Nu har jag andra tankar, så jag lägger till en switch för att välja vilket format du föredrar att se.
Först, vi behöver läsa en switch för att bestämma format, så vi behöver byta några kod baserad på resultaten av att läsa.
Vi kommer att använda stift 5 för växeln, som Ethernet Shield själv använder stift 4, 10, 11, 12 och 13.
Anslut en växla mellan stift 5 och marken. Du behöver inte en pullup motstånd, som vi kommer att använda en inbyggd i arduino med kommandot INPUT_PULLUP.
Här är drabbade koden som det ser ut nu:
lcd.setCursor (0,0);
om (hour() < 10) {
LCD.Print("0"); }
om (hour() > 12) {
LCD.Print("0");
LCD.Print(Hour()-12); } annat {
LCD.Print(Hour()); }
LCD.Print(":");
om (minute() < 10) {
LCD.Print("0"); }
LCD.Print(Minute());
LCD.Print(":");
om (second() < 10) {
LCD.Print("0"); }
LCD.Print(Second());
om (hour() > 12) {
LCD.Print ("PM"); }
annat {
LCD.Print ("AM"); }
Här är hur den nya koden med möjlighet att växla fram och tillbaka skulle se ut:
12h_24h (på toppen av skiss innan void installationen
int timeFormatPin = 5; switch ansluten till digital stift 5
int timeFormatVal = 0; variabel för att lagra Läs värdet
sätta i void setup replaceing den ursprungliga koden ovan
lcd.setCursor (0,0);
om (hour() < 10) {
LCD.Print("0"); }
12h / 24h
pinMode (timeFormatPin, INPUT_PULLUP); Anger det digitala stiftet 5 som indata och aktiverar dra upp motstånd
timeFormatVal = digitalRead(timeFormatPin); Läs ingångsstiftet
om (timeFormatVal == 1) {
om (hour() < 10) {
LCD.Print("0");}
LCD.Print(Hour());
} annat {
om (hour() > 12) {
om (timme ()-12 < 10) {
LCD.Print("0");}
LCD.Print(Hour()-12); } annat {
LCD.Print(Hour()); }
}
LCD.Print(":");
om (minute() < 10) {
LCD.Print("0"); }
LCD.Print(Minute());
LCD.Print(":");
om (second() < 10) {
LCD.Print("0"); }
LCD.Print(Second());
om (timeFormatVal == 1) {
LCD.Print ("24");
} annat {
om (hour() > 12) {
LCD.Print ("PM"); }
annat {
LCD.Print ("AM"); }
}