c - Arduino计时器工作异常
问题描述
我正在制作一个 Arduino 时/分/秒计时器,但有一个问题
void loop() {
lcd.setCursor(0,1);
delay(1000);
sec++;
if (sec == 60){
sec = 0;
minute ++;
}
if(minute==60){
minute=0;
hour++;
}
lcd.print(hour);
lcd.print(" : ");
lcd.print(minute);
lcd.print(" : ");
lcd.print(sec);
lcd.print("");
}
错误视频: https ://youtu.be/2cMLli3gHRQ
直到 60 秒它才能正常工作,但 60 秒后它变成 19、29、39 ......我该如何解决?
解决方案
您必须在显示屏上打印一个额外的空格或前导零。
发生的情况是您拥有59
然后 print1
替换了5
但留下了9
:
58
59
..
19
29
..
要解决此问题,请将 1_(其中 _ 是空格)或 01(或 _1)写入显示器。
编辑:这是您新发布的代码的快速修复:
if (hour < 10) {
lcd.print(" ");
}
lcd.print(hour);
lcd.print(" : ");
if (minute < 10) {
lcd.print(" ");
}
lcd.print(minute);
lcd.print(" : ");
if (sec < 10) {
lcd.print(" ");
}
lcd.print(sec);
lcd.print("");
或者,您可以先使用 格式化缓冲区sprintf()
,然后将该缓冲区发送到 LCD。
推荐阅读
- java - Spring Cloud 与 Docker Swarm 和 Kubernetes 等编排工具的结合
- python - 排队任务的数量;如何避免全局变量?
- python - FramenetError:未知帧
- angular - 角度参考# vs ngModel
- angular - Angular 6 - 通过服务在两个组件之间传递数据
- reactjs - 当我将 Flex=1 设置为最顶层视图时,FlatList 不可见
- jquery - 将 SelectSeasonType.Html Seelct 框值发布到 AddressDate.Html,然后检查 SeasonTypeId 是否匹配
- ruby-on-rails - 如何在form.date_select中预先选择日期和月份?
- php - 在更改时使用 AJAX 更新数据库表
- angular - 无法在浏览器的 Cookie 中设置 JSON Web 令牌