一个 digitalRead() 的问题,请问是不是板子坏了
我读取 pin4 的值, 在 pin4 没有任何动作的情况下出现如下图的状况,有时读取到的值是 1 , 不是应该一直都为 0 吗?
这是不是板子哪里出问题了?还是我出问题了?
确定 pin4 没有任何动作...
求解... 感恩谢
先贴代码, 再贴图
int val;
void setup(){
pinMode(4,INPUT);
Serial.begin(9600);
}
void loop(){
val = digitalRead(4);
Serial.println(val);
}
估计是电磁干扰 估计是电源纹波干扰 你先赋一个值,再读试试,或接个10k的下拉电阻
pinMode(4,INPUT_PULLDOWN);或者INPUT_PULLUP 不懂电子的人或许经常会出现这样的问题。我说下 原因吧,这个芯片工艺决定的。AVR是CMOS芯片,CMOS芯片有个特点,作为输入口不能悬空,如果悬空内部就不知道你输入是高电平1,还是低电平0;
CMOSTTL多余输入端处理
本文的讨论,可以使初学者能够清楚地了解在使用CMOS门电路和TTL门电路时多余输入时,应如何处理才能保证其电路的正常逻辑关系,从而保证电路的正常、稳定地工作。
一、COMS门电路CMOS门电路一般是由MOS管构成,由于MOS管的栅极和其它各级间有绝缘层相隔,在直流状态下,栅极无电流,所以静态时栅极不取电流,输入电平与外接电阻无关。MOS管在电路中是个压控元件,输入端信号易受外界干扰,不能悬空;
1、与门、与非门电路多余输入端采用高电平,即可通过限流电阻接电源;
2、或门、或非门电路多余输入端接低电平,即通过限流电阻接地;
二、TTL门电路TTL门电路一般由晶体三极管电路构成,根据TTL电路的输入伏安特性可知,当输入电压小于阀值电压,即输入低电平时输入电流比较大,一般在几百微安左右;反之则小,一般在几十微安左右。由于输入电流的存在,如果TTL门电路数端串接有电阻,则会影响输入电压。其输入阻抗特性为:当输入电阻较小时,输入电压很小,随外接电阻的增加,输入电平增大,当输入电阻大于1KΩ时,输入电平就变为阀值电压Uth即为高电平,这样及时输入端不接高电平,输入端电压也为高电平,影响了低电平的输入。 1、TTL与门、与非门电路(多种形式地接“高电平”)
a.将多余输入端接高电平,即通过限流电阻与电源相连接;
b.把多余的输入端悬空,相当于外接高电平(当外接电阻为大电阻时,其输入电压为高电平);
c.通过大电阻与地相接,相当于输入端外接高电平;
d.与使用的输入端并联使用(TTL门电路的工作速度不高,信号源驱动能力较强);
2、TTL或门、或非门
a.接低电平;
b.接地;
c.接小于1KΩ的电阻到地;
总结:通过不同方式,与门、与非门接高电平,或门或非门接低电平。 正确的做法是
1、内部上拉pinMode(4,INPUT_PULLUP);注意:5#有错误,Arduino没有内部下拉的。
2、外不上拉,就是接一个4.7K~100k的电阻到VCC(+);默认为高电平
3、外部下拉,就是接一个4.7K~100k的电阻到GND(-);默认为低电平
一般的实验用到这个的有:按键(类似开关的传感器)输入,外部中断 ATmega328P芯片内部有上拉功能 不好意思,我一直用maple的STM32
INPUT_PULLDOWN INPUT_PULLUP都有 本帖最后由 TTTTTTT33 于 2013-5-16 14:28 编辑
是電磁干擾,改成這樣接就好了,讓它強制=0。
电磁干扰, 比如微波, 还有就是板子的设计上,有些板子的设计比较符合电工学,有些板子改的ARDUINO的板子有问题,最后自身的电磁干扰导致管脚带电压, 你可以看看ARDUINO官方出的那个杂志(其实是书)里面提到了读取这些管脚的值(当然 这些空脚都是随机值) 书上是说 太空发进来的信号.哈哈 hdragon627 发表于 2013-5-16 07:41 static/image/common/back.gif
你先赋一个值,再读试试,或接个10k的下拉电阻
感谢回答..
加入外部下拉电阻 10k 後已经正常。 xmdesign 发表于 2013-5-16 08:25 static/image/common/back.gif
pinMode(4,INPUT_PULLDOWN);或者INPUT_PULLUP
感谢回答..
已经尝试使用 INPUT_PULLUP
也能解决问题, 只是加上之後变成 HIGH 了。 pgf017979 发表于 2013-5-16 08:43 static/image/common/back.gif
正确的做法是
1、内部上拉pinMode(4,INPUT_PULLUP);注意:5#有错误,Arduino没有内部下拉的。
2、外不上 ...
感谢回答得这麽详细
我会仔细拜读, 谢谢。
文内所提三种方式, 都已经测试过,都能解决问题, 谢谢 TTTTTTT33 发表于 2013-5-16 14:22 static/image/common/back.gif
是電磁干擾,改成這樣接就好了,讓它強制=0。
谢谢 还带图说明
这个外部的下拉电阻已测试过,能解决问题, 谢谢。
页:
[1]
2