截图:


链接:
https://wokwi.com/projects/415345595312267265
代码:
详细注释版:AD和I2C仿真实验案例程序
cpp
#include <LiquidCrystal_I2C.h>// 定义I2C地址和LCD的行列数
#define I2C_ADDR 0x27 // I2C设备的地址,通常LCD的默认地址为0x27或0x3F
#define LCD_COLUMNS 16 // LCD显示屏的列数
#define LCD_LINES 2 // LCD显示屏的行数// 创建一个LiquidCrystal_I2C对象,用于控制LCD显示屏
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);// 变量定义
int buttonState; // 用于存储按钮的当前状态(HIGH或LOW)
int x = 0; // 用于切换显示模式的计数器,初始化为0
const int buttonPin = 4; // 按钮连接的引脚,使用数字引脚4
float resistance = 0; // 从模拟输入读取的电阻值,初始化为0
float pot = 0; // 转换后的电位器电压值,初始化为0
float volts = 0; // 暂时未使用的电压变量(可忽略或用于后续扩展)
float tempC = 0; // 摄氏温度,初始化为0
float tempF = 0; // 华氏温度,初始化为0
const int ledPin = 7; // LED连接的引脚,使用数字引脚7void setup() {// 初始化串口通信,波特率设置为9600Serial.begin(9600);// 设置引脚模式pinMode(A0, INPUT); // 模拟输入A0用于读取温度传感器的值pinMode(ledPin, OUTPUT); // 设置LED引脚为输出模式pinMode(buttonPin, INPUT); // 设置按钮引脚为输入模式// 初始化LCD显示lcd.init(); // 初始化LCD模块lcd.backlight(); // 打开LCD背光
}void loop() {// 读取模拟输入,计算温度resistance = analogRead(A0); // 从模拟引脚A0读取传感器的模拟值(0-1023)pot = resistance * 5.0 / 1023.0; // 将模拟值转换为电压值(假设使用5V参考电压)tempC = pot / 0.01; // 根据传感器特性计算摄氏温度(假设每10mV对应1°C)tempF = tempC * 1.8 + 32; // 将摄氏温度转换为华氏温度// 读取按钮状态buttonState = digitalRead(buttonPin); // 读取按钮引脚的电平状态// 根据按钮点击次数切换显示模式if (buttonState == HIGH) { // 如果按钮被按下(HIGH表示按下)x++; // 计数器加1delay(250); // 防抖延时,防止按钮抖动导致多次计数if (x >= 2) { // 如果计数器达到2,重置为0x = 0;}}// 根据x的值决定显示摄氏或华氏温度if (x == 0) { // 如果x为0,显示摄氏温度lcd.clear(); // 清除LCD显示内容lcd.setCursor(0, 0); // 设置光标到第1行第1列lcd.print("Temperatura:"); // 显示"Temperatura:"lcd.setCursor(0, 1); // 设置光标到第2行第1列lcd.print("Graus C:"); // 显示"Graus C:"lcd.setCursor(9, 1); // 设置光标到第2行第10列lcd.print(tempC); // 显示摄氏温度值delay(500); // 延时500毫秒} else if (x == 1) { // 如果x为1,显示华氏温度lcd.clear(); // 清除LCD显示内容lcd.setCursor(0, 0); // 设置光标到第1行第1列lcd.print("Temperatura:"); // 显示"Temperatura:"lcd.setCursor(0, 1); // 设置光标到第2行第1列lcd.print("Graus F:"); // 显示"Graus F:"lcd.setCursor(9, 1); // 设置光标到第2行第10列lcd.print(tempF); // 显示华氏温度值delay(500); // 延时500毫秒}// 根据温度控制LEDif (tempC >= 30) { // 如果摄氏温度大于等于30度digitalWrite(ledPin, HIGH); // 点亮LEDdelay(200); // 延时200毫秒,保持LED点亮状态}if (tempC <= 25) { // 如果摄氏温度小于等于25度digitalWrite(ledPin, LOW); // 熄灭LEDdelay(250); // 延时250毫秒,保持LED熄灭状态}
}
详细讲解
I2C地址和LCD初始化:
I2C_ADDR定义了LCD的I2C地址,通常为0x27或0x3F。
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);创建了一个LCD对象,用于控制LCD显示屏。
变量定义:
buttonState用于存储按钮的当前状态。
x用于切换显示模式,初始化为0。
buttonPin定义了按钮连接的引脚。
resistance、pot、tempC、tempF分别用于存储电阻值、电压值、摄氏温度和华氏温度。
ledPin定义了LED连接的引脚。
setup()函数:
初始化串口通信,波特率设置为9600。
设置引脚模式,A0为模拟输入,ledPin为输出,buttonPin为输入。
初始化LCD显示,并打开背光。
loop()函数:
读取模拟输入并计算温度:
使用analogRead(A0)读取模拟输入值。
将模拟值转换为电压值,并根据传感器特性计算摄氏温度。
将摄氏温度转换为华氏温度。
读取按钮状态并切换显示模式:
如果按钮被按下,计数器x加1,并延时250毫秒防抖。
如果x达到2,重置为0。
根据x的值决定显示摄氏或华氏温度:
如果x为0,显示摄氏温度。
如果x为1,显示华氏温度。
根据温度控制LED:
如果摄氏温度大于等于30度,点亮LED。
如果摄氏温度小于等于25度,熄灭LED。
实验总结
本程序通过模拟输入读取温度传感器的值,计算摄氏和华氏温度,并在LCD显示屏上显示。同时,根据温度值控制LED的亮灭。按钮用于切换显示模式(摄氏或华氏温度)。通过本实验,您可以学习如何使用Arduino进行模拟输入读取、I2C通信、LCD显示控制以及简单的条件判断和LED控制。
Arduino Mega 2560 模数与数模转换实验报告
实验名称:模数与数模转换实验——温度测量与显示控制
实验目的:
- 学习使用Arduino Mega 2560进行模拟输入读取。
- 掌握I2C通信协议,实现与LCD显示屏的通信。
- 学习根据模拟输入值进行简单的数据处理(如温度转换)。
- 实现基于温度值的LED控制。
- 学习按钮输入处理,实现显示模式的切换。
实验器材:
- Arduino Mega 2560开发板
- I2C LCD显示屏(16x2)
- 温度传感器(如热敏电阻或模拟温度传感器模块)
- LED灯
- 按钮开关
- 电阻、导线等辅助元件
- Wokwi在线仿真平台
实验原理:
- 模拟输入读取:
- 使用Arduino的
analogRead()
函数读取模拟引脚(如A0)的电压值,范围为0-1023。 - 根据参考电压(通常为5V),将模拟值转换为实际电压值。
- 使用Arduino的
- 温度计算:
- 假设使用简单的模拟温度传感器,其输出电压与温度成线性关系(如每10mV对应1°C)。
- 通过读取的电压值计算摄氏温度,并转换为华氏温度。
- I2C通信:
- 使用I2C协议与LCD显示屏通信,通过
LiquidCrystal_I2C
库控制LCD显示内容。
- 使用I2C协议与LCD显示屏通信,通过
- LED控制:
- 根据温度值控制LED的亮灭,实现简单的温度指示功能。
- 按钮输入处理:
- 使用数字引脚读取按钮状态,通过防抖处理实现显示模式的切换。
实验电路连接:
- 温度传感器:
- 模拟输出引脚连接到Arduino的A0引脚。
- I2C LCD显示屏:
- SDA引脚连接到Arduino的20号引脚(SDA)。
- SCL引脚连接到Arduino的21号引脚(SCL)。
- VCC和GND分别连接到5V和GND。
- LED:
- 正极连接到Arduino的7号引脚(通过限流电阻)。
- 负极连接到GND。
- 按钮:
- 一端连接到Arduino的4号引脚。
- 另一端连接到GND。
- 使用内部上拉电阻或外部上拉电阻确保引脚在未按下时为HIGH状态。
实验代码:
#include <LiquidCrystal_I2C.h>// 定义I2C地址和LCD的行列数
#define I2C_ADDR 0x27 // I2C设备的地址,通常LCD的默认地址为0x27或0x3F
#define LCD_COLUMNS 16 // LCD显示屏的列数
#define LCD_LINES 2 // LCD显示屏的行数// 创建一个LiquidCrystal_I2C对象,用于控制LCD显示屏
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);// 变量定义
int buttonState; // 用于存储按钮的当前状态(HIGH或LOW)
int x = 0; // 用于切换显示模式的计数器,初始化为0
const int buttonPin = 4; // 按钮连接的引脚,使用数字引脚4
float resistance = 0; // 从模拟输入读取的电阻值,初始化为0
float pot = 0; // 转换后的电位器电压值,初始化为0
float volts = 0; // 暂时未使用的电压变量(可忽略或用于后续扩展)
float tempC = 0; // 摄氏温度,初始化为0
float tempF = 0; // 华氏温度,初始化为0
const int ledPin = 7; // LED连接的引脚,使用数字引脚7void setup() {// 初始化串口通信,波特率设置为9600Serial.begin(9600);// 设置引脚模式pinMode(A0, INPUT); // 模拟输入A0用于读取温度传感器的值pinMode(ledPin, OUTPUT); // 设置LED引脚为输出模式pinMode(buttonPin, INPUT_PULLUP); // 设置按钮引脚为输入模式,启用内部上拉电阻// 初始化LCD显示lcd.init(); // 初始化LCD模块lcd.backlight(); // 打开LCD背光
}void loop() {// 读取模拟输入,计算温度resistance = analogRead(A0); // 从模拟引脚A0读取传感器的模拟值(0-1023)pot = resistance * 5.0 / 1023.0; // 将模拟值转换为电压值(假设使用5V参考电压)tempC = pot / 0.01; // 根据传感器特性计算摄氏温度(假设每10mV对应1°C)tempF = tempC * 1.8 + 32; // 将摄氏温度转换为华氏温度// 读取按钮状态buttonState = digitalRead(buttonPin); // 读取按钮引脚的电平状态// 根据按钮点击次数切换显示模式if (buttonState == LOW) { // 如果按钮被按下(LOW表示按下,因为使用了内部上拉电阻)x++; // 计数器加1delay(250); // 防抖延时,防止按钮抖动导致多次计数if (x >= 2) { // 如果计数器达到2,重置为0x = 0;}}// 根据x的值决定显示摄氏或华氏温度if (x == 0) { // 如果x为0,显示摄氏温度lcd.clear(); // 清除LCD显示内容lcd.setCursor(0, 0); // 设置光标到第1行第1列lcd.print("Temperatura:"); // 显示"Temperatura:"lcd.setCursor(0, 1); // 设置光标到第2行第1列lcd.print("Graus C:"); // 显示"Graus C:"lcd.setCursor(9, 1); // 设置光标到第2行第10列lcd.print(tempC); // 显示摄氏温度值delay(500); // 延时500毫秒} else if (x == 1) { // 如果x为1,显示华氏温度lcd.clear(); // 清除LCD显示内容lcd.setCursor(0, 0); // 设置光标到第1行第1列lcd.print("Temperatura:"); // 显示"Temperatura:"lcd.setCursor(0, 1); // 设置光标到第2行第1列lcd.print("Graus F:"); // 显示"Graus F:"lcd.setCursor(9, 1); // 设置光标到第2行第10列lcd.print(tempF); // 显示华氏温度值delay(500); // 延时500毫秒}// 根据温度控制LEDif (tempC >= 30) { // 如果摄氏温度大于等于30度digitalWrite(ledPin, HIGH); // 点亮LEDdelay(200); // 延时200毫秒,保持LED点亮状态}if (tempC <= 25) { // 如果摄氏温度小于等于25度digitalWrite(ledPin, LOW); // 熄灭LEDdelay(250); // 延时250毫秒,保持LED熄灭状态}
}
cpp复制代码
#include <LiquidCrystal_I2C.h> | |
// 定义I2C地址和LCD的行列数 | |
#define I2C_ADDR 0x27 // I2C设备的地址,通常LCD的默认地址为0x27或0x3F | |
#define LCD_COLUMNS 16 // LCD显示屏的列数 | |
#define LCD_LINES 2 // LCD显示屏的行数 | |
// 创建一个LiquidCrystal_I2C对象,用于控制LCD显示屏 | |
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES); | |
// 变量定义 | |
int buttonState; // 用于存储按钮的当前状态(HIGH或LOW) | |
int x = 0; // 用于切换显示模式的计数器,初始化为0 | |
const int buttonPin = 4; // 按钮连接的引脚,使用数字引脚4 | |
float resistance = 0; // 从模拟输入读取的电阻值,初始化为0 | |
float pot = 0; // 转换后的电位器电压值,初始化为0 | |
float volts = 0; // 暂时未使用的电压变量(可忽略或用于后续扩展) | |
float tempC = 0; // 摄氏温度,初始化为0 | |
float tempF = 0; // 华氏温度,初始化为0 | |
const int ledPin = 7; // LED连接的引脚,使用数字引脚7 | |
void setup() { | |
// 初始化串口通信,波特率设置为9600 | |
Serial.begin(9600); | |
// 设置引脚模式 | |
pinMode(A0, INPUT); // 模拟输入A0用于读取温度传感器的值 | |
pinMode(ledPin, OUTPUT); // 设置LED引脚为输出模式 | |
pinMode(buttonPin, INPUT_PULLUP); // 设置按钮引脚为输入模式,启用内部上拉电阻 | |
// 初始化LCD显示 | |
lcd.init(); // 初始化LCD模块 | |
lcd.backlight(); // 打开LCD背光 | |
} | |
void loop() { | |
// 读取模拟输入,计算温度 | |
resistance = analogRead(A0); // 从模拟引脚A0读取传感器的模拟值(0-1023) | |
pot = resistance * 5.0 / 1023.0; // 将模拟值转换为电压值(假设使用5V参考电压) | |
tempC = pot / 0.01; // 根据传感器特性计算摄氏温度(假设每10mV对应1°C) | |
tempF = tempC * 1.8 + 32; // 将摄氏温度转换为华氏温度 | |
// 读取按钮状态 | |
buttonState = digitalRead(buttonPin); // 读取按钮引脚的电平状态 | |
// 根据按钮点击次数切换显示模式 | |
if (buttonState == LOW) { // 如果按钮被按下(LOW表示按下,因为使用了内部上拉电阻) | |
x++; // 计数器加1 | |
delay(250); // 防抖延时,防止按钮抖动导致多次计数 | |
if (x >= 2) { // 如果计数器达到2,重置为0 | |
x = 0; | |
} | |
} | |
// 根据x的值决定显示摄氏或华氏温度 | |
if (x == 0) { // 如果x为0,显示摄氏温度 | |
lcd.clear(); // 清除LCD显示内容 | |
lcd.setCursor(0, 0); // 设置光标到第1行第1列 | |
lcd.print("Temperatura:"); // 显示"Temperatura:" | |
lcd.setCursor(0, 1); // 设置光标到第2行第1列 | |
lcd.print("Graus C:"); // 显示"Graus C:" | |
lcd.setCursor(9, 1); // 设置光标到第2行第10列 | |
lcd.print(tempC); // 显示摄氏温度值 | |
delay(500); // 延时500毫秒 | |
} else if (x == 1) { // 如果x为1,显示华氏温度 | |
lcd.clear(); // 清除LCD显示内容 | |
lcd.setCursor(0, 0); // 设置光标到第1行第1列 | |
lcd.print("Temperatura:"); // 显示"Temperatura:" | |
lcd.setCursor(0, 1); // 设置光标到第2行第1列 | |
lcd.print("Graus F:"); // 显示"Graus F:" | |
lcd.setCursor(9, 1); // 设置光标到第2行第10列 | |
lcd.print(tempF); // 显示华氏温度值 | |
delay(500); // 延时500毫秒 | |
} | |
// 根据温度控制LED | |
if (tempC >= 30) { // 如果摄氏温度大于等于30度 | |
digitalWrite(ledPin, HIGH); // 点亮LED | |
delay(200); // 延时200毫秒,保持LED点亮状态 | |
} | |
if (tempC <= 25) { // 如果摄氏温度小于等于25度 | |
digitalWrite(ledPin, LOW); // 熄灭LED | |
delay(250); // 延时250毫秒,保持LED熄灭状态 | |
} | |
} |
实验结果与分析:
- 温度测量:
- 通过模拟输入读取温度传感器的值,成功计算出摄氏和华氏温度。
- 温度值在LCD显示屏上正确显示,切换显示模式功能正常。
- LED控制:
- 当温度大于等于30°C时,LED点亮。
- 当温度小于等于25°C时,LED熄灭。
- LED状态随温度变化而正确切换。
- 按钮输入处理:
- 按钮按下后,显示模式在摄氏和华氏温度之间切换。
- 防抖处理有效,避免了按钮抖动导致的多次计数。
实验结论:
- 本实验成功实现了模拟输入读取、温度计算、I2C通信、LCD显示控制、LED控制以及按钮输入处理等功能。
- 通过实验,加深了对Arduino模拟输入、I2C通信和条件判断的理解。
- 实验结果符合预期,验证了代码和电路设计的正确性。
改进建议:
- 增加温度报警功能:当温度超过设定阈值时,触发蜂鸣器报警。
- 优化显示界面:增加更多信息,如温度趋势、最大值、最小值等。
- 使用更精确的温度传感器:提高温度测量的准确性和稳定性。
实验报告撰写人: [您的姓名]
日期: [填写日期]
以下是一个关于在 Wokwi 平台上使用 Arduino Mega 2560 进行模数与数模转换的非常详细的教程:
一、实验准备
-
硬件准备
- Arduino Mega 2560 开发板
- 模拟传感器(如电位器、光敏电阻等)
- 数字传感器(如按钮开关)
- LED 灯
- 电阻、导线等辅助元件
-
软件准备
- Wokwi 在线仿真平台(无需实际硬件,直接在浏览器中运行)
- Arduino IDE(用于编写和上传代码)
二、模数转换(ADC)
-
原理
- 模数转换(ADC)是将模拟信号转换为数字信号的过程。
- Arduino Mega 2560 具有 16 个模拟输入引脚(A0~A15),可以将 0~5V 的模拟电压转换为 0~1023 的整数形式。
-
实验步骤
- 连接电路:在 Wokwi 平台上,将电位器的一端连接到 5V,另一端连接到 GND,中间引脚连接到 Arduino Mega 2560 的 A0 引脚。
- 编写代码:使用
analogRead()
函数读取 A0 引脚的模拟值,并将其转换为电压值或进行其他处理。
void setup() {Serial.begin(9600); // 初始化串口通信 }void loop() {int sensorValue = analogRead(A0); // 读取 A0 引脚的模拟值float voltage = sensorValue * (5.0 / 1023.0); // 将模拟值转换为电压值Serial.println(voltage); // 打印电压值到串口监视器delay(1000); // 延时 1 秒 }
cpp复制代码
void setup() {
Serial.begin(9600); // 初始化串口通信
}
void loop() {
int sensorValue = analogRead(A0); // 读取 A0 引脚的模拟值
float voltage = sensorValue * (5.0 / 1023.0); // 将模拟值转换为电压值
Serial.println(voltage); // 打印电压值到串口监视器
delay(1000); // 延时 1 秒
}
- 上传代码:在 Arduino IDE 中编写并上传代码到 Wokwi 平台上的 Arduino Mega 2560。
- 观察结果:在 Wokwi 平台的串口监视器中查看打印的电压值,并观察其随电位器旋转而变化。
三、数模转换(DAC)
-
原理
- 数模转换(DAC)是将数字信号转换为模拟信号的过程。
- Arduino Mega 2560 本身没有直接的 DAC 输出引脚,但可以通过 PWM(脉冲宽度调制)来模拟 DAC 输出。
-
实验步骤
- 连接电路:将 LED 的正极连接到 Arduino Mega 2560 的一个 PWM 引脚(如 9 号引脚),负极连接到 GND。
- 编写代码:使用
analogWrite()
函数输出 PWM 信号,控制 LED 的亮度。
void setup() {pinMode(9, OUTPUT); // 设置 9 号引脚为输出模式 }void loop() {for (int i = 0; i <= 255; i++) {analogWrite(9, i); // 输出 PWM 信号,控制 LED 亮度delay(10); // 延时 10 毫秒}for (int i = 255; i >= 0; i--) {analogWrite(9, i); // 输出 PWM 信号,控制 LED 亮度delay(10); // 延时 10 毫秒} }
cpp复制代码
void setup() {
pinMode(9, OUTPUT); // 设置 9 号引脚为输出模式
}
void loop() {
for (int i = 0; i <= 255; i++) {
analogWrite(9, i); // 输出 PWM 信号,控制 LED 亮度
delay(10); // 延时 10 毫秒
}
for (int i = 255; i >= 0; i--) {
analogWrite(9, i); // 输出 PWM 信号,控制 LED 亮度
delay(10); // 延时 10 毫秒
}
}
- 上传代码:在 Arduino IDE 中编写并上传代码到 Wokwi 平台上的 Arduino Mega 2560。
- 观察结果:观察 LED 的亮度随 PWM 信号的变化而逐渐增强和减弱。
四、综合实验:温度测量与显示
-
实验目的
- 使用模拟温度传感器测量温度,并通过 LCD 显示屏显示温度值。
-
实验步骤
- 连接电路:在 Wokwi 平台上,连接模拟温度传感器到 A0 引脚,连接 I2C LCD 显示屏到 SDA 和 SCL 引脚,连接 LED 到 PWM 引脚,连接按钮到数字引脚。
- 编写代码:读取温度传感器的值,计算温度,并通过 LCD 显示屏显示温度值。同时,根据温度值控制 LED 的亮度,并通过按钮切换显示模式(摄氏温度或华氏温度)。
#include <LiquidCrystal_I2C.h>LiquidCrystal_I2C lcd(0x27, 16, 2); // 初始化 LCD 显示屏int buttonState; int x = 0; const int buttonPin = 4; float resistance = 0; float pot = 0; float tempC = 0; float tempF = 0; const int ledPin = 9;void setup() {Serial.begin(9600);pinMode(A0, INPUT);pinMode(ledPin, OUTPUT);pinMode(buttonPin, INPUT_PULLUP);lcd.init();lcd.backlight(); }void loop() {resistance = analogRead(A0);pot = resistance * 5.0 / 1023.0;tempC = pot / 0.01;tempF = tempC * 1.8 + 32;buttonState = digitalRead(buttonPin);if (buttonState == LOW) {x++;delay(250);if (x >= 2) {x = 0;}}if (x == 0) {lcd.clear();lcd.setCursor(0, 0);lcd.print("Temperatura:");lcd.setCursor(0, 1);lcd.print("Graus C:");lcd.setCursor(9, 1);lcd.print(tempC);} else if (x == 1) {lcd.clear();lcd.setCursor(0, 0);lcd.print("Temperatura:");lcd.setCursor(0, 1);lcd.print("Graus F:");lcd.setCursor(9, 1);lcd.print(tempF);}if (tempC >= 30) {analogWrite(ledPin, 255);} else if (tempC <= 25) {analogWrite(ledPin, 0);} else {analogWrite(ledPin, map(tempC, 25, 30, 0, 255));}delay(500); }
cpp复制代码
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // 初始化 LCD 显示屏
int buttonState;
int x = 0;
const int buttonPin = 4;
float resistance = 0;
float pot = 0;
float tempC = 0;
float tempF = 0;
const int ledPin = 9;
void setup() {
Serial.begin(9600);
pinMode(A0, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
lcd.init();
lcd.backlight();
}
void loop() {
resistance = analogRead(A0);
pot = resistance * 5.0 / 1023.0;
tempC = pot / 0.01;
tempF = tempC * 1.8 + 32;
buttonState = digitalRead(buttonPin);
if (buttonState == LOW) {
x++;
delay(250);
if (x >= 2) {
x = 0;
}
}
if (x == 0) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temperatura:");
lcd.setCursor(0, 1);
lcd.print("Graus C:");
lcd.setCursor(9, 1);
lcd.print(tempC);
} else if (x == 1) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temperatura:");
lcd.setCursor(0, 1);
lcd.print("Graus F:");
lcd.setCursor(9, 1);
lcd.print(tempF);
}
if (tempC >= 30) {
analogWrite(ledPin, 255);
} else if (tempC <= 25) {
analogWrite(ledPin, 0);
} else {
analogWrite(ledPin, map(tempC, 25, 30, 0, 255));
}
delay(500);
}
- 上传代码:在 Arduino IDE 中编写并上传代码到 Wokwi 平台上的 Arduino Mega 2560。
- 观察结果:观察 LCD 显示屏上显示的温度值,以及 LED 的亮度随温度的变化。通过按钮切换显示模式,观察摄氏温度和华氏温度之间的切换。
五、注意事项
- 电路连接:确保电路连接正确,避免短路或接反。
- 代码调试:在上传代码前,仔细检查代码逻辑和语法错误。
- 观察结果:在 Wokwi 平台上观察实验结果,确保与预期一致。
通过本教程,您可以掌握在 Wokwi 平台上使用 Arduino Mega 2560 进行模数与数模转换的基本方法和技巧。