MỤC LỤC
Giới Thiệu: Điều Khiển LED Bằng Nút Nhấn Trên Arduino
Trong bài này, chúng ta sẽ học cách sử dụng nút nhấn để điều khiển LED bằng nút nhấn trên Arduino – một ứng dụng cơ bản nhưng vô cùng quan trọng trong lập trình IoT và điện tử. Bạn sẽ hiểu cách đọc trạng thái nút nhấn và điều khiển LED theo ý muốn.
✅ Bạn sẽ học được:
✔ Cách kết nối nút nhấn với Arduino
✔ Phương pháp đọc tín hiệu digital từ nút nhấn
✔ Cách viết chương trình điều khiển LED bằng nút nhấn
✔ Kỹ thuật chống nhiễu phím (debounce)
1. Nguyên Lý Hoạt Động Của Nút Nhấn Với Arduino
Nút nhấn (button) là linh kiện cơ học:
-
Khi nhấn: Mạch kín (kết nối 2 chân)
-
Khi thả: Mạch hở (ngắt kết nối)
Arduino đọc trạng thái nút nhấn qua hàm digitalRead()
.
2. Chuẩn Bị Linh Kiện
Linh Kiện | Số Lượng | Ghi Chú |
---|---|---|
Arduino Uno | 1 | Có thể dùng Nano, Mega |
Nút nhấn | 1 | Loại thường mở (NO) |
LED | 1 | Màu tùy chọn |
Điện trở 220Ω | 2 | 1 cho LED, 1 cho nút nhấn |
Dây cắm | 5 | Kết nối mạch |
3. Sơ Đồ Đấu Nối
-
Nút nhấn:
-
Một chân → 5V
-
Chân đối diện → D2 qua điện trở 10kΩ (pull-down) → GND
-
-
LED:
-
Dương → D13 qua 220Ω
-
Âm → GND
-
💡 Mẹo: Dùng
INPUT_PULLUP
để giảm điện trở bên ngoài
4. Code Mẫu Điều Khiển LED Bằng Nút Nhấn
Phiên Bản Cơ Bản
const int buttonPin = 2; // Nút nhấn ở D2 const int ledPin = 13; // LED ở D13 void setup() { pinMode(buttonPin, INPUT_PULLUP); // Dùng điện trở pull-up nội pinMode(ledPin, OUTPUT); } void loop() { if (digitalRead(buttonPin) == LOW) { // Nếu nút được nhấn digitalWrite(ledPin, HIGH); // Bật LED } else { digitalWrite(ledPin, LOW); // Tắt LED } }
Phiên Bản Nâng Cao (Có Debounce)
const int buttonPin = 2; const int ledPin = 13; int ledState = LOW; int lastButtonState = HIGH; unsigned long lastDebounceTime = 0; unsigned long debounceDelay = 50; void setup() { pinMode(buttonPin, INPUT_PULLUP); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, ledState); } void loop() { int reading = digitalRead(buttonPin); if (reading != lastButtonState) { lastDebounceTime = millis(); } if ((millis() - lastDebounceTime) > debounceDelay) { if (reading == LOW) { ledState = !ledState; } } digitalWrite(ledPin, ledState); lastButtonState = reading; }
Giải thích code:
-
INPUT_PULLUP
: Sử dụng điện trở pull-up nội -
debounceDelay
: Thời gian chống nhiễu (50ms) -
millis()
: Hàm đếm thời gian chính xác
5. Ứng Dụng Thực Tế điều khiển LED bằng nút nhấn
a. Công Tắc Đèn Thông Minh
-
Nhấn 1 lần → Bật đèn
-
Nhấn lần nữa → Tắt đèn
b. Hệ Thống Báo Động
-
Nhấn giữ 3 giây → Kích hoạt báo động
c. Điều Khiển Bằng Nhiều Nút
-
Nút 1: Bật LED
-
Nút 2: Tắt LED
6. Sửa Lỗi Thường Gặp
❌ LED sáng không ổn định
→ Thêm điện trở pull-up/pull-down
→ Áp dụng kỹ thuật debounce
❌ Nút nhấn không hoạt động
→ Kiểm tra đấu nối đúng chân
→ Test bằng đồng hồ đo thông mạch
❌ LED không tắt hẳn
→ Dùng digitalWrite(ledPin, LOW)
thay vì analogWrite(ledPin, 0)
Kết Luận
Bạn đã thành thạo:
✔ Cách đọc tín hiệu nút nhấn với Arduino
✔ Phương pháp điều khiển LED bằng button
✔ Kỹ thuật chống nhiễu phím (debounce)
➤ Bài tiếp theo: Bài 9 – Đọc Giá Trị Analog Từ Cảm Biến Ánh Sáng
CHÚC CÁC BẠN THÀNH CÔNG
Có thể bạn quan tâm
- TOP 5 Bộ KIT học tập Arduino cho người học lập trình
- Tài liệu học điện tử miễn phí
- Kênh YouTobe hay về điện tử, mạch điện
- Fanpage cùng nhau học điện tử
- Chia sẻ kiến thức điện tử cơ bản
NƠI MUA LINH KIỆN GIÁ TỐT
- Linh kiện điện tử giá siêu rẻ : Shop Ristina.vn
- Linh kiện điện tử, nhà thông minh : Shop Làm Chủ Công Nghệ
- Chuyên mạch nguồn, sạc dự phòng chỉ từ 1K: Shop Điện Tử AT
- Chuyên pin sạc 18650, Pin sạc AA: Shop Linhkiengiatot
- Chuyên các thiết bị điện công nghiệp: Shop Linhkien123
Bài viết thuộc chuỗi học lập trình Arduino cơ bản trên dientu5ngay.com.