Arduino 如何用TM1637和冒号实现每秒闪烁的时钟?
我想实现一个带有ESP-32和TM1637 4位显示器的时钟。我现在的代码运行得很好,但当时钟到达23:00时,仍然显示一小时22。当我让时钟运行到24点钟时,显示屏上所有的部分都亮了 这是我的密码:Arduino 如何用TM1637和冒号实现每秒闪烁的时钟?,arduino,arduino-c++,Arduino,Arduino C++,我想实现一个带有ESP-32和TM1637 4位显示器的时钟。我现在的代码运行得很好,但当时钟到达23:00时,仍然显示一小时22。当我让时钟运行到24点钟时,显示屏上所有的部分都亮了 这是我的密码: /。。。 字符串时间戳; 无符号长时间NOW=0; 无符号长timeLast=0; 整小时; 整数分钟; 整数秒; int值=1244; uint8_t colonOn=0x80 | display.encodeDigit((值/100)%10); uint8_t colonOff=0x00 |
/。。。
字符串时间戳;
无符号长时间NOW=0;
无符号长timeLast=0;
整小时;
整数分钟;
整数秒;
int值=1244;
uint8_t colonOn=0x80 | display.encodeDigit((值/100)%10);
uint8_t colonOff=0x00 | display.encodeDigit((值/100)%10);
//...
显示正确性(8);
uint8_t数据[]={0xff,0xff,0xff,0xff};
显示.设置段(数据);
这是我的循环函数:
首先是一些设置
void循环()
{
timeNow=millis()/1000;
秒=timeNow-timeLast;
如果((timeNow%2)==0){
display.setSegments(&colonOn,1,1);//打开冒号
}否则{
display.setSegments(&colonOff,1,1);//关闭冒号
}
如果(秒==60){
timeLast=timeNow;
分钟+=1;
display.showNumberDec(分钟、真、2、2);
}
如果(分钟==60){
分钟=0;
小时数+=1;
display.showNumberDec(分钟、真、2、2);
display.showNumberDec(小时,真,2,0);
}
如果(小时==24){
小时=0;
resetFunc();//调用resetFunction使微控制器重新启动
}
延迟(990);
}
我发现,使用以下代码设置冒号会实现此问题:
display.setSegments(&colonOn,1,1)代码>
如果没有这条线,时钟可能会工作,但是冒号并不是每秒都出现您需要一个真正的计时器中断并退出轮询毫秒()。这是基本的东西。此外,除非您使用的是外部振荡器,否则如果您想要任何精度,您需要使用示波器校准计时器。阅读说明书——它不是那么精确,而且随温度变化很大。请阅读部件的数据表。如果您可以阅读此内容,它可以帮助您:您需要一个真正的计时器中断并退出轮询毫秒()。这是基本的东西。此外,除非您使用的是外部振荡器,否则如果您想要任何精度,您需要使用示波器校准计时器。阅读说明书——它不是那么精确,而且随温度变化很大。请阅读该零件的数据表。如果您可以阅读该数据表,则可以帮助您: