void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
#include <Arduino.h>
#include <LiquidCrystal_I2C.h> // 导入LCD库
#include <Wire.h> // 导入Wire库
#include <DHT.h> // 导入DHT库
#define DHTPIN 3 // 温湿度传感器引脚
#define DHTTYPE DHT22 // 温湿度传感器类型为DHT11
DHT dht(DHTPIN, DHTTYPE); // 初始化温湿度传感器
LiquidCrystal_I2C lcd(0x27, 16, 2); // 初始化LCD
int light_pin = A0; // 光敏传感器引脚
//int flame_pin = 4; // 火焰传感器引脚
int led_pin = 5; // LED灯引脚
int buzzer_pin = 9; // 蜂鸣器引脚
float temperature = 0; // 温度变量初始化
float humidity = 0; // 湿度变量初始化
int light = 0; // 光线变量初始化
//int flame = 0; // 火焰变量初始化
void setup()
{
Serial.begin(9600); // 打开串口
dht.begin(); // 初始化温湿度传感器
lcd.init(); // 初始化LCD
lcd.backlight(); // 打开LCD背光
//pinMode(flame_pin, INPUT); // 火焰传感器引脚设置为输入
pinMode(led_pin, OUTPUT); // LED灯引脚设置为输出
pinMode(buzzer_pin, OUTPUT); // 蜂鸣器引脚设置为输出
}
void loop()
{
// 读取温湿度数据
temperature = dht.readTemperature(); // 读取温度
humidity = dht.readHumidity(); // 读取湿度
// 读取光线数值
light = analogRead(light_pin); // 读取光线数值
light = map(light, 0, 1023, 100, 0); // 将光线数值转换为百分比
// 读取火情信息
//flame = digitalRead(flame_pin); // 读取火焰传感器数值
// 打印数据到串口
Serial.print("Temperature: "); // 打印温度
Serial.print(temperature);
Serial.print("C, Humidity: "); // 打印湿度
Serial.print(humidity);
Serial.print("%, Light: "); // 打印光线
Serial.print(light);
//Serial.print(", Flame: "); // 打印火焰状态
//if(flame == LOW) { // 如果火焰传感器检测到火焰
// Serial.println("Fire"); // 打印火焰
//} else {
// Serial.println("Safe"); // 打印安全
//}
// 在LCD上显示数据
int intTemp = int(temperature); // 将温度转换为整数
int intHum = int(humidity); // 将湿度转换为整数
lcd.setCursor(0, 0); // 设置光标位置
lcd.print("T: "); // 打印温度
lcd.print(intTemp/10); // 打印十位数
lcd.print(intTemp%10); // 打印个位数
lcd.print(" C "); // 打印摄氏度符号
lcd.print(" H: "); // 打印湿度
lcd.print(intHum/10); // 打印十位数
lcd.print(intHum%10); // 打印个位数
lcd.print(" %"); // 打印百分号
lcd.setCursor(0, 1); // 设置光标位置
lcd.print("L: "); // 打印光线
lcd.print(light/100); // 打印百位数
lcd.print(light%100/10); // 打印十位数
lcd.print(light%10); // 打印个位数
lcd.print(" F: "); // 打印火焰
//if (flame == LOW) {
//lcd.print("Fire"); // 打印火焰
//} else {
//lcd.print("Safe"); // 打印安全
//}
// 检查温度是否过高
if (temperature > 30) {
digitalWrite(led_pin, HIGH); // LED灯亮
} else {
digitalWrite(led_pin, LOW); // LED灯灭
}
// 检查是否有火情
if (temperature > 30) {
//if (flame == LOW) {
tone(buzzer_pin, 1000); // 蜂鸣器响
} else {
noTone(buzzer_pin); // 蜂鸣器不响
}
delay(500); // 延时0.5秒
}