在Arduino中同时在LCD上监听键盘输入和更新时间

时间:2015-11-09 02:49:08

标签: arduino

我在Arduino上遇到了问题。

  1. 我希望我的Arduino听一块12键的键盘输入,这很简单,已经有键盘库了。

  2. 我想在我从RTC模块读取的16X2 lcd屏幕上显示时间,每秒更新一次。这也很容易实现。

  3. 但是,当我尝试将这两项任务结合起来,制作arduino监听键盘并不断更新液晶显示屏时,就会遇到麻烦:我使用延迟(1000)告诉每秒arduino循环,这适用于在lcd上更新时间,但它以某种方式阻止了键盘监听。

    这件事有什么解决方案吗?像多线程或其他聪明的解决方法?

2 个答案:

答案 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:

https://github.com/Jomelo/LCDMenuLib

它来自一个德国人。 arduino.cc论坛上的项目描述主要是德语,但是完整的代码注释和示例都是英文的。该框架将负责以非阻塞方式(带中断)显示菜单结构和处理键输入。您可以专注于触发哪些功能或在菜单页面中显示什么。