ESP32 Nhấp Nháy Nhiều LED

Hướng dẫn này sẽ chỉ bạn cách lập trình ESP32 để nhấp nháy nhiều LED cùng lúc mà không sử dụng hàm delay.

Phần cứng cần chuẩn bị

1×mô-đun phát triển ESP-WROOM-32
1×Alternatively, ESP32 Uno-form board
1×Alternatively, ESP32 S3 Uno-form board
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
1×dây jumper
1×(Tùy chọn) DC Power Jack
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

Chúng tôi có một hướng dẫn cụ thể về LED. Hướng dẫn này 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, cách kết nối dây với ESP32, code ESP32... Tìm hiểu thêm tại link sau:

Sơ Đồ Kết Nối

ESP32 multiple 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 - Nhấp Nháy Nhiều LED

Để nhấp nháy nhiều LED, chúng ta không thể sử dụng hàm delay(). Thay vào đó, chúng ta cần sử dụng hàm millis() và quản lý các timestamp.

Việc quản lý timestamp khi nhấp nháy nhiều LED có thể khó khăn đối với người mới bắt đầu. May mắn thay, thư viện ezLED giúp đơn giản hóa quá trình nhấp nháy nhiều LED bằng cách quản lý timestamp nội bộ. Điều này giúp người dùng không cần phải xử lý việc quản lý timestamp khi sử dụng thư viện này. Ngoài ra, bạn có thể tăng độ rõ ràng và ngắn gọn của code bằng cách sử dụng mảng LED.

/* * 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-blink-multiple-led */ #include <ezLED.h> // ezLED library #define PIN_LED_1 16 // The ESP32 pin GPIO16 connected to LED 1 #define PIN_LED_2 17 // The ESP32 pin GPIO17 connected to LED 2 #define PIN_LED_3 18 // The ESP32 pin GPIO18 connected to LED 3 ezLED led1(PIN_LED_1); // create ezLED object that attach to pin PIN_LED_1 ezLED led2(PIN_LED_2); // create ezLED object that attach to pin PIN_LED_2 ezLED led3(PIN_LED_3); // create ezLED object that attach to pin PIN_LED_3 void setup() { Serial.begin(9600); led1.blink(500, 500); // 500ms ON, 500ms OFF, blink immediately led2.blink(200, 800); // 200ms ON, 800ms OFF, blink immediately led3.blink(200, 200); // 200ms ON, 200ms OFF, blink immediately } void loop() { led1.loop(); // MUST call the led1.loop() function in loop() led2.loop(); // MUST call the led2.loop() function in loop() led3.loop(); // MUST call the led3.loop() function in loop() // DO SOMETHING HERE }

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

  • Nếu đây là lần đầu bạn sử dụng ESP32, hãy xem ESP32 - Cài Đặt Phần Mềm.
  • Thực hiện kết nối dây như hình ở trên.
  • Kết nối board ESP32 với máy tính qua cáp micro USB
  • Mở Arduino IDE trên máy tính.
  • Chọn đúng board ESP32 (ví dụ: ESP32 Dev Module) và cổng COM.
  • Nhấp vào biểu tượng Libraries trên thanh bên trái của Arduino IDE.
  • Tìm kiếm "ezLED", sau đó tìm thư viện led của ArduinoGetStarted
  • Nhấp nút Install để cài đặt thư viện ezLED.
ESP32 LED thư viện
  • Sao chép 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ấp nút Upload trên Arduino IDE
how to upload ESP32 code on Arduino ide
  • Kiểm tra trạng thái của LED

Code ESP32 - Nhấp Nháy Nhiều LED Bằng Mảng

Chúng ta có thể tối ưu hóa code trên bằng cách sử dụng mảng LED. Code dưới đây sử dụng mảng để quản lý các đối tượng LED.

/* * 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-blink-multiple-led */ #include <ezLED.h> // ezLED library #define NUM_LED 3 // three LEDs #define PIN_LED_1 16 // The ESP32 pin GPIO16 connected to LED 1 #define PIN_LED_2 17 // The ESP32 pin GPIO17 connected to LED 2 #define PIN_LED_3 18 // The ESP32 pin GPIO18 connected to LED 3 ezLED ledArray[NUM_LED] = { ezLED(PIN_LED_1), // create ezLED object that attach to pin PIN_LED_1 ezLED(PIN_LED_2), // create ezLED object that attach to pin PIN_LED_2 ezLED(PIN_LED_3) // create ezLED object that attach to pin PIN_LED_3 }; void setup() { Serial.begin(9600); ledArray[0].blink(500, 500); // 500ms ON, 500ms OFF, blink immediately ledArray[1].blink(200, 800); // 200ms ON, 800ms OFF, blink immediately ledArray[2].blink(200, 200); // 200ms ON, 200ms OFF, blink immediately } void loop() { for (int i = 0; i < NUM_LED; i++) ledArray[i].loop(); // MUST call the led.loop() function in loop() // DO SOMETHING HERE }

Để có sự nhấp nháy linh hoạt hơn, hãy tham khảo các hàm khác của thư viện ezLED

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.