Загрузка данных


#include <Tiseg.h>

const uint8_t digitPins[] = {
  13, 12, 11, 10
};

// A, B, C, D, E, F, G, DP
const uint8_t segmentPins[] = {
  2, 3, 4, 5, 6, 7, 8, 1
};

const uint8_t BUTTON_PIN = 9;

// Это легко изменить
const unsigned long MAX_SECONDS = 60;

Tiseg<4> display(digitPins, segmentPins);
TisegTimerControl timer(BUTTON_PIN);

// Сам таймер находится прямо в скетче
unsigned long seconds = 0;
unsigned long lastSecondAt = 0;

void setup() {
  display.begin();
  timer.begin();

  // До запуска
  display.printR(0, true);   // 0000
}

void loop() {
  display.tick();
  timer.tick();


  // Первое нажатие — запуск
  if (timer.justStarted()) {
    lastSecondAt = millis();

    // При работе без ведущих нулей
    display.printR(seconds, false); // ___0
  }


  // Второе нажатие — пауза
  if (timer.justPaused()) {

    // На паузе с нулями
    display.printR(seconds, true);
  }


  // Третье нажатие — сброс
  if (timer.justReset()) {
    seconds = 0;

    display.printR(0, true); // 0000
  }


  // -------------------------
  // ЛОГИКА САМОГО ТАЙМЕРА
  // ЕЁ МОЖНО МЕНЯТЬ
  // -------------------------

  if (timer.isRunning()) {

    unsigned long now = millis();

    if (now - lastSecondAt >= 1000) {

      lastSecondAt += 1000;

      seconds++;

      // Во время работы:
      // ___1
      // ___2
      // __12
      display.printR(seconds, false);


      // Максимальное значение таймера
      if (seconds >= MAX_SECONDS) {

        seconds = MAX_SECONDS;

        // Останавливаем таймер
        timer.pause();

        // При остановке:
        // 0060
        display.printR(seconds, true);
      }
    }
  }
}