Как реализовать часы с TM1637 и двоеточиями, которые мигают каждую секунду? - PullRequest
0 голосов
/ 13 апреля 2020

Я хотел бы реализовать часы с ESP-32 и 416-дюймовым дисплеем TM1637 git. Мой код в данный момент работает просто отлично, но когда часы достигают 23:00, они все равно показывают 22 часа. И когда я позволяю часам работать до тех пор, пока они не достигнут 24 часов, на дисплее загораются все сегменты.

Вот мой код:

//...

String timeStamp;
unsigned long timeNow = 0;
unsigned long timeLast = 0;
int hours;
int minutes;
int seconds;
int value = 1244;
uint8_t colonOn = 0x80 | display.encodeDigit((value / 100)%10);
uint8_t colonOff = 0x00 | display.encodeDigit((value / 100)%10);

//...

display.setBrightness(8);
uint8_t data[] = { 0xff, 0xff, 0xff, 0xff };
display.setSegments(data);

Вот моя функция l oop : Сначала некоторые настройки

void loop()
{
    timeNow = millis()/1000;
    seconds = timeNow - timeLast;

    if ((timeNow % 2) == 0) {
        display.setSegments(&colonOn, 1, 1);  // Turns the colon on
    } else {
        display.setSegments(&colonOff, 1, 1); // Turns the colon off
    }

    if (seconds == 60) {
        timeLast = timeNow;
        minutes += 1;
        display.showNumberDec(minutes, true, 2, 2);
    }

    if (minutes == 60) {
        minutes = 0;
        hours += 1;
        display.showNumberDec(minutes, true, 2, 2);
        display.showNumberDec(hours, true, 2, 0);
    }

    if (hours == 24) {
        hours = 0;
        resetFunc(); // call the resetFunction so the microcontroller restarts
    }

    delay(990);
}

Я понял, что установка двоеточия с помощью следующего кода реализует эту проблему: display.setSegments(&colonOn, 1, 1); Без этой строки часы, вероятно, работают, но затем двоеточие не работает t появляется каждую секунду

...