我在Arduino上遇到了问题。
我希望我的Arduino听一块12键的键盘输入,这很简单,已经有键盘库了。
我想在我从RTC模块读取的16X2 lcd屏幕上显示时间,每秒更新一次。这也很容易实现。
但是,当我尝试将这两项任务结合起来,制作arduino监听键盘并不断更新液晶显示屏时,就会遇到麻烦:我使用延迟(1000)告诉每秒arduino循环,这适用于在lcd上更新时间,但它以某种方式阻止了键盘监听。
这件事有什么解决方案吗?像多线程或其他聪明的解决方法?
答案 0 :(得分:0)
如何使用millis()
来控制LCD更新的间隔?
unsigned long lastRanTime;
void loop() {
if (millis() - lastRanTime >= 1000) {
// update the lcd
lastRanTime = millis();
}
// listen for the keypad
}
答案 1 :(得分:0)
Pawel建议最佳做法是在关键输入上使用中断。你可以谷歌关于中断的概念,有很多。
如果您所在的项目需要一个菜单结构,您可以在其中访问数据并触发函数,并希望通过使用框架来完成工作,我建议您使用LCDMenuLib:
它来自一个德国人。 arduino.cc论坛上的项目描述主要是德语,但是完整的代码注释和示例都是英文的。该框架将负责以非阻塞方式(带中断)显示菜单结构和处理键输入。您可以专注于触发哪些功能或在菜单页面中显示什么。