#include <TM1637.h>
const int CLK = 2; // CLK连接到UON的D2引脚
const int DIO = 3; // DIO连接到UON的D3引脚
const int RESET_PIN = 4; // 复位按钮连接到UON的D4引脚
TM1637 tm(CLK, DIO); // 初始化TM1637
unsigned long currentTime = 0; // 当前时间
unsigned long lastTime = 0; // 上一次更新时间
int elapsedTime = 0; // 经过的时间(秒)
bool isPaused = false; // 计时器是否暂停
void setup() {
tm.init(); // 初始化TM1637
pinMode(RESET_PIN, INPUT_PULLUP); // 启用D4引脚的内部上拉电阻
tm.setBrightness(2); // 设置亮度为2
}
void loop() {
// 检测是否按下了复位按钮
if (digitalRead(RESET_PIN) == LOW) {
delay(50); // 延迟去抖
if (digitalRead(RESET_PIN) == LOW) {
// 复位计时器
elapsedTime = 0;
isPaused = false;
}
}
// 更新计时器
currentTime = millis();
if (!isPaused && currentTime - lastTime >= 1000) {
elapsedTime++;
lastTime = currentTime;
}
// 在数码管上显示计时器时间
int seconds = elapsedTime % 60;
int minutes = (elapsedTime / 60) % 60;
int hours = (elapsedTime / 3600) % 24;
tm.display(0, hours / 10); // 十位小时
tm.display(1, hours % 10); // 个位小时
tm.display(2, minutes / 10); // 十位分钟
tm.display(3, minutes % 10); // 个位分钟
tm.display(4, seconds / 10); // 十位秒钟
tm.display(5, seconds % 10); // 个位秒钟
}