Arduino开关按钮
我有一个简单的Arduino项目,2个按钮和面对一个奇怪的情况,在开始状态的按钮是0,但在点击按钮和释放状态变成1很长一段时间后,然后回到0,请什么是错误的 代码: 在开头,值是:Arduino开关按钮,arduino,Arduino,我有一个简单的Arduino项目,2个按钮和面对一个奇怪的情况,在开始状态的按钮是0,但在点击按钮和释放状态变成1很长一段时间后,然后回到0,请什么是错误的 代码: 在开头,值是: BTN1状态:0 BTN2状态:0 . . 但点击按钮1并释放按钮1后,需要很长时间才能返回到0,输出如下: BTN1状态:1 BTN2状态:0 BTN1状态:1 BTN2状态:0 BTN1状态:1 BTN2状态:0 BTN1状态:1 BTN2状态:0 BTN1状态:1 BTN2状态:0 BTN1状态:1 BTN
BTN1状态:0
BTN2状态:0
.
.
但点击按钮1并释放按钮1后,需要很长时间才能返回到0,输出如下:
BTN1状态:1
BTN2状态:0
BTN1状态:1
BTN2状态:0
BTN1状态:1
BTN2状态:0
BTN1状态:1
BTN2状态:0
BTN1状态:1
BTN2状态:0
BTN1状态:1
BTN2状态:0
BTN1状态:1
BTN2状态:0
BTN1状态:1
BTN2状态:0
BTN1状态:0
BTN2状态:0
BTN1状态:0
BTN2状态:0
BTN1状态:0
BTN2状态:0
BTN1状态:0
BTN2状态:0
BTN1状态:0
BTN2状态:0
您的设计存在的问题是,当没有按下按钮时,您的I/O引脚没有连接到任何东西。这导致它们的值有点“浮动”,这意味着它们在1和0之间跳跃。通常,您会通过高值电阻器(即10K欧姆)将I/O引脚直接连接到+5v,然后通过按钮将I/O引脚连接到接地。这样,当您在不按下按钮的情况下读取引脚时,您会得到+5v的固态电压(由于电阻器的原因,几乎没有任何电流),但当您按下按钮时,您会对地短路(通过电阻器)并获得固态0v。这将为您提供一个非常干净的“开”和“关”,其中您按下的按钮状态为0v Arduinos很酷,因为它们在主板上内置了+5v的电阻。您只需使用
pinMode(pinBUTTON,INPUT\u PULLUP)打开它们代码>。我已经包括了什么样的电路布局应该在上面的设计
使用arduinos时需要记住的一件重要事情是,您必须始终设置pinModes。这是一个容易忘记的步骤,arduino在没有它的情况下会“有点”工作,但它是项目中常见的奇怪结果来源
const int pinBUTTONONE = 2;
const int pinBUTTONTWO = 4;
void setup(){
pinMode(pinBUTTONONE, INPUT_PULLUP);
pinMode(pinBUTTONTWO, INPUT_PULLUP);
}
void setup(){
if(digitalRead(pinBUTTONONE) == LOW){
// Execute button one pressed code.
}
if(digitalRead(pinBUTTONTWO) == LOW){
// Execute button two pressed code.
}
}
现在我不能拍照了,因为我离开了膝盖,但是代码中有错误吗?readDigit()
看起来像什么?这是简单的digitalRead()
?你的地面似乎与任何东西都没有联系。另外,您是否尝试过使用输入上拉(例如,pinMode(BTN1\u PIN,INPUT\u PULLUP);
)?它是digitalRead,但我错写了ReadDigital。在上拉/下拉电阻上读——上面的链接很有用,谢谢(蒂姆·卡瓦诺),我已经解决了这个问题,我在输入引脚(2和GND)之间添加了其他电阻100oh以及输入引脚(4和GND)之间。
const int pinBUTTONONE = 2;
const int pinBUTTONTWO = 4;
void setup(){
pinMode(pinBUTTONONE, INPUT_PULLUP);
pinMode(pinBUTTONTWO, INPUT_PULLUP);
}
void setup(){
if(digitalRead(pinBUTTONONE) == LOW){
// Execute button one pressed code.
}
if(digitalRead(pinBUTTONTWO) == LOW){
// Execute button two pressed code.
}
}