c++ - Arduino LCD 定时器显示
问题描述
我一直在尝试用 Arduino 制作一个计时器,它会在 2 小时后停止并让蜂鸣器响起。我已经成功地让计时器计数秒数增加,但现在我尝试让它显示小时和分钟并让蜂鸣器响起,感谢所有帮助,这是项目的代码和图片:
#include <LiquidCrystal.h>
LiquidCrystal lcd(1,2,4,5,6,7); // setup the lcd
#define button 3
// setup integers //
int timerMode=0;
int buzzer=8;
int wait=400;
int longWait=5000;
int startTime;
int hours=(millis() - startTime) / 360000;
void setup() {
lcd.begin(16,2); // start lcd //
lcd.clear(); // clear old text //
pinMode(button, INPUT_PULLUP); // make button an input //
pinMode(buzzer, OUTPUT); // make buzzer an output //
lcd.print("Ergo timer"); // print begin text //
}
void loop() {
lcd.setCursor(0,1);
if (digitalRead(button) == LOW){ // if button is pressed//
startTime=millis();
timerMode++;
delay(wait);
}
if (timerMode==1){ // if timermode is 1 after a button press //
lcd.setCursor(0,0);
lcd.print("Over 2 uur pause"); // print top text //
lcd.setCursor(0,5);
lcd.print( (millis() - startTime) / 1000); // print time in seconds //
lcd.setCursor(0,4);
lcd.print(":"); // print a column between //
lcd.setCursor(0,3);
lcd.print( (millis() - startTime) / 60000); // print time in minutes //
lcd.setCursor(0,2);
lcd.print(":");
lcd. setCursor(0,1);
lcd.print( (millis() - startTime) / 360000); // print time in hours //
}
if (hours == 2){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("---Nu pause---");
tone(buzzer,200,1000);
}
if (timerMode > 1){
delay(longWait);
timerMode=0;
lcd.clear();
lcd.print("---Ergo timer---");
}
解决方案
int hours=(millis() - startTime) / 360000;
是胡说八道。C++ 代码从上到下执行。每当某些变量发生变化时,程序不会神奇地重新访问以前执行的行。
这意味着这条线不会创建一些神奇的公式,hours
只要有变化就会更新。它只是创建一行代码,在启动时执行一次,当startTime
未初始化时,millis()
如果定时器外围硬件尚未设置,可能会产生废话。
您需要将此代码移动到主循环中。int
由于这是一个嵌入式系统,您还应该放弃所有幼稚的“原始数据类型”,例如stdint.h
推荐阅读
- python - different linestyle/marker for each line in my 20 lines line plot
- node.js - 为什么 Swagger UI 发送的请求中缺少 Authorization 标头?
- android - 如何在 ConstraintLayout 上设置三分之一的布局宽度百分比?
- javascript - 如何从数据库中读取密钥
- android - android中的SVG缩放问题
- vb.net - 有没有办法修复冒泡排序中的索引错误?
- php - 在 Symfony 4.4 中,DoctrineBundle 没有安装在 VM 上
- excel - 将链接的单个 excel 单元格粘贴到 powerpoint 文本中
- python - 使用 Tweepy 在流对象上使用 filter() 函数获取 401 错误
- python - 我如何设计 PyQt5 QToolBar 项目?