ESP8266 đèn LED Nháy mà không dùng delay()
Giả sử ESP8266 có hai nhiệm vụ cần thực hiện: nháy một đèn LED và giám sát trạng thái của một nút có thể được nhấn bất cứ lúc nào. Nếu chúng ta sử dụng hàm [delay()] (như được giải thích trong ESP8266 - Đèn LED), ESP8266 có thể bỏ lỡ một số lần nhấn nút. Nói cách khác, ESP8266 sẽ không thể thực hiện đầy đủ nhiệm vụ thứ hai.
Bài hướng dẫn này chỉ cho bạn cách làm cho ESP8266 nhấp nháy một đèn LED và theo dõi trạng thái của một nút bấm mà không bỏ lỡ bất kỳ lần nhấn nào.
Chúng ta sẽ xem qua ba ví dụ và so sánh những khác biệt giữa chúng:
- ESP8266 nhấp nháy một đèn LED với hàm delay()
- ESP8266 nhấp nháy một đèn LED với hàm millis()
- ESP8266 nhấp nháy một đèn LED với thư viện ezLED
Phương pháp này không chỉ giới hạn ở việc nhấp nháy đèn LED và kiểm tra trạng thái của nút. Nó cho phép ESP8266 thực hiện nhiều tác vụ đồng thời mà không làm gián đoạn lẫn nhau.
Phần cứng cần chuẩn bị
| 1 | × | ESP8266 NodeMCU ESP-12E | ||
| 1 | × | Recommended: ESP8266 NodeMCU ESP-12E (Uno-form) | ||
| 1 | × | USB Cable Type-A to Type-C (for USB-A PC) | ||
| 1 | × | USB Cable Type-C to Type-C (for USB-C PC) | ||
| 1 | × | LED Kit | ||
| 1 | × | LED (red) | ||
| 1 | × | LED Module | ||
| 1 | × | 220Ω Resistor | ||
| 1 | × | breadboard-mount Button with Cap | ||
| 1 | × | breadboard-mount Button Kit | ||
| 1 | × | Panel-mount Push Button | ||
| 1 | × | mô-đun nút nhấn | ||
| 1 | × | breadboard | ||
| 1 | × | dây jumper | ||
| 1 | × | (Khuyến nghị) Screw Terminal Expansion Board for ESP8266 | ||
| 1 | × | (Khuyến nghị) Power Splitter for ESP8266 Type-C |
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Về LED và Nút
Nếu bạn chưa quen với LED và nút nhấn (bố trí chân, chức năng, lập trình ...), các bài hướng dẫn sau đây có thể giúp bạn:
Sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image
Xem thêm Sơ đồ chân ESP8266 và Cách cấp nguồn cho ESP8266.
Mã ESP8266 - Với độ trễ
Hướng dẫn từng bước
Để bắt đầu với ESP8266 trên Arduino IDE, hãy làm theo các bước sau:
- Xem hướng dẫn cách thiết lập môi trường cho ESP8266 trên Arduino IDE (BASE_URL/tutorials/esp8266/esp8266-software-installation) nếu đây là lần đầu bạn sử dụng ESP8266.
- Gắn kết các linh kiện như trong sơ đồ.
- Kết nối bo mạch ESP8266 với máy tính của bạn bằng cáp USB.
- Mở Arduino IDE trên máy tính của bạn.
- Chọn bo mạch ESP8266 phù hợp, ví dụ NodeMCU 1.0 (Mô-đun ESP-12E), và cổng COM tương ứng của nó.
- Cắm cáp USB vào ESP8266 và máy tính.
- Khởi động Arduino IDE, chọn bo mạch và cổng đúng.
- Sao chép mã và mở nó trong Arduino IDE.
- Nhấn nút Tải lên trong Arduino IDE để biên dịch và tải mã lên ESP8266.

- Mở Serial Monitor.
- Nhấn nút bốn lần.
- Kiểm tra LED; nó sẽ luân phiên bật và tắt cứ mỗi giây.
- Xem đầu ra trong Serial Monitor.
- Trên Serial Monitor, một số lần nhấn nút đã không được ghi nhận. Điều này là do trong khi đang ở trạng thái delay, ESP8266 không thể thực hiện bất kỳ tác vụ nào. Do đó, nó không thể phát hiện sự kiện nhấn nút.
Mã ESP8266 - Không có độ trễ
Hướng dẫn từng bước
- Nối các thành phần như hình vẽ.
- Kết nối bo mạch ESP8266 với máy tính của bạn bằng cáp USB.
- Mở Arduino IDE trên máy tính của bạn.
- Chọn bo mạch ESP8266 đúng, ví dụ như NodeMCU 1.0 (ESP-12E Module), và cổng COM tương ứng.
- Chạy mã và nhấn nút 4 lần.
- Đèn LED sẽ luân phiên giữa BẬT và TẮT với chu kỳ một giây.
- Kiểm tra đầu ra trên Serial Monitor.
- Tất cả các trường hợp khẩn cấp đã được xác định.
Giải thích mã nguồn
Hãy xem giải thích theo từng dòng được chứa trong các bình luận của mã nguồn!
Thêm nhiều nhiệm vụ
Mã ESP8266 ở dưới đây làm
- Làm cho hai đèn LED nhấp nháy với các chu kỳ khác nhau.
- Kiểm tra trạng thái của nút nhấn.
Video Tutorial
Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.
Khả năng mở rộng
Phương pháp này cho phép ESP8266 thực hiện đồng thời nhiều tác vụ mà không tác vụ nào chặn tác vụ khác. Ví dụ, gửi một yêu cầu tới Internet và đợi phản hồi, đồng thời nháy các đèn LED và theo dõi nút hủy.