Arduino+LCD1602,并口版 LCD1602和IIC版LCD1602
采用4 位模式(只用 D4~D7),D0-D3不需要连接
接线方式参考:
V0是对比度控制引脚,接在GND时屏幕最亮。在此我们接在了一个PWM引脚用于控制对比度。
所需库
-
LiquidCrystal
-
DHT sensor library
(安装DHT
库) -
Adafruit Unified Sensor
(依赖库)
完整代码:实现功能,温湿度显示,火焰检测,CO2数值检测,并在LCD上显示
#include <LiquidCrystal.h>
#include <DHT.h>#define DHTPIN 8
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);// LCD1602:RS, E, D4, D5, D6, D7
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);#define CONTRAST_PIN 9 // PWM 控制 LCD VO
#define CO2_PIN A0 // CO2 模拟值
#define FLAME_PIN 10 // 火焰检测
#define BUZZER_PIN 11 // 蜂鸣器
#define LED_PIN 12 // 报警灯void setup() {pinMode(CONTRAST_PIN, OUTPUT);analogWrite(CONTRAST_PIN, 50); // 设置 LCD 对比度(越小越亮)pinMode(BUZZER_PIN, OUTPUT);pinMode(LED_PIN, OUTPUT);pinMode(FLAME_PIN, INPUT);Serial.begin(9600);dht.begin();lcd.begin(16, 2);lcd.print("System Starting...");delay(1500);lcd.clear();
}void loop() {float temp = dht.readTemperature();float humi = dht.readHumidity();int co2 = analogRead(CO2_PIN);bool fireDetected = (digitalRead(FLAME_PIN) == LOW); // LOW 为有火// 报警控制digitalWrite(BUZZER_PIN, fireDetected);digitalWrite(LED_PIN, fireDetected);// 串口输出调试信息Serial.print("T:");Serial.print(temp);Serial.print("C H:");Serial.print(humi);Serial.print("% CO2:");Serial.print(co2);Serial.print(" Fire:");Serial.println(fireDetected ? "YES" : "NO");// 显示在 LCDlcd.setCursor(0, 0);lcd.print("T:");lcd.print((int)temp);lcd.print(" H:");lcd.print((int)humi);lcd.print("% ");lcd.setCursor(0, 1);lcd.print("C:");lcd.print(co2);lcd.print(fireDetected ? " FIRE!" : " SAFE ");delay(1000);
}
显示效果如下: