Metriska klocka: Ta 2 (3 / 5 steg)
Steg 3: Kod & förklaring
Här är koden, kommenterade för din bekvämlighet:/*
Metriska klocka
Alec Robinson, annars känd som alecnotalex.
Licensierat under en Creative Commons Erkännande-IckeKommersiell-DelaLika 3.0 Unported License.
*/
#include < LiquidCrystal.h > //Used för att skriva för LCD
int beslut = 0, centi = 0, milli = 0, mikro = 0; Hålla reda på varje enheter
int setmode = 0; 0 om användaren inte anger något, 1 om användaren är inställning decidays, 2 för centidays och så vidare.
int setbutton = 3, addone = 2; Stift för knappar. setbutton ändrar setmode, addone ändras enheterna användaren är att
LiquidCrystal lcd (7, 8, 9, 10, 11, 12); Skapar ny lcd på pins 7-12
Ogiltiga inställningar)
{
LCD.BEGIN (16, 2); Börjar den 16 x 2 LCD
}
Ogiltig loop)
{
lcd.setCursor (0, 0);
LCD.Print(deci); Tryck decidays
LCD.Print(":");
LCD.Print(centi); Tryck centidays
LCD.Print(":");
LCD.Print(Milli); Tryck millidays
LCD.Print(":");
LCD.Print(Micro); Tryck microdays
lcd.setCursor (0, 1);
om (digitalRead(setbutton) == hög) //If setbutton trycks
{
setmode ++; Ändras i läge
om (setmode == 4) //Resets det om användaren har bläddrat igenom alla inställningar
{
setmode = 0;
LCD.Print(""); Rensar nedersta raden av skärmen
}
}
om (setmode > 0) //If användaren är att något
{
LCD.Print ("inställningen:");
Delay(100); För att se till att användaren inte råkar trycka på en knapp mer än en gång när de inte menar att
}
annat
{
Delay(86.4); En microday
Micro ++;
om (micro == 1000) //One milliday
{
Milli ++;
Micro = 0;
lcd.setCursor (7, 0);
LCD.Print("");
lcd.setCursor (0, 1);
}
om (milli == 10) //One centiday
{
centi ++;
Milli = 0;
}
om (centi == 10) //One deciday
{
beslut ++;
centi = 0;
}
om (beslut == 10) //One dag
{
beslut = 0;
}
}
om (setmode == 1) //When användaren är att decidays
{
LCD.Print("deci");
om (digitalRead(addone) == hög)
{
beslut ++;
om (beslut == 10) beslut = 0;
}
}
om (setmode == 2) //The användaren är att centidays
{
LCD.Print("centi");
om (digitalRead(addone) == hög)
{
centi ++;
om (centi == 10) centi = 0;
}
}
om (setmode == 3) //The användaren är att millidays
{
LCD.Print("Milli");
om (digitalRead(addone) == hög)
{
Milli ++;
om (milli == 10) milli = 0;
}
}
}