我一直在做一个小小的温度计项目来学习Arduino,并且有一件恼人的事情,我不知道如何解决。在Arduino中读取传感器时按下按钮
我有两个按钮来设置最小和最大温度,当我按下按钮时,它应该设置最小和最大温度显示。 问题在于,在阅读温度传感器期间,当按下按钮时,有时(50%的次数)按钮不起作用。我按下它,但最低/最高温度未设置,因为Arduino卡在读取温度传感器。
解决这类问题有什么窍门吗?如果我有键盘输入某个数字,例如我想我会遇到同样的问题,而且它不是“用户友好”的。
这里是我使用的代码的一部分的例子:
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>
//variables declaration...
void setup() {
sensors.begin();
sensors.getAddress(sensor1, 0);
pinMode(buzzer, OUTPUT);
pinMode(btBuzzer, INPUT);
pinMode(btMin, INPUT);
pinMode(btMax, INPUT);
}
void loop() {
readButtons();
playBuzzer();
readTemperature();
printDisplay();
delay(150);
}
void readButtons(){
if(digitalRead(btBuzzer)){
buzzerOn = !buzzerOn;
}
if(digitalRead(btMin)){
if(tempMin == 69)
tempMin = 59;
else
tempMin++;
}
if(digitalRead(btMax)){
if(tempMax == 75)
tempMax = 63;
else
tempMax++;
}
}
void readTemperature(){
sensors.requestTemperatures();
temperature = sensors.getTempC(sensor1);
}
//lots of other methods
也许你的按钮在延迟期间?尝试删除/减少改进的延迟。或者完全删除延迟做这样的事情https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay – Sush