Arduino按钮状态没有保持低位



根据下面的代码,我正试图将一个简单的开关连接到Arduino,以便在模型列车集中使用。

当buttonState为高时,Serial.print(buttonState(显示111111111,然而,我遇到的问题是buttonState何时应该为低:Serial.print;闪烁";在0和1之间,类似于000111100000101000111001。

它为什么要这样做,我该如何阻止它?我以为这是连接,但当我简单地在两个端口之间使用一根电线,接通时插入,断开时拔出时,我仍然会遇到这个问题。

int RED=6;
int YELLOW=5;
int GREEN=3;
int relaytrig = 10; // trigger on pin 10
int powertoswitch = 9; // powertoswitch
int buttonPin = 12; // switch the button comms with
int buttonState = 0; 
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
// inputs
// switch input
pinMode(buttonPin,INPUT);
// outputs
// powerforswitch
pinMode(powertoswitch,OUTPUT);
// track power
pinMode(relaytrig, OUTPUT);
//signal outputs
pinMode(RED,OUTPUT);
pinMode(YELLOW,OUTPUT);
pinMode(GREEN,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(powertoswitch,HIGH);
buttonState = digitalRead(buttonPin);

if (buttonState == HIGH) {
digitalWrite(relaytrig,LOW);
digitalWrite(GREEN,LOW);
digitalWrite(RED,HIGH);
digitalWrite(YELLOW,LOW);
Serial.print(buttonState);
} else if (buttonState == LOW) {
digitalWrite(relaytrig,HIGH); 
digitalWrite(GREEN,HIGH);
digitalWrite(RED,LOW);
digitalWrite(YELLOW,LOW);
Serial.print(buttonState);
}
}

拔下插头会使输入引脚浮动,噪声等会使浮动输入引脚取任何值。

根据您的连接,您需要引脚上的下拉或上拉电阻器,使其在没有连接任何东西时为1或0。

根据代码,我假设开关线在5V(对于一些Arduino来说是3.3V(和输入引脚之间。如果我是对的,你需要把一个,比如说,10 kΩ的电阻从输入引脚接地。当没有连接导线时,这将使其保持为0。

顺便说一句,你正在使用一个IO引脚(9又名电源开关(为开关提供正极;没有必要,你也不应该。

将开关的一端连接到5 V(对于某些Arduino,连接到3.3 V(,另一端连接到输入引脚。将带电阻器的输入引脚连接到地(GND(。

这里有一张图片,但他们使用引脚2作为输入引脚,而你使用引脚12。

此外,你的按钮或电线可能需要脱落,但那是另一回事。

最新更新