找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1323|回复: 0
收起左侧

【零知ESP8266教程】快速入门8-读取模拟数值

[复制链接]
ID:349555 发表于 2019-10-14 10:02 | 显示全部楼层 |阅读模式

上次我们一起做了抢答器后,脑回路是不是特别快啦。这时候我们趁热打铁,思考一下。在前面我们一直使用的是数字引脚(比如:开发板上标注的D0、D1、D2等),但是很多情况下我们需要测量一个模拟量,比如读取某个变化的电压值,这时候就需要模拟引脚的功能了(如:A0),下面我们在电路中加入一个电位器,看看随着电位器的变化,读取到的模拟数值变化。

一、工具原料
电脑,windows系统
零知ESP8266开发板
micro-usb线
电位器
面包板一个+若干跳线

二、硬件连接

1.jpg


2.png


三、方法步骤
1、打开零知实验室软件开发工具,然后新建项目,输入以下代码:

  1. /**
  2. *    文件: 电位器测试.ino
  3. *    作者: 零知
  4. *    时间: 2018/06/25 17:59
  5. *    说明:
  6. **/
  7.   
  8. int value = 0;//读取的值
  9.   
  10. // the setup routine runs once when you press reset:
  11. void setup() {
  12.     // put your setup code here, to run once:
  13.         pinMode(LED_BUILTIN, OUTPUT);//设置板子上的LED灯引脚
  14.         Serial.begin(9600);//打开串口,可以在串口监视器中查看测量的数值
  15. }
  16.   
  17. // the loop routine runs over and over again forever:
  18. void loop() {
  19.     // put your main code here, to run repeatedly:
  20.   
  21.         value = analogRead(A0);
  22.         Serial.println(value);
  23.          
  24.         //读取一次后,我们让开发板上的LED灯闪烁一次,表示一次读取完成
  25.         digitalWrite(LED_BUILTIN, HIGH);
  26.         delay(80);
  27.         digitalWrite(LED_BUILTIN, LOW);
  28.         delay(80);
  29.          
  30.         //延时一会儿,让串口输出慢一点便于观察
  31.         delay(500);
  32. }
复制代码

2、按照之前的方式先【验证】,然后【上传】到开发板中。

四、成果展示

3.png


上面步骤成功完成后,我们就可以看到预期的结果了,打开零知开发工具的【调试】,然后我们把电位器从开始调到最大,可以看到如下数据变化。

五、扩展
在上面我们读取的数值有些人可能比较迷惑,我们现在把这些原始模拟值转换为实际的电压值,编写如下代码:

  1. /**
  2. *    文件: 电位器测试.ino
  3. *    作者: 零知
  4. *    时间: 2019/05/28 17:59
  5. *    说明:
  6. **/
  7.   
  8. int value = 0;//读取的原始模拟数值
  9. int voltage = 0;//实际电压值
  10.   
  11. // the setup routine runs once when you press reset:
  12. void setup() {
  13.     // put your setup code here, to run once:
  14.         pinMode(LED_BUILTIN, OUTPUT);//设置板子上的LED灯引脚
  15.         Serial.begin(9600);//打开串口,可以在串口监视器中查看测量的数值
  16. }
  17.   
  18. // the loop routine runs over and over again forever:
  19. void loop() {
  20.     // put your main code here, to run repeatedly:
  21.   
  22.         value = analogRead(A0);
  23.         //次函数就可以把数值进行范围映射,可以测量的最大值为4095,而我实际的最大测量电压为3.3v
  24.         voltage = map(value, 0, 1024, 0, 330);
  25.         Serial.println((float)voltage/100.00); //保留两位小数
  26.          
  27.         //读取一次后,我们让开发板上的LED灯闪烁一次,表示一次读取完成
  28.         digitalWrite(LED_BUILTIN, HIGH);
  29.         delay(80);
  30.         digitalWrite(LED_BUILTIN, LOW);
  31.         delay(80);
  32.          
  33.         //延时一会儿,让串口输出慢一点便于观察
  34.         delay(500);
  35. }
复制代码

然后重新验证代码后上传到开发板中,然后打开串口监视器可以看到当我们旋转电位器的时候,实际的电压变化:

4.png


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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