创客联盟网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

开思网在线3D打印服务
查看: 20372|回复: 0
打印 上一主题 下一主题

Arduino小白自学教程012——Arduino引脚有个“电压表”功能+视频!

[复制链接]
跳转到指定楼层
楼主
发表于 2013-7-24 22:59:11 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

马上注册(开思网用户可以直接登录),结交更多创客好友,享用更多功能,让你轻松玩转创客社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
上节我们学习了digitalRead,它可以返回HIGH和LOW,那Arduino有没有可以返还一个电压值的呢?答案是有的!
它就是analogRead,他可以把电压给读出来,但是它的电压量程只有0-5V,但是它有个特别的地方就是,例如你给一个5V的电源它测,它不是返回“5”而是返回1023,这个跟我们之前学的analogWrite有点相同,用analogWrite输出5V我们不是写5V而是编写255(如果忘了请回去前面那节好好复习)

analogRead把0-5V分别映射到0-1023,例如analogRead返回一个数字1000,那它实际测的是多大的电压呢?电压X=(1000/1024)*5=4.8828…这样明白了吗?
好了我们看下analogRead(X)是怎样用:
X只能填写A0-A7,以为只有A0-A7的引脚能检测电压,其他的则不能,所以要注意下!
看下我们的接法:
我们直接把+5V接到A0即可

程序如下:
[mw_shl_code=cpp,true]void setup()
{
    Serial.begin(9600);
}
void loop()
{
    Serial.println(analogRead(A0))
    delay(1000);
}[/mw_shl_code]

大家可能对Serial.begin(9600);Serial.println(analogRead(A0));感觉到新奇

其实这个Serial就是串口,用了它我们的AI就能与电脑通讯的,因为analogRead(A0)返回来的是0-1023的数字,我们只能让它显示出来,而不像digitalRead返回的是高低电平,我们可以让LED的亮灭给表示出来了(当然你也可以用LED的亮度表示,但是不直观)。

Serial.begin(9600);的意思就是初始化串口,速率就是9600,这个我们一般不改动,我们记住这个语句就好了,以后都是这样用的。

Serial.println(X)是让串口打印什么出来,X即为数字,如果你想打印字母的话,你要记得加双引号””
例如Serial.println("I Love AI"); 我们按编译下载,这是我们可以看到AI板子上有一只眼睛在闪,那是它表示给电脑通过串口发送信息给它。这是我们打开软件的串口窗口,它就在窗口的右上方,就是那个放大镜,如图所示 打开之后,我们就可以看到 说明我们读出的是5V,这时候我们改变一下,把原本+5V和A0连接改为GND和A0连接,看下有什么效果。 我们可以看到当我们插稳定后,analogRead返回的就是0,这是正确的!

哎哟,为什么还会有个302呢?这是因为我们拔开线还没插到GND是检测到的空气中的,例如A0什么都不接的话,它就会随机返回一些数,大家可以拔掉线试一试,不过那些数据返回是有规律的,总体呈现一个正弦波,具体原理这里就不细说了,有兴趣的同学找找资料。

所以这里我们也要注意下!通过analogRead检测电压,是不能把引脚悬空,必须接到某个接口上,一旦悬空只能随机返回一些数字回来!


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|创客联盟网  

GMT+8, 2024-12-22 15:48 , Processed in 0.030906 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表