// Bài tập 1: Điều khiển LED bằng Serial và nút nhấn
// Mục tiêu:
// • Kết hợp điều khiển LED bằng cả Serial và nút nhấn.
// Yêu cầu:
// 1. Sử dụng một nút nhấn và một đèn LED.
// 2. Khi nhấn nút, LED sẽ bật nếu đang tắt và ngược lại (toggle).
// 3. Ngoài ra, có thể bật hoặc tắt LED bằng cách gửi lệnh "LED ON" và "LED OFF" qua Serial.
// Gợi ý mã nguồn:
// • Sử dụng digitalRead() để đọc trạng thái nút nhấn.
// • Sử dụng Serial.readStringUntil() để nhận lệnh từ Serial.
const int buttonPin = 2;
const int ledPin = 13;
bool ledState = false;
bool lastButtonState = HIGH;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
bool buttonState = digitalRead(buttonPin);
if (buttonState == LOW && lastButtonState == HIGH) {
ledState = !ledState;
digitalWrite(ledPin, ledState);
if (ledState) {
Serial.println("LED is ON");
} else {
Serial.println("LED is OFF");
}
delay(50);
}
lastButtonState = buttonState;
if (Serial.available() > 0) {
String command = Serial.readStringUntil('\n');
command.trim();
if (command == "LED ON") {
ledState = true;
digitalWrite(ledPin, HIGH);
Serial.println("LED is ON");
} else if (command == "LED OFF") {
ledState = false;
digitalWrite(ledPin, LOW);
Serial.println("LED is OFF");
}
}
}