ARDUINO引脚是否从高电平变为低电平?

问题描述 投票:0回答:2

我用这段代码来检查Arduino引脚8的状态。看看引脚是高还是低,但我的输出连续从高变低。

运行此代码时,我没有将任何内容连接到引脚8。

const int Pin = 8; 
int Reading=0;

void setup() {
  Serial.begin(9600);
  delay(2000);
  pinMode(Pin, INPUT); 
}

void loop() {
  Reading = digitalRead(Pin); 
  if(Reading == HIGH)
  {
    Serial.println("HIGH");
    delay(2000);
  }

  if(Reading == LOW)
  {
    Serial.println("LOW");
    delay(2000);
  }

}

但我的输出像这样:输出:

HIGH
HIGH
LOW
LOW
HIGH
HIGH
LOW
LOW
HIGH
HIGH
LOW
LOW
HIGH
HIGH
LOW
LOW

不知道该怎么办?

arduino arduino-uno arduino-ide electronics
2个回答
5
投票

这是正确的行为。

由于您没有连接引脚,因此读取应该是未定义的(意味着它不稳定)。检查"floating" state以了解更多信息。

如果要使其稳定,请考虑使用内部上拉电阻。改变线

pinMode(Pin,INPUT);

pinMode(Pin,INPUT_PULLUP);

断开连接时始终保持高电平。在这种情况下,当您实际尝试连接引脚时,应考虑内部上拉电阻。

The official Arduino documentation提供有关每个GPIO状态的更详细说明。


0
投票

由于内部拉升有时会增加

pinMode(Pin,INPUT_PULLUP);

不会解决问题,因此您需要在引脚和接地/电源之间添加10K或更高值的电阻,以便最初使引脚上拉或下拉。

© www.soinside.com 2019 - 2024. All rights reserved.