|
|
本帖最后由 shenhaiyu 于 2013-10-16 01:26 编辑
之前看过坛子里有关芯片内部上垃电阻的教程:
http://www.geek-workshop.com/thread-2874-1-1.html
但是今天实验的时候,发现并不适用于UNO的模拟口。
如果把上面帖子中的开关从 Pin-2 改接到 Pin-A2,代码改写为如下:
- /*
- 作者:极客工坊
- 时间:2012年12月18日
- IDE版本号:1.0.1
- 发布地址:[url]www.geek-workshop.com[/url]
- 作用:使用单片机内部上拉实现按键功能
- */
- void setup ()
- {
- pinMode(A2,INPUT_PULLUP); //将2号管脚设置为输入并且内部上拉模式
- pinMode(12,OUTPUT);
- }
-
- void loop()
- {
- int n =digitalRead(A2); //创建一个变量n,将4号数字口的状态采集出来赋值给他。
- if (n==LOW) //判断n是否为低电平,如果是执行下面的语句,不是则跳过。
- {
-
- delay(1000);
- digitalWrite(12,HIGH);
- delay(5000);
- digitalWrite(12,LOW);
-
- }
- }
复制代码
这样一点问题没有,可是如果把上面代码中的
改为:
- int n =analogRead(A2);
- Serial.println(n);
-
复制代码
那么会发现串口中输出的n值始终在1017左右变化,根本无法达到LOW的电压要求,有高手知道这是怎么回事吗?
如何才能实现模拟口的内部上拉呢 |
|