1

Make it possible to display time without explicit leading zeroes

This commit is contained in:
eleksir
2019-03-01 01:27:07 +03:00
parent 5440f7852a
commit f18e0a1166

View File

@@ -60,7 +60,7 @@ void setup()
bool updateWithDelays = false; // Default. Recommended
/* without it there is visual bug at 0 o'clock, and in current version of
* SevSeg' setChars() does not dots at all */
bool leadingZeros = true;
bool leadingZeros = false;
Display.begin(hardwareConfig, numDigits, digitPins, segmentPins,
resistorsOnSegments, updateWithDelays, leadingZeros);
@@ -89,7 +89,9 @@ void setup()
void loop()
{
unsigned long currentMillis = millis();
char str[4];
float d;
if (currentMillis - previousMillis >= interval)
{
previousMillis = currentMillis;
@@ -125,10 +127,31 @@ void loop()
clock.getTime();
// make blinking dot
if (dot == true) {
Display.setNumber((clock.hour * 100 + clock.minute), 2);
} else {
Display.setNumber((clock.hour * 100 + clock.minute));
if (clock.hour > 0)
{
if (dot == true)
{
Display.setNumber((clock.hour * 100 + clock.minute), 2);
}
else
{
Display.setNumber((clock.hour * 100 + clock.minute));
}
}
else
{
/* 0 o'clock is an exception, we dont want to see "00.00", we want see
* "0.00" or "0 00", so we have to use this "hack" */
if (dot == true)
{
d = float(clock.minute) / 100;
Display.setNumber(d, 2);
}
else
{
sprintf(str, "%2d%02d", clock.hour, clock.minute);
Display.setChars(str);
}
}
Display.refreshDisplay();