用arduino中的LiquidCrystal I2C:1.1.2库函数设计代码使松开按钮时,Led显示摄氏温度,按下按钮,显示华氏温度
时间: 2024-10-12 15:16:25 浏览: 29
在Arduino中,要使用`LiquidCrystal_I2C`库控制I2C连接的LCD1602显示器,并根据按键操作切换显示摄氏度(Celsius)和华氏度(Fahrenheit),你需要先确保已经安装了`Wire`库以支持I2C通信,并且包含`LiquidCrystal_I2C.h`库文件。以下是一个基本的示例代码:
```cpp
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_LiquidCrystal_I2C.h>
#define LCD_I2C_ADDRESS 0x27 // 通常是0x27或0x3F,根据你的实际硬件
#define TEMP_SENSOR_ADDR 0x48 // 如果使用DS18B20传感器,地址一般是这个
// 创建LCD对象
Adafruit_LiquidCrystal_I2C lcd(LCD_I2C_ADDRESS, 16, 2); // 16行2列
// 按钮引脚
const int buttonPin = 2;
void setup() {
// 初始化I2C
Wire.begin();
// 初始化LCD
lcd.begin(16, 2);
// 温度传感器初始化(这里假设使用DS18B20)
if (!Adafruit_DallasTemperature::begin(TEMP_SENSOR_ADDR)) {
Serial.println("Dallas Temperature sensor not found!");
while (true);
}
}
void loop() {
// 读取并转换温度
Adafruit_DallasTemperature ds = Adafruit_DallasTemperature();
float tempC = ds.readTempC(); // 获取摄氏温度
float tempF = celsiusToFahrenheit(tempC); // 将摄氏转华氏
// 根据按钮状态更新显示屏
bool isButtonPressed = digitalRead(buttonPin) == LOW;
if (isButtonPressed) {
lcd.setCursor(0, 0);
lcd.print("Fahrenheit: ");
lcd.print(tempF, 1);
} else {
lcd.setCursor(0, 0);
lcd.print("Celsius: ");
lcd.print(tempC, 1);
}
delay(500); // 等待一段时间再读取下一次温度
}
// 华氏度到摄氏度的转换函数
float celsiusToFahrenheit(float celsius) {
return (celsius * 9.0 / 5.0) + 32;
}
阅读全文