#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);
}
}
}
}