设为首页收藏本站

[基础教程] Arduino教程中级 前奏3 从串口中认识“数字”与“模拟”

Jane 发表于 2015-9-6 16:13:08 | 显示全部楼层 [复制链接]
10 14650
前奏3 从串口中认识“数字”与“模拟”

本系列教程配套硬件套件新版Arduino中级套件


前面我们只是对Arduino是如何工作的有了一定的了解,知道了首先需要搭建一个“身体”,也就是整个硬件设备。然后需要“思想”,也就是代码去控制它的大脑(Arduino)。“身体”如何工作的,信号就是他们的“血液”。信号分为两种——数字信号与模拟信号。这一节,我们可以更直观的看到数字信号与模拟信号的区别。

数字信号   
    我们选用一个数字量的传感器来作为例子——数字按钮模块。   

所需材料:

  •    1× DFduino UNO R3(以及配套USB数据线)
image001.jpg


  •        1×  IO传感器扩展板 V7.1

image004.jpg


  •        1×  数字大按钮模块

image005.jpg


硬件连接
首先,从我们的套件中取出IO 传感器扩展板V7.1,把扩展板直接插到UNO上,注意UNO与扩展板的上下引脚一一对应,不要错位。找到数字大按钮模块,直接连接到数字引脚2,需要注意传感器的线序与扩展板上对应。下图为连接的示意图。

完成连接后,给Arduino接上USB数据线,供电,准备下载程序。

image008.jpg

图2-1 数字信号示例
串口监视器效果
打开Arduino IDE,选择菜单中的文件(File) -- 示例(Examples) -- 01 Basics – DigitalReadSerial 代码。 代码如下:

  1. int pushButton = 2;             // 连接到数字引脚2
  2. void setup() {                   //初始化函数
  3. Serial.begin(9600);            //设置串口波特率
  4. pinMode(pushButton, INPUT);    //设置按键为输入模式
  5. }
  6. void loop() {                              // 主函数
  7. int buttonState = digitalRead(pushButton);     //读取数字引脚2的状态
  8. Serial.println(buttonState);             //串口打印出引脚2的状态
  9. delay(1);                             //延时1ms
  10. }
复制代码


单击“下载(UpLoad)”,给Arduino下载代码。成功下载完程序后,打开Arduino IDE的串口监视器。


image009.png

设置串口监视器的波特率为9600。
image012.jpg


可以直接从串口读取按钮的状态。按钮没按下的时候,串口显示为“0”,一旦被按下,串口显示为“1”。


image013.png

   


模拟信号
我们选用一个模拟量的传感器来作为例子——模拟角度传感器。   


所需材料:
l  1×  模拟角度传感器

image016.jpg

*之后的项目将不重复罗列UNO与I/0传感器扩展板,但是!每次都还是需要用到的。

硬件连接

拔下前面使用的按键,换成模拟角度传感器,直接连接到扩展板的模拟口0。完成连接后,给Arduino接上USB数据线,供电,准备下载程序。

image017.jpg

图2-1 数字信号示例
输入代码

打开Arduino IDE,选择菜单中的文件(File) -- 示例(Examples) -- 01 Basics – AnalogReadSerial 代码。 代码如下:

  1. void setup() {                     //初始化函数
  2.   Serial.begin(9600);             //设置串口波特率
  3. }
  4. void loop() {                         // 主函数
  5.   int sensorValue = analogRead(A0);     //读取模拟引脚0的状态
  6.   Serial.println(sensorValue);         //串口打印出引脚0的状态
  7.   delay(1);                             //延时1ms
  8. }
复制代码



同样,单击“下载(UpLoad)”,给Arduino下载代码。成功下载完程序后,打开Arduino IDE的串口监视器。并且设置波特率为9600。
试着旋转电位器,可以看到0~1023之间的值。

image020.jpg

两者比较分析

1、串口监视器
串口监视器可以实现Arduino与电脑之间进行互动。可以显示Arduino发送到PC端的数据,还可以让电脑发送数据给Arduino。

image021.jpg    image022.jpg

从串口监视器可以明显的看出,模拟与数字的鲜明的区别。数字口输出的只有0或者1,而模拟可以输出0~1023之间的任何值。

