我用这段代码来检查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
不知道该怎么办?
这是正确的行为。
由于您没有连接引脚,因此读取应该是未定义的(意味着它不稳定)。检查"floating" state以了解更多信息。
如果要使其稳定,请考虑使用内部上拉电阻。改变线
pinMode(Pin,INPUT);
至
pinMode(Pin,INPUT_PULLUP);
断开连接时始终保持高电平。在这种情况下,当您实际尝试连接引脚时,应考虑内部上拉电阻。
The official Arduino documentation提供有关每个GPIO状态的更详细说明。
由于内部拉升有时会增加
pinMode(Pin,INPUT_PULLUP);
不会解决问题,因此您需要在引脚和接地/电源之间添加10K或更高值的电阻,以便最初使引脚上拉或下拉。