大数跨境
0
0

【Arduino中级系列教程】从串口中认识“数字”与“模拟”

【Arduino中级系列教程】从串口中认识“数字”与“模拟” DF创客社区
2020-11-19
1
导读:今天的课程依然是前奏篇,下周开始点灯!

【点击上方「蓝字」关注DF,一起成为技术颜控!】

上一课:前奏1 是什么让东西“活”起来了

友情提示:搭配Gravity:新版Arduino中级套件食用更佳!

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

数字信号

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

所需材料:

  • 1× DFduino UNO R3(以及配套USB数据线)
  • 1×  IO传感器扩展板 V7.1
  • 1×  数字大按钮模块

硬件连接

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

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

串口监视器效果

选择菜单中的文件(File) -- 示例(Examples) -- 01 Basics – DigitalReadSerial 代码。

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

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

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

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

模拟信号

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

所需材料

  • 1×  模拟角度传感器

硬件连接

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

输入代码

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

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

同样,单击“下载(UpLoad)”,给Arduino下载代码。成功下载完程序后,打开Arduino IDE的串口监视器。并且设置波特率为9600。

试着旋转电位器,可以看到0~1023之间的值。

两者比较分析

串口监视器

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

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

代码区别

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

数字:

int buttonState = digitalRead(pushButton);        //读取数字引脚2的状态

模拟:

int sensorValue = analogRead(A0);        //读取模拟引脚0的状态

动手试一试

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

- END -

小伙伴们在之后的Arduino学习之旅中,不管你遇到奇奇怪怪的问题,都希望你与我们交流,你可以选择登陆我们的DFRobot创客社区!mc.dfrobot.com.cn 发帖提问!

也可以加我们的Arduino官方群:369301430,大家一起交流学习。

硬件军火库


DFRduino UNO R3


点击了解详情👆


大家有什么想法,或是对文章的指正,都欢迎在下方留言

学有余力的小伙伴,可以点击阅读原文,到社区继续学习!




 往期回顾 



▼ Arduino基础系列教程


点击阅读👆

【声明】内容源于网络
0
0
DF创客社区
我们是专注于创新和开源硬件开发的公司——DFRobot成立的创客社区,无论你是资深创客还是小白,这里都有你的一席之地。一个人玩自己的项目,你只是寂寞宅;一群人看你玩项目,你就是技术牛!快来分享你的项目吧!
内容 1282
粉丝 0
DF创客社区 我们是专注于创新和开源硬件开发的公司——DFRobot成立的创客社区,无论你是资深创客还是小白,这里都有你的一席之地。一个人玩自己的项目,你只是寂寞宅;一群人看你玩项目,你就是技术牛!快来分享你的项目吧!
总阅读2.1k
粉丝0
内容1.3k