我使用此代码来检查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);
}
}但是我的输出是这样的: OUTPUT:
HIGH
HIGH
LOW
LOW
HIGH
HIGH
LOW
LOW
HIGH
HIGH
LOW
LOW
HIGH
HIGH
LOW
LOW不知道该怎么办??
发布于 2019-03-13 17:02:02
这是正确的行为。
因为你没有连接引脚,所以读取应该是未定义的(意味着它不稳定)。请查看"floating" state了解更多信息。
如果你想使它稳定,考虑使用内部上拉电阻。更改线路
pinMode(引脚,输入);
至
pinMode(Pin,INPUT_PULLUP);
使其在断开时始终处于高电平状态。在这种情况下,当您实际尝试连接引脚时,应考虑内部上拉电阻。
The official Arduino documentation提供了关于每种GPIO状态的更详细的描述。
发布于 2019-03-14 18:20:25
由于内部上拉很弱,有时会添加
pinMode(Pin, INPUT_PULLUP);不会解决这个问题,所以你需要在引脚和地/电源之间添加10K或更高值的电阻,以便最初使引脚向上或向下拉。
https://stackoverflow.com/questions/55129550
复制相似问题