国家城乡住房建设厅网站/竞价排名规则

国家城乡住房建设厅网站,竞价排名规则,虚拟主机如何做多个网站,博客网站登录入口截图&#xff1a; 20.53 黄灯灭 不报警 205.77 黄灯亮 报警 链接&#xff1a; https://wokwi.com/projects/415345595312267265 代码&#xff1a; 详细注释版&#xff1a;AD和I2C仿真实验案例程序 cpp #include <LiquidCrystal_I2C.h>// 定义I2C地址和LCD的行列数 #de…

截图:

20.53 黄灯灭 不报警

205.77 黄灯亮 报警

链接:

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 模数与数模转换实验报告


实验名称:模数与数模转换实验——温度测量与显示控制

实验目的
  1. 学习使用Arduino Mega 2560进行模拟输入读取。
  2. 掌握I2C通信协议,实现与LCD显示屏的通信。
  3. 学习根据模拟输入值进行简单的数据处理(如温度转换)。
  4. 实现基于温度值的LED控制。
  5. 学习按钮输入处理,实现显示模式的切换。

实验器材
  1. Arduino Mega 2560开发板
  2. I2C LCD显示屏(16x2)
  3. 温度传感器(如热敏电阻或模拟温度传感器模块)
  4. LED灯
  5. 按钮开关
  6. 电阻、导线等辅助元件
  7. Wokwi在线仿真平台

实验原理
  1. 模拟输入读取
    • 使用Arduino的analogRead()函数读取模拟引脚(如A0)的电压值,范围为0-1023。
    • 根据参考电压(通常为5V),将模拟值转换为实际电压值。
  2. 温度计算
    • 假设使用简单的模拟温度传感器,其输出电压与温度成线性关系(如每10mV对应1°C)。
    • 通过读取的电压值计算摄氏温度,并转换为华氏温度。
  3. I2C通信
    • 使用I2C协议与LCD显示屏通信,通过LiquidCrystal_I2C库控制LCD显示内容。
  4. LED控制
    • 根据温度值控制LED的亮灭,实现简单的温度指示功能。
  5. 按钮输入处理
    • 使用数字引脚读取按钮状态,通过防抖处理实现显示模式的切换。

实验电路连接
  1. 温度传感器
    • 模拟输出引脚连接到Arduino的A0引脚。
  2. I2C LCD显示屏
    • SDA引脚连接到Arduino的20号引脚(SDA)。
    • SCL引脚连接到Arduino的21号引脚(SCL)。
    • VCC和GND分别连接到5V和GND。
  3. LED
    • 正极连接到Arduino的7号引脚(通过限流电阻)。
    • 负极连接到GND。
  4. 按钮
    • 一端连接到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熄灭状态
}
}

实验结果与分析
  1. 温度测量
    • 通过模拟输入读取温度传感器的值,成功计算出摄氏和华氏温度。
    • 温度值在LCD显示屏上正确显示,切换显示模式功能正常。
  2. LED控制
    • 当温度大于等于30°C时,LED点亮。
    • 当温度小于等于25°C时,LED熄灭。
    • LED状态随温度变化而正确切换。
  3. 按钮输入处理
    • 按钮按下后,显示模式在摄氏和华氏温度之间切换。
    • 防抖处理有效,避免了按钮抖动导致的多次计数。

实验结论
  • 本实验成功实现了模拟输入读取、温度计算、I2C通信、LCD显示控制、LED控制以及按钮输入处理等功能。
  • 通过实验,加深了对Arduino模拟输入、I2C通信和条件判断的理解。
  • 实验结果符合预期,验证了代码和电路设计的正确性。

改进建议
  1. 增加温度报警功能:当温度超过设定阈值时,触发蜂鸣器报警。
  2. 优化显示界面:增加更多信息,如温度趋势、最大值、最小值等。
  3. 使用更精确的温度传感器:提高温度测量的准确性和稳定性。

实验报告撰写人: [您的姓名]
日期: [填写日期]


以下是一个关于在 Wokwi 平台上使用 Arduino Mega 2560 进行模数与数模转换的非常详细的教程:

一、实验准备

  1. 硬件准备

    • Arduino Mega 2560 开发板
    • 模拟传感器(如电位器、光敏电阻等)
    • 数字传感器(如按钮开关)
    • LED 灯
    • 电阻、导线等辅助元件
  2. 软件准备

    • Wokwi 在线仿真平台(无需实际硬件,直接在浏览器中运行)
    • Arduino IDE(用于编写和上传代码)

