Update display text only by interrupt or on button press
* Re-calculate displayed time only ater rtcsync or when time adjusted by buttons
This commit is contained in:
@@ -148,8 +148,6 @@ ISR(TIMER1_OVF_vect)
|
|||||||
void loop()
|
void loop()
|
||||||
{
|
{
|
||||||
unsigned long currentMillis = millis();
|
unsigned long currentMillis = millis();
|
||||||
char str[4];
|
|
||||||
float d;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Let's implement time compenstion for individual rtc module time
|
* Let's implement time compenstion for individual rtc module time
|
||||||
@@ -172,6 +170,7 @@ void loop()
|
|||||||
mysecond = clock.second;
|
mysecond = clock.second;
|
||||||
myminute = clock.minute;
|
myminute = clock.minute;
|
||||||
myhour = clock.hour;
|
myhour = clock.hour;
|
||||||
|
updateTimeStr(myhour, myminute);
|
||||||
rtcsync = false;
|
rtcsync = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -210,6 +209,8 @@ void loop()
|
|||||||
clock.setTime();
|
clock.setTime();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateTimeStr(myhour, myminute);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((currentMillis - previousLightTimer >= refresh_interval) or
|
if ((currentMillis - previousLightTimer >= refresh_interval) or
|
||||||
@@ -257,28 +258,34 @@ void loop()
|
|||||||
} else if (ambLight < 100) {
|
} else if (ambLight < 100) {
|
||||||
Display.setBrightness(-15);
|
Display.setBrightness(-15);
|
||||||
}
|
}
|
||||||
|
|
||||||
// make blinking dot
|
|
||||||
if (myhour > 0) {
|
|
||||||
if (dot) {
|
|
||||||
Display.setNumber((myhour * 100 + myminute), 2);
|
|
||||||
} else {
|
|
||||||
Display.setNumber((myhour * 100 + myminute));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
/* 0 o'clock is an exception, we don't want to see "00.00", we
|
|
||||||
want see "0.00" or "0 00", so we have to use this "hack" */
|
|
||||||
if (dot) {
|
|
||||||
d = float(myminute) / 100;
|
|
||||||
Display.setNumber(d, 2);
|
|
||||||
} else {
|
|
||||||
sprintf(str, "%2d%02d", myhour, myminute);
|
|
||||||
Display.setChars(str);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Display.refreshDisplay();
|
Display.refreshDisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void updateTimeStr(uint8_t h, uint8_t m)
|
||||||
|
{
|
||||||
|
char str[4];
|
||||||
|
float d;
|
||||||
|
|
||||||
|
// make blinking dot
|
||||||
|
if (h > 0) {
|
||||||
|
if (dot) {
|
||||||
|
Display.setNumber((h * 100 + m), 2);
|
||||||
|
} else {
|
||||||
|
Display.setNumber((h * 100 + m));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* 0 o'clock is an exception, we don't want to see "00.00", we
|
||||||
|
want see "0.00" or "0 00", so we have to use this "hack" */
|
||||||
|
if (dot) {
|
||||||
|
d = float(m) / 100;
|
||||||
|
Display.setNumber(d, 2);
|
||||||
|
} else {
|
||||||
|
sprintf(str, "%2d%02d", h, m);
|
||||||
|
Display.setChars(str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
/* vim: set filetype=cpp: */
|
/* vim: set filetype=cpp: */
|
||||||
|
|||||||
Reference in New Issue
Block a user