Ето една програма направена за две минути-copy/paste от примера BlinkWithoutDelay!!!
#include <LiquidCrystal.h>
int sekund =0;
int minutes =0;
int hour =0;
int hour2 =0;
int day =0;
long previousMillis = 0;
long interval = 999;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(20, 4);
lcd.setCursor(0, 0);
lcd.print("Timer");
lcd.setCursor(0, 1);
lcd.print("Day:");
}
void loop()
{
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
sekund = sekund++;
if (sekund>59) {
sekund=0;
minutes=minutes+1;
}
if(minutes>59){
minutes=0;
hour=hour+1;
}
if(hour>24)
{
hour=0;
day=day+1;
}
if(sekund <= 9){
lcd.setCursor(6, 2);
lcd.print("0");
lcd.setCursor(7, 2);
lcd.print(sekund);
}else{
lcd.setCursor(6, 2);
lcd.print(sekund);
}
if(minutes <= 9){
lcd.setCursor(3, 2);
lcd.print("0");
lcd.setCursor(4, 2);
lcd.print(minutes);
}else{
lcd.setCursor(3, 2);
lcd.print(minutes);
}
if(hour <= 9){
lcd.setCursor(0, 2);
lcd.print("0");
lcd.setCursor(1, 2);
lcd.print(hour);
}else{
lcd.setCursor(0, 2);
lcd.print(hour);
}
lcd.setCursor(4, 1);
lcd.print(day);
lcd.setCursor(2, 2);
lcd.print(":");
lcd.setCursor(5, 2);
lcd.print(":");
}
}
Имай едно на ум, че процесора губи време да опреснява LCD и затова в моят случай long interval е 999ms!!!
И въпреки това пак ще има минимална грешка, няма да е швейцарски часовник, но все пак пилетата не се излюпват на 21-я ден в точно определен час, минута и секунда.......