此示例将向你展示如何读取模拟引脚0上的模拟输入。输入从analogRead()转换为电压,并打印输出到Arduino软件(IDE)的串口监视器。
    必需的组件
    本项目将需要以下组件:

    • 1 ×电位器
    • 1 × Arduino Uno
    • 1 × 光敏电阻模块
    • 1× 红外检测模块
    • 1× 温度检测模块

    一、用Arduino的串口读取电位器的模拟数据,并在串口显示器上显示出来
    1.电路连接
    (1)仿真图
    image.png
    (2)实物图
    1652338972(1).png
    2.Arduino代码

    1. void setup() {
    2. // 初始化串行通信速率为9600bit/s:
    3. Serial.begin(9600);
    4. }
    5. void loop() {
    6. // 读取模拟引脚A0的输入数据
    7. int DianweiqiValue = analogRead(A0);
    8. // 将模拟信号转换成电压
    9. float voltage = DianweiqiValue * (5.0 / 1023.0);
    10. // 打印到串口监视器
    11. Serial.println(voltage);
    12. }

    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中的串口监视器。
    image.png
    4.结果
    你会看到一个从0.00到5.00的稳定的数字流。当你转动电位器时,这些值会改变,对应于引脚A0上的电压。
    Quicker_20220512_090335.png
    5.实物调试
    连接实物,下载代码,观察效果。
    image.png
    二、用Arduino的串口读取光敏电阻模块的模拟数据,并在串口显示器上显示出来
    1.电路连接
    image.png
    *2.Arduino代码

    1. void setup() {
    2. // 初始化串行通信速率为9600bit/s:
    3. Serial.begin(4800);
    4. }
    5. void loop() {
    6. // 读取模拟引脚A0的输入数据
    7. int GuangminValue = analogRead(A0);
    8. // 将模拟信号转换成电压
    9. float voltage = GuangminValue * (5.0 / 1023.0);
    10. // 打印到串口监视器
    11. Serial.println(voltage);
    12. }

    3.运行结果
    image.png
    4.连接实物,下载程序,观察效果
    三、用Arduino的串口读取温度传感器模块的模拟数据,并在串口显示器上显示出来
    image.png
    2.Arduino代码

    1. void setup() {
    2. // 初始化串行通信速率为2400bit/s:
    3. Serial.begin(2400);
    4. }
    5. void loop() {
    6. // 读取模拟引脚A0的输入数据
    7. int WenduValue = analogRead(A0);
    8. // 将模拟信号转换成电压
    9. float voltage = WenduValue * (5.0 / 1023.0);
    10. // 打印到串口监视器
    11. Serial.println(voltage);
    12. }

    3.运行效果
    image.png
    4.将温度传感模块更换为红外检测模块,重复本实验
    image.png
    四、自动温度测量装置的制作
    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口读取的数据,转换为温度值,然后通过串口输出

    1. #include<math.h> //log运算,需要借助专门的数学计算函数库
    2. int WenduPin = 0;
    3. int RawADC;//定义变量,储存从A0口读取的数值
    4. double Temp;//定义变量,储存数值转换的温度值
    5. void setup()
    6. {
    7. Serial.begin(9600);//开启串口,设置通信速率
    8. pinMode(WenduPin,INPUT);//设置引脚模式
    9. }
    10. void loop()
    11. {
    12. RawADC = analogRead(WenduPin);//读取温度传感器数值
    13. Temp = log(((10240000/RawADC)-10000));
    14. Temp = 1/(0.001129148 + (0.000234125+ (0.0000000876741*Temp*Temp))*Temp);
    15. Temp = Temp - 273.15;//数值按照转换公司转换为温度
    16. Serial.print(Temp);//在串口监视器上打印温度
    17. Serial.println("C");//打印摄氏度的符号
    18. delay(500);//延时0.5s
    19. }

    2.连接电路,编写并下载程序,观察效果
    1652323233(1).png