#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// Định nghĩa các chân I2C và kích thước LCD
const int I2C_ADDR = 0x27; // Địa chỉ I2C của LCD (có thể khác nhau)
LiquidCrystal_I2C lcd(I2C_ADDR, 16, 2);
const int ONE_WIRE_BUS = 4; // Chân GPIO để đọc giá trị từ DS18B20
const int RELAY_PIN = 5; // Chân kỹ thuật số để điều khiển relay
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
lcd.begin(16, 2); // Khởi tạo màn hình LCD với 16 cột và 2 hàng
lcd.setCursor(0, 0);
lcd.print("Duc Mien!");
sensors.begin(); // Khởi động cảm biến DS18B20
pinMode(RELAY_PIN, OUTPUT); // Thiết lập chân relay làm đầu ra
}
void loop() {
sensors.requestTemperatures(); // Yêu cầu đọc nhiệt độ từ cảm biến
float temperature = sensors.getTempCByIndex(0); // Đọc nhiệt độ
Serial.print("Nhiệt độ: ");
Serial.println(temperature); // In nhiệt độ ra màn hình serial
lcd.setCursor(0, 1); // Đặt con trỏ LCD trên hàng thứ hai
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(" C");
// Điều khiển relay dựa trên nhiệt độ
if (temperature > 25) {
digitalWrite(RELAY_PIN, HIGH); // Bật relay nếu nhiệt độ cao hơn 25 độ
} else {
digitalWrite(RELAY_PIN, LOW); // Tắt relay nếu nhiệt độ thấp hơn 25 độ
}
delay(1000); // Đợi một chút trước khi đọc lại
}
Loading
ds18b20
ds18b20