二、模数转换(ADC)

  1. 原理

    • 模数转换(ADC)是将模拟信号转换为数字信号的过程。
    • Arduino Mega 2560 具有 16 个模拟输入引脚(A0~A15),可以将 0~5V 的模拟电压转换为 0~1023 的整数形式。
  2. 实验步骤

    • 连接电路:在 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)

  1. 原理

    • 数模转换(DAC)是将数字信号转换为模拟信号的过程。
    • Arduino Mega 2560 本身没有直接的 DAC 输出引脚,但可以通过 PWM(脉冲宽度调制)来模拟 DAC 输出。
  2. 实验步骤

    • 连接电路:将 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 信号的变化而逐渐增强和减弱。

四、综合实验:温度测量与显示

  1. 实验目的

    • 使用模拟温度传感器测量温度,并通过 LCD 显示屏显示温度值。
  2. 实验步骤

    • 连接电路:在 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 的亮度随温度的变化。通过按钮切换显示模式,观察摄氏温度和华氏温度之间的切换。

五、注意事项

  1. 电路连接:确保电路连接正确,避免短路或接反。
  2. 代码调试:在上传代码前,仔细检查代码逻辑和语法错误。
  3. 观察结果:在 Wokwi 平台上观察实验结果,确保与预期一致。

通过本教程,您可以掌握在 Wokwi 平台上使用 Arduino Mega 2560 进行模数与数模转换的基本方法和技巧。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/76125.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟机(一):Java 篇

虚拟机&#xff08;一&#xff09;&#xff1a;Java 篇 虚拟机&#xff08;二&#xff09;&#xff1a;Android 篇 架构 运行时数据区&#xff1a; 栈&#xff1a; 堆&#xff1a; 堆&#xff1a;通过new创建的对象都在堆中分配。OutOfMemoryError TLAB(Thread Local All…

硬件基础--14_电功率

电功率 电功率:指电流在单位时间内做的功(表示用电器消耗电能快慢的一个物理量)。 单位:瓦特(W)&#xff0c;简称瓦。 公式:PUI(U为电压&#xff0c;单位为V&#xff0c;i为电流&#xff0c;单位为A&#xff0c;P为电功率&#xff0c;单位为W)。 单位换算:进位为1000&#xff…

更高的效率——MyBatis-plus

一、什么是MyBatis-plus&#xff1f; MyBatis-plus是MyBatis的增强工具&#xff0c;在MyBatis基础上只做增强不做改变&#xff0c;可以简化基础的CRUD操作&#xff08;通过继承 BaseMapper 接口可直接使用预定义的增删改查方法&#xff09; 二、MyBatis-plus快速入门 2.1 准备…

【算法基础】递归与递推

目录 递归实现指数型枚举 题目 算法解析 递归实现排列型枚举 题目 算法解析 费解的开关 题目 算法解析 递归实现组合型枚举 题目 算法解析 带分数 题目 算法解析 飞行员兄弟 题目 算法解析 翻硬币 题目 算法解析 递归实现指数型枚举 题目 算法…

Java 大视界 -- Java 大数据在智慧矿山设备故障预测与预防性维护中的技术实现(163)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

综合实验一

实验拓扑图&#xff1a; 实验要求&#xff1a; 1,内网IP地址使用172.16.0.0/16分配 2,SW1和SW2之间互为备份 3,VRRP/STP/VLAN/Eth-trunk均使用 4,所有PC均通过DHCP获取IP地址 5,ISP只能配置IP地址 6,所有电脑可以正常访问ISP路由器环回 实验步骤&#xff1a; 步骤1&…

snort检测端口扫描工具

前面两篇文章介绍了snort3相关知识和Ubuntu上的安装配置Ubuntu22.04上Snort3的安装与基本配置 -CSDN博客 和Snort规则定义并进行的简单的测试Snort规则定义与测试 -CSDN博客&#xff0c;接下来我将介绍如何编写一个简单的检测端口扫描的规则进行检测 一、实验环境 攻击机&…

【行测】资料分析

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;读不在三更五鼓&#xff0c;功只怕一曝十寒。 > 目标&#xff1a;掌握 资料分析 基本题型&#xff0c;并能运用到例题中。 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持。早安! …

工地扬尘监测仪:守护蓝天白云的重要工具

