Lập trình ESP32 (2/8): GPIO digital, nút bấm & chống dội (debounce)
GPIO ESP32: digitalRead/Write, nút bấm pull-up nội, toggle LED, debounce phần mềm — nền tảng đọc cảm biến digital.
· 2 min read
Khóa lập trình Arduino ESP32 cơ bản — IoT từ Blink đến SmartNode · Phần 2/8▼
Phần 2/8 (~30 phút) · Trước: Phần 1 · Sau: Phần 3 — PWM & servo
Mục tiêu
- Cấu hình INPUT / OUTPUT
- Nút bấm với INPUT_PULLUP
- Toggle LED theo cạnh nhấn
- Debounce cơ bản
Sơ đồ nút bấm
- Một chân nút → GPIO 18
- Chân còn lại → GND
- LED vẫn ở GPIO 2
const int LED_PIN = 2;
const int BTN_PIN = 18;
bool ledOn = false;
unsigned long lastDebounce = 0;
const unsigned long DEBOUNCE_MS = 50;
void setup() {
pinMode(LED_PIN, OUTPUT);
pinMode(BTN_PIN, INPUT_PULLUP);
Serial.begin(115200);
}
void loop() {
int reading = digitalRead(BTN_PIN);
if (reading == LOW) {
if (millis() - lastDebounce > DEBOUNCE_MS) {
lastDebounce = millis();
ledOn = !ledOn;
digitalWrite(LED_PIN, ledOn ? HIGH : LOW);
Serial.println(ledOn ? "LED ON" : "LED OFF");
}
}
}
Cách trên đơn giản; production nên dùng state machine debounce (HIGH → LOW ổn định 50 ms mới tính một lần nhấn).
Strapping pins
Tránh dùng làm nút/LED tùy ý: GPIO 0, 2, 12, 15 (ảnh hưởng boot). GPIO 18, 19, 21, 22, 23 an toàn cho demo.
Bài tập
- Nhấn giữ 2 giây → đổi tốc độ Blink (chuẩn bị cho phần 3).
- Thêm nút thứ hai trên GPIO 19 — reset LED về OFF.
Câu hỏi thường gặp
INPUT_PULLUP nghĩa là gì?
Kích hoạt điện trở kéo lên nội bộ — nút nối GPIO với GND: thả = HIGH, nhấn = LOW. Không cần điện trở ngoài 10k nếu dùng pull-up nội.
Bài đọc tiếp theo
Lập trình ESP32 (1/8): Giới thiệu board, cài Arduino IDE & Blink LED
Khóa Arduino ESP32 miễn phí — phần 1: chọn board ESP32-WROOM, cài core esp32 trên Arduino IDE 2.x, nạp Blink, hiểu Serial Monitor. Lộ trình: /blog/hoc-lap-trinh-arduino-esp32-tu-dau
Đọc tiếp →Lập trình ESP32 (3/8): PWM — LED fade & điều khiển servo SG90
LEDC PWM trên ESP32, fade LED mượt, thư viện ESP32Servo — điều khiển góc servo 0–180°.
Đọc tiếp →Lập trình ESP32 (4/8): ADC — cảm biến analog & DHT22
Đọc ADC 12-bit, chia áp, biến trở; thư viện DHT — nhiệt độ/độ ẩm cho SmartNode.
Đọc tiếp →Startup của bạn cần tech partner?
Trao đổi miễn phí về MVP, timeline và mô hình chia lợi nhuận phù hợp.