Serial.println()中1个字符的差异打破了我的按钮去抖(Arduino)

时间:2018-03-01 06:44:39

标签: arduino debounce

是的,标题没有意义,我的问题也没有意义。

(使用Arduino Uno,Eclipse作为IDE和Win 10上的Sloeber插件)

我只是想读一个简单的按键按下并使用软件去抖来清理它的信号。我按照教程:https://www.arduino.cc/en/Tutorial/Debounce

我最终会有三个按钮来阅读和去抖,但我只是想让“保存”按钮正常工作。一旦我实际打印“保存”,我应该计划添加代码写入EEPROM。那是后来的事。

我的程序进入:

'data.frame': 336 obs. of  3 variables:
 $ dateChr: chr  "01/01/2015 00:00" "01/01/2015 01:00" "01/01/2015 02:00" "01/01/2015 03:00" ...
 $ val1   : num  1.42 0.51 0.91 2.08 1.3 1.27 2.08 2.33 1.7 1.95 ...
 $ val2   : num  1.1 0.1 2.7 3.5 4 4.1 4.1 4 3.8 4.4 ...

声明只有在上一节中我将一定数量的字符打印到串行监视器上时才会声明:

//if the save reading is different to the save state
if (SaveReading!=SaveState){
  Serial.println("savereading != savestate");
  SaveState=SaveReading;
  if (SaveState==HIGH){
    Serial.println("Save");
  }
}

最初打印的所有数字都是单词,但是为了隔离WTF正在进行中,我删除了文本,直到它崩溃。我认为这取决于字符的数量,因为我合并了几个Serial.println()行,并保持字符数相同,它仍然有效。

这是否存在根本性的问题,使其依赖于打印到串行监视器的东西?自从我与Arduino混淆以来已经很久了,所以我可能会遗漏一些简单的东西。

我确实尝试使用延迟()而不是serial.println(),但这似乎不起作用,我真的不想在那里实际延迟。

我确实看到了这个Q:Arduino Serial.println weird bug

但我查了一下,我没有虽然症状看起来一样,但我有同样的问题。

任何人都能看到我错过的东西吗?我确实考虑过废弃这个并使用Bounce2库,但想想我是否可以自己做,我实际上知道发生了什么。

以下完整代码:

//if the save button is in a different state to the last saved state:
if (SaveReading!= lastSaveState){
  //reset debounce timer
  lastDebounceTime=millis();

  Serial.println("change detected");
  Serial.println("Save reading= ");
  Serial.println("1");

  Serial.println("last 123=");
  Serial.println("2");

}

0 个答案:

没有答案