2、代码区别
从代码可以看出,数字引脚和模拟引脚读数的方式是不同的。数字口使用digitalRead()来读取引脚状态值。而模拟口是通过analogRead()来读取引脚状态值的。其实,最简单的从英文的字面意思应该也能明白这句语句的意思了。不明白没有太大关系,我们之后几节会做详细说明。
数字:
intbuttonState = digitalRead(pushButton);     //读取数字引脚2的状态
模拟:
   int sensorValue = analogRead(A0);  //读取模拟引脚0的状态

动手试一试   
可以尝试使用套件中的其他数字传感器和模拟传感器,从串口监视器看看输出效果,是否与前面我们所做的相符。


※ 在之后的Arduino学习之旅中,不管你遇到奇奇怪怪的问题,都希望你与我们交流,欢迎登陆我们的DFRobot创客社区!

发表于 2015-9-6 17:53:02 | 显示全部楼层
这教程写的越来越精彩
回复 支持 反对

使用道具 举报

发表于 2015-9-7 10:13:05 | 显示全部楼层
hnyzcj 发表于 2015-9-6 17:53
这教程写的越来越精彩

哈哈,谢谢~
回复 支持 反对

使用道具 举报

发表于 2015-9-20 21:51:31 | 显示全部楼层
很有用的教程,赞
回复 支持 反对

使用道具 举报

发表于 2015-11-10 14:20:20 | 显示全部楼层
visionsl 发表于 2015-9-20 21:51
很有用的教程,赞

谢谢~希望分享更多作品
回复 支持 反对

使用道具 举报

发表于 2015-12-14 22:39:21 | 显示全部楼层
Jane你好,请问一下,为什么从串口监视器读取来的数字,只是变化范围不大呢,并没有从0~5
而只是大概在1.5~2.3之间呢?
回复 支持 反对

使用道具 举报

发表于 2015-12-16 18:48:45 | 显示全部楼层
powera 发表于 2015-12-14 22:39
Jane你好,请问一下,为什么从串口监视器读取来的数字,只是变化范围不大呢,并没有从0~5
而只是大概在1.5~ ...

什么传感器呀?
回复 支持 反对

使用道具 举报

发表于 2015-12-17 10:53:18 | 显示全部楼层
就是教程中一样一样的,中级套件里的数字大按钮模块
回复 支持 反对

使用道具 举报

发表于 2017-3-7 22:43:20 | 显示全部楼层
第一个代码截图的第四行的注释应该是“设置按键为输入模式”
回复 支持 反对

使用道具 举报

发表于 2017-3-24 23:21:41 | 显示全部楼层
annyu 发表于 2017-3-7 22:43
第一个代码截图的第四行的注释应该是“设置按键为输入模式”

谢谢提醒,已经修改~
回复 支持 反对

使用道具 举报

发表于 2017-3-24 23:24:21 | 显示全部楼层
powera 发表于 2015-12-17 10:53
就是教程中一样一样的,中级套件里的数字大按钮模块

按钮如果直接读值的话,应该是0-1到对的呢,你指的0-5是?
回复 支持 反对

使用道具 举报

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

本版积分规则 允许回帖同步到新浪微博  

  • 管理员
  • 4352
  • 103
  • 活跃会员

    活跃会员

  • 版主限定

    版主限定

  • 特邀作者

    特邀作者

  • 牛X认证

    牛X认证

  • 小蘑菇勋章

    小蘑菇勋章

  • 蘑菇人勋章

    蘑菇人勋章

  • 教师荣誉徽章

    教师荣誉徽章

  • 蘑菇老人勋章

    蘑菇老人勋章

推荐阅读

精华导读




公司简介| 联系我们| 小黑屋| 加入我们| 微博| 优酷| 英文网站| DF创客社区 ( 沪ICP备09038501号-4  
友情链接| 硬创邦| 花生壳社区| 模友之吧| 电子发烧友社区| 创客星球| 云汉电子社区| 电子工程网| 与非网| Arduino中文社区| 南极熊3D打印网| OneNET|

上海智位机器人有限公司  沪ICP备09038501号-4   

Powered by Discuz! X3.1

Licensed Comsenz Inc.

返回顶部 返回列表