// Khai báo chân kết nối
const int buttonPin = 2; // Chân nối với nút nhấn
const int ledPin = 4; // Chân nối với LED (thường là 13 trên Arduino Uno)
// Biến trạng thái
bool ledState = false; // Trạng thái của LED (true là bật, false là tắt)
bool lastButtonState = LOW; // Trạng thái trước đó của nút nhấn
bool buttonPressed = false; // Biến kiểm tra nút đã được nhấn hay chưa
void setup() {
pinMode(buttonPin, INPUT_PULLUP); // Nút nhấn có thể sử dụng điện trở kéo lên nội bộ
pinMode(ledPin, OUTPUT); // LED là đầu ra
digitalWrite(ledPin, LOW); // Ban đầu LED tắt
Serial.begin(9600); // Bắt đầu giao tiếp Serial với baud rate 9600
}
void loop() {
// Đọc trạng thái nút nhấn
bool buttonState = digitalRead(buttonPin);
// Kiểm tra nếu có thay đổi trạng thái của nút nhấn (chống dội nút)
if (buttonState == LOW && lastButtonState == HIGH && !buttonPressed) {
buttonPressed = true; // Đánh dấu rằng nút đã được nhấn
} else if (buttonState == HIGH && lastButtonState == LOW && buttonPressed) {
// Nếu nút được nhả ra sau khi nhấn, thực hiện toggle LED
ledState = !ledState;
digitalWrite(ledPin, ledState ? HIGH : LOW);
buttonPressed = false;
}
// Cập nhật trạng thái trước của nút nhấn
lastButtonState = buttonState;
// Kiểm tra dữ liệu từ Serial
if (Serial.available() > 0) {
String command = Serial.readStringUntil('\n'); // Đọc lệnh từ Serial
// Kiểm tra các lệnh điều khiển LED
command.trim(); // Xóa khoảng trắng hoặc ký tự xuống dòng thừa
if (command == "LED ON") {
ledState = true;
digitalWrite(ledPin, HIGH);
} else if (command == "LED OFF") {
ledState = false;
digitalWrite(ledPin, LOW);
}
}
}