创客联盟网

标题: Arduino小白自学教程012——Arduino引脚有个“电压表”功能+视频! [打印本页]

作者: CCFIVE    时间: 2013-7-24 22:59
标题: Arduino小白自学教程012——Arduino引脚有个“电压表”功能+视频!
上节我们学习了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即可
(, 下载次数: 54)
程序如下:
[mw_shl_code=cpp,true]void setup()
{
    Serial.begin(9600);
}
void loop()
{
    Serial.println(analogRead(A0))
    delay(1000);
}[/mw_shl_code]
(, 下载次数: 56)
大家可能对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板子上有一只眼睛在闪,那是它表示给电脑通过串口发送信息给它。这是我们打开软件的串口窗口,它就在窗口的右上方,就是那个放大镜,如图所示 (, 下载次数: 43) 打开之后,我们就可以看到 (, 下载次数: 50) 说明我们读出的是5V,这时候我们改变一下,把原本+5V和A0连接改为GND和A0连接,看下有什么效果。 (, 下载次数: 49) (, 下载次数: 48) 我们可以看到当我们插稳定后,analogRead返回的就是0,这是正确的!

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

所以这里我们也要注意下!通过analogRead检测电压,是不能把引脚悬空,必须接到某个接口上,一旦悬空只能随机返回一些数字回来!
https://player.youku.com/player.php/sid/XNTg0MTI1NDUy/v.swf






欢迎光临 创客联盟网 (https://immaker.org/) Powered by Discuz! X3.3