马上注册(开思网用户可以直接登录),结交更多创客好友,享用更多功能,让你轻松玩转创客社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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检测电压,是不能把引脚悬空,必须接到某个接口上,一旦悬空只能随机返回一些数字回来!
|