- Arduino Uno轻松入门48例
- 周宝善编著
- 2095字
- 2021-03-04 18:41:27
2.4 在串口监视器上显示模拟端口A0的输入值
在生活中,我们常常听人说声控、光控、人体感应,它们究竟是怎么一回事?如何用计算机显示屏显示它们的工作状态?现在,让我们进一步学习串口监视器显示实验吧!
2.4.1 实验描述
在串口监视器上显示模拟端口A0的输入值,每100ms刷新一次。
AU04A~AU04E的电路原理图、电路板图和实物图如图2.7所示。
图2.7 AU04A~AU04E的电路原理图、电路板图和实物图
图2.7 AU04A~AU04E的电路原理图、电路板图和实物图(续)
2.4.2 知识要点
1.组装与焊接
在AU04A电路板上,安装并焊接1只10kΩ的电位器和3根排针。
在AU04B电路板上,安装并焊接1只10kΩ的电阻、1只光敏电阻和3根排针。
在AU04C电路板上,安装并焊接1只1kΩ的电阻、1只热敏电阻和3根排针。
在AU04D电路板上,安装并焊接1只1kΩ的电阻、1个SS-101人体红外模块和3根排针。
在AU04E电路板上,安装并焊接2只10kΩ的电阻、1只1MΩ的电阻、1只1µF的电解电容器、1只驻极体话筒、1只9014三极管和3根排针。注:电解电容器有正负极之分,较长的引脚为正极,较短的引脚为负极;驻极体话筒也有正负极之分,引脚焊盘与外壳相连,为话筒的负极;安装三极管时,三极管半圆应与符号半圆方向一致。
2.数字端口与模拟端口
前已述及,Arduino Uno开发板带有0~13共14个数字输入/输出端口,带有A0~A5共6个模拟输入端口。数字端口可输入/输出高电平或低电平;模拟端口既可输入高电平或低电平(具体用法见2.36节),又可输入0~5V的电压,具有10位的分辨率。比如:输入0V的电压时端口返回值为0,输入5V的电压时端口返回值为1023,输入0.00488V的电压时端口返回值为1,输入2.5V的电压时端口返回值为512。
2.4.3 编程要点
1.语句val=analogRead(0);
该语句表示读出模拟端口A0的值,赋给变量val。
语法:
pin表示读取的模拟输入引脚号(0~6),返回值为整型数(0~1023),如果模拟输入引脚没有连接,返回值可能会因其他模拟端口输入或其他因素而受到干扰。Arduino Uno开发板模拟端口允许输入电压值为0~5V(注:如果输入电压值高于5V,模拟端口可能会被烧毁),对应返回值为0~1023的整数值,这表示端口识别电压精度为5V/1024个单位,每个单位对应约0.00488V(4.88mV)的电压。Arduino Uno开发板可运用analogRead函数测量电压值,测量方法如下:首先通过电阻串联电路,将测量电压转换为0~5V,并计算出换算比例,然后运用analogRead函数读取返回值,最后根据换算比例与识别精度计算出被测量的电压值。比如:被测量的电压值为12V,可用7kΩ的电阻(可由7个1kΩ的电阻串联而成)和5kΩ的电阻(可由2个10kΩ的电阻并联而成)组成电阻串联电路,换算比例为12∶5,识别精度为5V/1024个单位,如果返回值为X,那么测量的电压值U=(12X/1024)V。
2.Arduino Uno开发板模拟输入端口的编程方法
在loop函数中,定义整型变量val,读取模拟端口值并赋给变量val。
3.串口监视器打印变量数据
运用串口监视器打印变量数据,是串口监视器显示技术中的常用方法,一方面可以直观显示程序运行状态,另一方面能够直观显示变量数据的结果,用于编写、分析、调试、测试程序代码时参考使用,是学习Arduino编程应知、应会的知识。
串口监视器打印变量数据的编程方法:
第一步,在setup函数中,打开串口,设置数据传输速率为9600bps。
第二步,在loop函数中,定义整型变量val,读取模拟端口值,赋给变量val,将打印数据传输到串口,输出文本。为控制输出速度,有必要加入延时语句。具体用法见2.4.4节。
2.4.4 程序设计
(1)程序参考
(2)实验结果
代码上传成功后,单击编译器界面工具栏中的“工具”→“串口监视器”命令,串口监视器将显示模拟端口A0的输入值,每100ms刷新一次。
将AU04A电路板的排针插入Arduino Uno开发板上的5V、GND、A0端口,调节电位器的旋钮,可见串口监视器显示的数字在变化,最小值为0,最大值为1023。
将AU04B电路板的排针插入Arduino Uno开发板上的5V、GND、A0端口,挡住光敏电阻上方的光线,可见串口监视器显示的数字( );当光敏电阻上方的光线变亮时,串口监视器显示的数字( )。(选择:A.变大 B.变小 C.不变)
将AU04C电路板的排针插入Arduino Uno开发板上的5V、GND、A0端口,挡住光敏电阻上方的光线,可见串口监视器显示的数字( );用手加热热敏电阻时,串口监视器显示的数字( )。(选择:A.变大 B.变小 C.不变)
将AU04D电路板的排针插入Arduino Uno开发板上的5V、GND、A0端口,上传代码,单击编译器界面工具栏中的“工具”→“串口绘图器”命令,当人体靠近红外模块并且持续运动时,( );当人体远离红外模块或保持静止时,( )。(选择:A.串口绘图器显示幅度为0的直线 B.串口绘图器显示幅度[1]为600的脉冲曲线)。
将AU04E电路板的排针插入Arduino Uno开发板上的5V、GND、A0端口,上传代码,单击编译器界面工具栏中的“工具”→“串口绘图器”命令,当大声喊叫时,( );当环境保持安静时,( )。(选择:A.串口绘图器显示幅度大于600的脉冲曲线 B.串口绘图器显示幅度大于20、小于600的脉冲曲线 C.串口绘图器显示幅度小于20的脉冲曲线 D.串口绘图器显示幅度为0的直线)
2.4.5 拓展和挑战
将AU04A电路板的排针插入Arduino Uno开发板上的5V、GND、A0端口,调节电位器的旋钮,单击编译器界面工具栏中的“工具”→“串口监视器”命令,串口监视器显示“当前模拟端口A0的输入值为( )”(括号内为模拟端口A0的输入值),每1000ms刷新一次。(提示:增加代码Serial.print("当前模拟端口A0的输入值为 ");将延时代码改为delay(1000);。)