ESP32 Nút Nhấn Bật Tắt LED

Hướng dẫn này sẽ chỉ bạn cách sử dụng ESP32 để chuyển đổi trạng thái của LED giữa BẬT và TẮT khi nút nhấn được bấm. Cụ thể:

Code ESP32 bao gồm code cho nút nhấn bật tắt LED không có và có chống nhiễu (debouncing)

Phần Cứng Cần Thiết

1×mô-đun phát triển ESP-WROOM-32
1×Alternatively, ESP32 Uno-form board
1×Alternatively, ESP32 S3 Uno-form board
1×Cáp USB Type-C
1×Nút Nhấn Cắm Breadboard có Nắp
1×Bộ Kit Nút Nhấn Breadboard
1×Nút Nhấn Gắn Panel
1×mô-đun nút nhấn
1×LED Kit
1×LED (red)
1×LED Module
1×Điện trở 220 ohm
1×breadboard
1×Dây Jumper
1×Jack Nguồn DC (Tùy chọn)
1×(Khuyến nghị) Screw Terminal Expansion Board for ESP32
1×(Khuyến nghị) Breakout Expansion Board for ESP32
1×(Khuyến nghị) Power Splitter for ESP32

Or you can buy the following kits:

1×DIYables ESP32 Starter Kit (ESP32 included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về LED và Nút Nhấn

Chúng tôi có các hướng dẫn cụ thể về LED và nút nhấn. Mỗi hướng dẫn chứa thông tin chi tiết và hướng dẫn từng bước về pinout phần cứng, nguyên lý hoạt động, kết nối dây với ESP32, code ESP32... Tìm hiểu thêm tại các liên kết sau:

Sơ Đồ Đấu Nối

ESP32 nút nhấn LED sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

Nếu bạn chưa rõ cách cấp nguồn cho ESP32 và các linh kiện khác, xem: Cách Cung Cấp Nguồn Điện Cho ESP32.

Code ESP32 - Nút Nhấn Bật Tắt LED Không Có Chống Nhiễu

/* * Mã ESP32 này được phát triển bởi newbiely.vn * Mã ESP32 này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp32/esp32-button-toggle-led */ #define BUTTON_PIN 18 // ESP32 pin GPIO18, which connected to button #define LED_PIN 21 // ESP32 pin GPIO21, which connected to led // variables will change: int led_state = LOW; // the current state of LED int button_state; // the current state of button int last_button_state; // the previous state of button void setup() { Serial.begin(9600); // initialize serial pinMode(BUTTON_PIN, INPUT_PULLUP); // set ESP32 pin to input pull-up mode pinMode(LED_PIN, OUTPUT); // set ESP32 pin to output mode button_state = digitalRead(BUTTON_PIN); } void loop() { last_button_state = button_state; // save the last state button_state = digitalRead(BUTTON_PIN); // read new state if (last_button_state == HIGH && button_state == LOW) { Serial.println("The button is pressed"); // toggle state of LED led_state = !led_state; // control LED arccoding to the toggled state digitalWrite(LED_PIN, led_state); } }

Các Bước Thực Hiện

  • Nếu đây là lần đầu tiên bạn sử dụng ESP32, hãy xem ESP32 - Cài Đặt Phần Mềm.
  • Đấu nối theo sơ đồ trên.
  • Kết nối board ESP32 với PC qua cáp micro USB
  • Mở Arduino IDE trên PC.
  • Chọn đúng board ESP32 (ví dụ: ESP32 Dev Module) và cổng COM.
  • Copy code trên và dán vào Arduino IDE.
  • Biên dịch và upload code lên board ESP32 bằng cách nhấn nút Upload trên Arduino IDE
  • Giữ nút nhấn trong vài giây rồi thả ra.
  • Quan sát sự thay đổi trạng thái của LED

Giải Thích Code Từng Dòng

Code ESP32 trên có giải thích từng dòng. Hãy đọc các comment trong code!

Trong code, led_state = !led_state tương đương với code sau:

if(led_state == LOW) led_state = HIGH; else led_state = LOW;

※ Lưu ý:

Code trên không có code chống nhiễu cho nút nhấn. Không có chống nhiễu cho nút nhấn có thể dẫn đến các hành vi không mong muốn. Xem Tại sao cần chống nhiễu cho nút nhấn. Chống nhiễu cho nút nhấn khá phức tạp đối với người mới bắt đầu. May mắn thay, thư viện ezButton sẽ thực hiện chống nhiễu cho chúng ta.

Code ESP32 - Nút Nhấn Bật Tắt LED Có Chống Nhiễu

/* * Mã ESP32 này được phát triển bởi newbiely.vn * Mã ESP32 này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp32/esp32-button-toggle-led */ #include <ezButton.h> #define BUTTON_PIN 18 // ESP32 pin GPIO18, which connected to button #define LED_PIN 21 // ESP32 pin GPIO21, which connected to led ezButton button(BUTTON_PIN); // create ezButton object that attach to pin 7; // variables will change: int led_state = LOW; // the current state of LED void setup() { Serial.begin(9600); // initialize serial pinMode(LED_PIN, OUTPUT); // set ESP32 pin to output mode button.setDebounceTime(50); // set debounce time to 50 milliseconds } void loop() { button.loop(); // MUST call the loop() function first if (button.isPressed()) { Serial.println("The button is pressed"); // toggle state of LED led_state = !led_state; // control LED arccoding to the toggleed sate digitalWrite(LED_PIN, led_state); } }

Các Bước Thực Hiện

  • Nếu đây là lần đầu tiên bạn sử dụng ESP32, hãy xem ESP32 - Cài Đặt Phần Mềm.
  • Cài đặt thư viện ezButton. Xem Hướng Dẫn
  • Copy code trên và dán vào Arduino IDE.
  • Biên dịch và upload code lên board ESP32 bằng cách nhấn nút Upload trên Arduino IDE
  • Nhấn nút nhấn vài lần
  • Quan sát sự thay đổi trạng thái của LED

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.

Bình Luận