// Khai báo các chân
const int ledPin = 5; // Chân GPIO 5 nối với LED
const int buttonPin = 18; // Chân GPIO 18 nối với nút nhấn
bool ledState = false; // Trạng thái của LED
void setup() {
// Thiết lập chế độ chân
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP); // Sử dụng điện trở kéo nội bộ
// Khởi tạo UART
Serial.begin(115200);
// Ban đầu tắt LED
digitalWrite(ledPin, LOW);
Serial.println("LED is OFF");
}
void loop() {
// Kiểm tra trạng thái của nút nhấn
if (digitalRead(buttonPin) == LOW) { // Nút nhấn được nhấn (active low)
delay(50); // Debounce
if (digitalRead(buttonPin) == LOW) { // Kiểm tra lại để tránh nhiễu
ledState = !ledState; // Đổi trạng thái của LED
// Cập nhật LED
digitalWrite(ledPin, ledState ? HIGH : LOW);
// Gửi trạng thái qua UART
if (ledState) {
Serial.println("LED is ON");
} else {
Serial.println("LED is OFF");
}
// Đợi đến khi nút được thả ra
while (digitalRead(buttonPin) == LOW);
}
}
}