在城市化进程加速推进的背景下&#xff0c;建筑工地数量呈现持续增长态势&#xff0c;扬尘污染问题亦愈发显著。扬尘不仅对空气质量造成负面影响&#xff0c;更对周边居民的健康状况及生活质量构成威胁。在此情形下&#xff0c;工地扬尘监测仪作为建筑工地环境管理中不可或缺的…

Windows10 下QT社区版的安装记录

0. 介绍 踩了一些坑&#xff0c;记录一下&#xff0c;主要是镜像源的问题。 1. 安装 首先你先要在qt官网上有一个自己的账号。 然后点右上角的下载 打开后&#xff0c;我们需要选择社区版本&#xff1b;如果选择直接下载的话&#xff0c;出来的就是商业版本。 点开后&…

VS Code C/C++项目设置launch.json中的environment参数解决支持库路径问题

问题描述 Windows 11 VS Code C/C 开发环境搭建分别写了c和cpp两个示例代码&#xff0c;在运行过程中c代码没有发现问题&#xff08;可能简单&#xff0c;没有用到太多支持&#xff09;&#xff0c;但使用了stl的cpp代码并没有运行出来&#xff0c;如下图&#xff1a; 出问题…

随机2级域名引导页HTML源码

源码介绍 随机2级域名引导页HTML源码,每次点进去都随机一个域名前缀。 修改跳转域名在 350 行代码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行 效果预览 源码免费获取 随机2级域名引导页…

Nginx — nginx.pid打开失败及失效的解决方案

1、场景一&#xff1a;nginx.pid文件或者目录不存在 1.1、报错详情 [rootmaster conf]# ../sbin/nginx -s reload nginx: [error] open() "/var/run/nginx/nginx.pid" failed (2: No such file or directory) #nginx.pid文件或目录不存在。 原因&#xff1a; 1、文件…

AireOS WLC安装License报错

1.概述 本文主要记录在AireOS的WLC上安装License错误的情况。License的类型也是传统的License&#xff0c;因为设备的型号已经EOL&#xff0c;相关的资料应该较少&#xff0c;这里进行可能问题的记录。 2.适用场景 型号&#xff1a;WLC2500&#xff0c;WLC5508 License类型…

利用 Excel 函数随机抽取(附示例)

RANDARRAY 是 Excel 365 和 Excel 2021 引入的一个函数&#xff0c;用于生成一个随机数数组。它的语法如下&#xff1a; RANDARRAY([rows], [columns], [min], [max], [whole_number])参数详解 rows&#xff08;可选&#xff09; 要生成的行数&#xff08;默认值为 1&#xff…

Python:爬虫概念与分类

网络请求&#xff1a; https://www.baidu.com url——统一资源定位符 请求过程&#xff1a; 客户端&#xff0c;指web浏览器向服务器发送请求 请求&#xff1a;请求网址(request url)&#xff1b;请求方法(request methods)&#xff1b;请求头(request header)&…

HO与OH差异之Navigation三

在上一篇内容中我们介绍了HO与OH差异之Navigator&#xff0c;我们也了解了Navigator的基本概念和大致了解了一下他的基础用法&#xff0c;既然谈到差异肯定就不止这两种差异&#xff0c;今天就让我们来了解第三种差异NavRouter&#xff0c;其中在HO中我们并没有这种路由方式但是…

ZGC初步了解

ZGC ZGC和G1&#xff0c;CMS一样都是一种垃圾回收器。那其实G1已经很不错了 为什么还需要ZGC呢 ZGC&#xff08;The Z Garbage Collector&#xff09;是JDK 11中推出的一款低延迟垃圾回收器&#xff0c;它的设计目标包括&#xff1a; 停顿时间不超过10ms&#xff1b; 停顿时…

Tof 深度相机原理

深度相机(TOF)的工作原理_tof相机原理-CSDN博客 深度剖析 ToF 技术&#xff1a;原理、优劣、数据纠错与工业应用全解析_tof技术-CSDN博客 飞行时间技术TOF_tof计算公式-CSDN博客 深度相机&#xff08;二&#xff09;——飞行时间&#xff08;TOF&#xff09;_飞行时间技术-C…

跟着StatQuest学知识08-RNN与LSTM

一、RNN &#xff08;一&#xff09;简介 整个过程权重和偏置共享。 &#xff08;二&#xff09;梯度爆炸问题 在这个例子中w2大于1&#xff0c;会出现梯度爆炸问题。 当我们循环的次数越来越多的时候&#xff0c;这个巨大的数字会进入某些梯度&#xff0c;步长就会大幅增加&…