#include <LiquidCrystal.h>
// Khai báo chân LCD (RS, EN, D4, D5, D6, D7)
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
// Khai báo chân
const int buttonPin = 2; // Chân nút nhấn
const int ledPin = 3; // Chân LED
const int potPin = A0; // Chân biến trở
// Biến trạng thái
bool ledState = false; // Trạng thái đèn
int lastButtonState = LOW; // Lưu trạng thái nút nhấn trước đó
void setup() {
pinMode(buttonPin, INPUT_PULLUP); // Cài nút nhấn (INPUT_PULLUP)
pinMode(ledPin, OUTPUT); // Cài đèn LED làm OUTPUT
lcd.begin(16, 2); // Khởi tạo LCD với kích thước 16x2
lcd.print("Phong hop san"); // In dòng đầu tiên
}
void loop() {
// Đọc giá trị nút nhấn
int buttonState = digitalRead(buttonPin);
if (buttonState == LOW && lastButtonState == HIGH) {
// Đổi trạng thái đèn mỗi lần nhấn
ledState = !ledState;
digitalWrite(ledPin, ledState ? HIGH : LOW);
}
lastButtonState = buttonState;
// Điều chỉnh độ sáng đèn qua biến trở
int brightness = analogRead(potPin) / 4; // Chuyển giá trị 0-1023 thành 0-255
analogWrite(ledPin, brightness);
// Hiển thị trạng thái trên LCD
lcd.setCursor(0, 1); // Chuyển xuống dòng thứ 2
if (ledState) {
lcd.print("Den: Bat ");
} else {
lcd.print("Den: Tat ");
}
delay(50); // Giảm nhiễu từ nút nhấn
}