Học cách đọc trạng thái nút nhấn (Button) và điều khiển đèn LED bằng ESP32. Bài hướng dẫn chi tiết cho người mới bắt đầu với Arduino IDE và mạch ESP32 DevKit.
Mục lục
- Giới thiệu
- Nguyên lý hoạt động
- Phần cứng cần chuẩn bị
- Sơ đồ kết nối
- Mã nguồn ví dụ
- Giải thích mã
- Kết quả khi chạy
- Gợi ý mở rộng
1. Giới thiệu
Trong các dự án IoT, việc nhận tín hiệu từ nút nhấn và điều khiển thiết bị (như LED, relay) là thao tác cơ bản nhưng rất quan trọng.
Ở bài này, chúng ta sẽ:
- Đọc trạng thái của nút nhấn.
- Khi nhấn, LED sáng; khi thả, LED tắt.
- Làm quen với khái niệm digital input và digital output.
2. Nguyên lý hoạt động
Nút nhấn hoạt động như một công tắc tạm thời (momentary switch).
Khi nhấn, chân INPUT của ESP32 được nối xuống GND → mức LOW.
Khi thả, nó trở về mức HIGH nhờ điện trở kéo lên (pull-up resistor) tích hợp sẵn trong ESP32.
3. Phần cứng cần chuẩn bị
| Linh kiện | Số lượng | Ghi chú |
| ESP32 DevKit V1 | 1 | Board chính |
| Nút nhấn (Button) | 1 | Loại 4 chân hoặc 2 chân |
| Điện trở 220Ω | 1 | Cho LED |
| LED đỏ | 1 | Hiển thị trạng thái |
| Dây nối Breadboard | Vài sợi | Kết nối mạch |
4. Sơ đồ kết nối (Connection Diagram)

Mô tả sơ đồ:
- LED nối với chân GPIO2 thông qua điện trở 220Ω.
- Nút nhấn nối GPIO4 và GND.
- Nguồn lấy từ USB (5V).
5. Mã nguồn ví dụ
#define LED_PIN 2
#define BUTTON_PIN 4
void setup() {
pinMode(LED_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP); // dùng điện trở kéo lên nội bộ
Serial.begin(115200);
}
void loop() {
int buttonState = digitalRead(BUTTON_PIN);
if (buttonState == LOW) { // nhấn nút
digitalWrite(LED_PIN, HIGH);
Serial.println("Button pressed - LED ON");
} else {
digitalWrite(LED_PIN, LOW);
Serial.println("Button released - LED OFF");
}
delay(100); // chống nhiễu nhẹ
}
6. Giải thích mã
- pinMode(BUTTON_PIN, INPUT_PULLUP) – bật điện trở kéo lên nội bộ giúp ổn định tín hiệu.
- digitalRead() – đọc trạng thái HIGH/LOW của nút nhấn.
- Khi nhấn → tín hiệu LOW → bật LED.
- Khi thả → tín hiệu HIGH → tắt LED.
7. Kết quả khi chạy
- Khi nhấn nút, LED sáng.
- Khi thả nút, LED tắt.
- Trên Serial Monitor sẽ hiển thị:
Button pressed - LED ON
Button released - LED OFF
8. Gợi ý mở rộng
- Thêm chống dội (debounce) bằng phần mềm.
- Dùng nút để chuyển đổi trạng thái LED (toggle mode).
- Kết hợp thêm cảm biến hoặc relay để điều khiển thiết bị thực tế.


Để lại một bình luận