期望效果:仅使用代码进行逻辑循环运算,达到绝对无误差的时间显示;且为视觉效果需要TM1637中间点每秒闪烁一次。
#include//TM1637接Arduino A2、A3口 #define CLK A2 #define DIO A3 //设定初始通电时 时分秒 之后若保持通电则可一直计时 int HOUR=9; int MINUTE=34; int SECOND=50; TM1637 TM(CLK,DIO); void setup() { Serial.begin(9600); TM.init(); TM.point(0); TM.set(BRIGHT_TYPICAL); } void loop() { //四位显示 TM.display(0,HOUR/10); TM.display(1,HOUR%10); TM.display(2,MINUTE/10); TM.display(3,MINUTE%10); delay(1000); TM.point(1); if(SECOND==59) { SECOND = 0; if(MINUTE==59) { MINUTE=0; if(HOUR==23) { HOUR = 0; } else { HOUR = HOUR+1; } } else { MINUTE=MINUTE+1; } } else if(SECOND%2 == 0) { TM.point(0);//实现中间俩点闪烁的效果 SECOND = SECOND+1; } else { SECOND = SECOND+1; } }
结论:经验证代码可以达到预期效果,保持Arduino板通电一天后时间仍无误差。



