我无法弄清楚为什么digitalRead()的返回值为0(LOW),即使使用下面的代码也是如此。
有什么想法吗?
void setup(){
Serial.begin(9600);
pinMode(4,INPUT);
}
void loop(){
digitalWrite(4,HIGH);
Serial.println(digitalRead(4));
}
由于
答案 0 :(得分:1)
根据http://arduino.cc/en/Tutorial/DigitalPins处的Arduino数字引脚文档,输入引脚上的digitalWrite(4,HIGH)不会设置引脚的电平。由于pinMode(4,INPUT),digitalWrite(4,HIGH)打开引脚4上处理器的内部上拉电阻。
digitalRead(4)将显示HIGH或LOW,具体取决于您连接到引脚4的内容。如果没有连接到引脚4,则digitalRead(4)应始终返回HIGH,因为digitalWrite(4,HIGH)连接了内部上拉电阻器。
所以问题出在连接到Arduino的电路中;这不是软件问题。我建议您按照@ouah的建议,使用万用表,示波器或逻辑笔查找引脚4上的电压,然后调试连接到引脚4的电路,找出该引脚为低电压的原因。
另外,我建议您在pinMode(4,INPUT)之后立即将digitalWrite(4,HIGH)移至setup(),因为它正在配置引脚,并且只需要执行一次。