Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino 串行监视器中的读取按钮状态问题_Arduino - Fatal编程技术网

Arduino 串行监视器中的读取按钮状态问题

Arduino 串行监视器中的读取按钮状态问题,arduino,Arduino,我在arduino的一个带按钮的小程序中遇到了一些问题;我有一个代码,我从arduino页面的示例中稍加修改 代码是 const int buttonPin = 7; // the number of the pushbutton pin int buttonState = 0; void setup() { pinMode(buttonPin, INPUT); Serial.begin(9600); } void loop() { buttonState = digi

我在arduino的一个带按钮的小程序中遇到了一些问题;我有一个代码,我从arduino页面的示例中稍加修改

代码是

const int buttonPin = 7;     // the number of the pushbutton pin

int buttonState = 0;

void setup() {
  pinMode(buttonPin, INPUT);
  Serial.begin(9600);
}

void loop() {
  buttonState = digitalRead(buttonPin);
  Serial.println(buttonState);
}
也许你会遵循这个简单的想法,程序读取按钮的状态并将状态值发送给串口。 这个想法是,它会发送类似

0
0
0
0
0
0
当按钮未按下时 及

当它是

但我收到这样的东西时,它没有按下

0
0
1
0
1
1
0
0
0
1

。。。我对其他类型的输入有这个问题,但我只是想让tu解决这个问题

根据您的解释,您已将按钮连接到5V。然后,当您按下按钮时,您正在将输入连接到逻辑级别1。但当你松开按钮时,Arduin的输入没有连接到任何地方。这不是1或0逻辑级别。这就是为什么你会得到一个模棱两可的解读

你必须放一个下拉电阻器。这是一个电阻之间的输入和GND。通常,4k7电阻是可以的。然后,当松开按钮时,输入将检测到逻辑0。这也是另一种方式。按下时,您可以将按钮连接至GND,并将4k7上拉电阻器连接至逻辑1(5伏)

此外,Arduino还为其数字输入引脚增加了上拉电阻。设置输入后,可通过以下方式转动上拉电阻器:

pinMode(pin, INPUT);
digitalWrite(pin, HIGH);
然后你就不需要使用真正的电阻了。除非您实际将其连接到GND,否则该输入将始终读取1

pinMode(pin, INPUT);
digitalWrite(pin, HIGH);