7753| 7
|
[讨论] 求助, 新手对Blink的几个疑问 |
本帖最后由 ohmymymy 于 2014-10-19 14:54 编辑 Arduino uno入门套到了, 开箱以后迫不及待的试了下IDE里带的Blink.ino, 也算是arduino的helloworld了下载到板子一切正常 , 心里比当初写第一个C的helloworld还要激动, 人说不懂硬件的程序猿不是好网管!! 然后看到analogWrite, 立马就开始连线了 , 9pin 接led 串联一个10k电阻再接GND 代码是这样的 void setup(){ pinMode(9, OUTPUT); } int i=0; void loop(){ for(i=0;i<255;i++){ analogWrite(9,i); delay(10); } delay(500); for(i=255;i>0;i--){ analogWrite(9,i); delay(10); } delay(500); } 下载之后还是正常, led渐亮再渐灭, 再仔细一看, 为毛刚才blink的板子上的那个"L" (led) 常亮?!! 尝试改setup void setup(){ pinMode(9, OUTPUT); digitalWrite(13, LOW); } 还是常亮 再改setupvoid setup(){ pinMode(9, OUTPUT); pinMode(13, OUTPUT); digitalWrite(13, LOW); } 这回不亮了, 那么问题来了 , 为何会这样 , pin13 和板子上的"L" 到底是何关系? 另外引脚什么都不接也不设置pinMode的话 是否有默认值? |
程序里面什么都不设,那么管脚默认是高阻状态,管脚上面的电平不确定,因此,如果这个管脚接了个LED灯,有时确实能够点亮的,但亮度没有全点亮时亮,运气好的话,还能实现手接近arduino板子LED就亮起来的现象,这就是高阻状态导致的不确定电平引起的。其实,你用analogRead()去读一个什么都不接的模拟管脚,会出现类似随机的值,这也是刚才所述效果的一个体现。 L的电平跟随D13变化,你可以认为D13上面接了一个LED灯。实际的电路中,是用运放做成电压跟随器实现的。如果不喜欢LED灯亮起,你可以把它设置成输出模式,并且输出高电平,或者是上拉输入模式。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed