此示例将向你展示如何读取模拟引脚0上的模拟输入。输入从analogRead()转换为电压,并打印输出到Arduino软件(IDE)的串口监视器。
必需的组件
本项目将需要以下组件:
- 1 ×电位器
- 1 × Arduino Uno
- 1 × 光敏电阻模块
- 1× 红外检测模块
- 1× 温度检测模块
一、用Arduino的串口读取电位器的模拟数据,并在串口显示器上显示出来
1.电路连接
(1)仿真图
(2)实物图
2.Arduino代码
void setup() {// 初始化串行通信速率为9600bit/s:Serial.begin(9600);}void loop() {// 读取模拟引脚A0的输入数据int DianweiqiValue = analogRead(A0);// 将模拟信号转换成电压float voltage = DianweiqiValue * (5.0 / 1023.0);// 打印到串口监视器Serial.println(voltage);}
3.代码说明
在下面给出的程序或草图中,在设置功能中做的第一件事是在电路板和电脑之间以9600比特每秒开始串行通信,使用以下代码:
(1)Serial.begin(9600);
在代码的主循环中,你需要建立一个变量来存储来自电位器的电阻值(其范围在0到1023之间,非常适合int数据类型):
(2)int DianweiqiValue = analogRead(A0);
要将值从0-1023更改为与引脚正在读取的电压相对应的范围,你需要创建另一个变量,一个浮点数并进行一些计算。要缩小0.0和5.0之间的数字,将5.0除以1023.0,再乘以sensorValue:
(3)float voltage= DianweiqiValue (5.0/1023.0);
最后,你需要将此信息打印到串行窗口。用最后一行代码中的Serial.println()命令:
(4)Serial.println(voltage);
现在,通过单击顶部绿色栏右侧的图标或按Ctrl+Shift+M打开Arduino IDE中的串口监视器。
4.结果
你会看到一个从0.00到5.00的稳定的数字流。当你转动电位器时,这些值会改变,对应于引脚A0上的电压。
5.实物调试
连接实物,下载代码,观察效果。
二、用Arduino的串口读取光敏电阻模块的模拟数据,并在串口显示器上显示出来
1.电路连接
*2.Arduino代码
void setup() {// 初始化串行通信速率为9600bit/s:Serial.begin(4800);}void loop() {// 读取模拟引脚A0的输入数据int GuangminValue = analogRead(A0);// 将模拟信号转换成电压float voltage = GuangminValue * (5.0 / 1023.0);// 打印到串口监视器Serial.println(voltage);}
3.运行结果
4.连接实物,下载程序,观察效果
三、用Arduino的串口读取温度传感器模块的模拟数据,并在串口显示器上显示出来
2.Arduino代码
void setup() {// 初始化串行通信速率为2400bit/s:Serial.begin(2400);}void loop() {// 读取模拟引脚A0的输入数据int WenduValue = analogRead(A0);// 将模拟信号转换成电压float voltage = WenduValue * (5.0 / 1023.0);// 打印到串口监视器Serial.println(voltage);}
3.运行效果
4.将温度传感模块更换为红外检测模块,重复本实验
四、自动温度测量装置的制作
1.重要提示
在本例中,从A0口输出的是电压值(范围0~5V),程序获得的是数值(对应0~1024),数值与温度的对应关系,由元器件的特性决定,经查阅资料,本模块的温度与数值的对应关系为:
Temp = log(((10240000/RawADC)-10000));
Temp = 1/(0.001129148 + (0.000234125+ (0.0000000876741TempTemp))*Temp);
Temp = Temp - 273.15;
因此,本例需要将从A0口读取的数据,转换为温度值,然后通过串口输出
#include<math.h> //log运算,需要借助专门的数学计算函数库int WenduPin = 0;int RawADC;//定义变量,储存从A0口读取的数值double Temp;//定义变量,储存数值转换的温度值void setup(){Serial.begin(9600);//开启串口,设置通信速率pinMode(WenduPin,INPUT);//设置引脚模式}void loop(){RawADC = analogRead(WenduPin);//读取温度传感器数值Temp = log(((10240000/RawADC)-10000));Temp = 1/(0.001129148 + (0.000234125+ (0.0000000876741*Temp*Temp))*Temp);Temp = Temp - 273.15;//数值按照转换公司转换为温度Serial.print(Temp);//在串口监视器上打印温度Serial.println("C");//打印摄氏度的符号delay(500);//延时0.5s}
2.连接电路,编写并下载程序,观察效果
