ESP32 LED Fade (Hiệu Ứng Mờ Dần)

Hướng dẫn này sẽ chỉ bạn cách sử dụng:

Linh Kiện 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×LED Kit
1×LED (red)
1×LED Module
1×Điện trở 220 ohm
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

Sơ Đồ Chân LED

LED bao gồm hai chân:

  • Chân Cathode(-): kết nối chân này với GND (0V)
  • Chân Anode(+): được sử dụng để điều khiển trạng thái của LED
LED sơ đồ chân

Cách LED Hoạt Động

Sau khi kết nối cathode(-) với GND:

  • Nếu chúng ta kết nối GND với anode(+), LED sẽ TẮT.
  • Nếu chúng ta kết nối VCC với anode(+), LED sẽ SÁNG.
  • Nếu chúng ta tạo tín hiệu PWM tới chân anode(+), độ sáng của LED sẽ tỉ lệ với chu kỳ nhiệm vụ PWM (duty cycle). Chu kỳ nhiệm vụ PWM thay đổi từ 0 đến 255. Chu kỳ nhiệm vụ PWM càng lớn, LED càng sáng.
    • Nếu giá trị PWM là 0, nó tương đương với GND ⇒ LED TẮT
    • Nếu giá trị PWM là 255, nó tương đương với VCC ⇒ LED SÁNG ở độ sáng cao nhất.
    how LED works

    ※ Lưu ý:

    Thông thường, cần một điện trở để bảo vệ LED khỏi bị cháy. Giá trị điện trở phụ thuộc vào thông số kỹ thuật của LED.

    ESP32 - Tạo Hiệu Ứng Fade LED

    Các chân đầu ra số của ESP32 có thể được lập trình để tạo tín hiệu PWM. Bằng cách kết nối chân anode(+) của LED với một chân của ESP32, cathode(-) của LED với GND, và sau đó lập trình ESP32 để thay đổi chu kỳ nhiệm vụ của PWM, chúng ta có thể tạo hiệu ứng fade cho LED.

Sơ Đồ Kết Nối giữa LED và ESP32

ESP32 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.

Cách Lập Trình

  • Cấu hình một chân ESP32 làm chân đầu ra số bằng cách sử dụng hàm pinMode(). Ví dụ, chân GPIO18:
pinMode(18, OUTPUT);
  • Đặt độ sáng của LED bằng cách tạo tín hiệu PWM với chu kỳ nhiệm vụ tương ứng bằng hàm analogWrite():
analogWrite(18, brightness);

Trong đó brightness là một giá trị từ 0 đến 255.

Code ESP32 - Ví Dụ Fade Đơn Giản

Các Bước Nhanh

  • 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.
  • Thực hiện kết nối theo hình ảnh trên.
  • Kết nối board ESP32 với PC của bạn qua cáp micro USB
  • Mở Arduino IDE trên PC của bạn.
  • Chọn đúng board ESP32 (ví dụ: ESP32 Dev Module) và cổng COM.
  • Sao chép code bên dưới và dán vào Arduino IDE.
/* * 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-led-fade */ #define LED_PIN 18 // ESP32 pin GPIO18 connected to LED int brightness = 0; // how bright the LED is int fadeAmount = 5; // how many points to fade the LED by // the setup routine runs once when you press reset: void setup() { // declare pin GPIO18 to be an output: pinMode(LED_PIN, OUTPUT); } // the loop routine runs over and over again forever: void loop() { // set the brightness of pin GPIO18: analogWrite(LED_PIN, brightness); // change the brightness for next time through the loop: brightness = brightness + fadeAmount; // reverse the direction of the fading at the ends of the fade: if (brightness <= 0 || brightness >= 255) { fadeAmount = -fadeAmount; } // wait for 30 milliseconds to see the dimming effect delay(30); }
  • Biên dịch và upload code lên board ESP32 bằng cách nhấn nút Upload trên Arduino IDE
tải mã lên Arduino IDE
  • Quan sát độ sáng của LED

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

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

※ Lưu ý:

Ví dụ trên sử dụng hàm delay() để tạo hiệu ứng fade-in và fade-out. Hàm delay() làm cho LED fade không mượt và chặn các code khác. Trong phần tiếp theo, chúng ta sẽ học cách tạo hiệu ứng fade-in và fade-out mượt mà mà không chặn code khác bằng cách sử dụng hàm millis()

Cách tạo hiệu ứng fade-in LED trong một khoảng thời gian mà không sử dụng delay()

/* * 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-led-fade */ #define LED_PIN 18 // ESP32 pin GPIO18 connected to LED #define FADE_PEDIOD 3000 // fade time is 3 seconds unsigned long fadeStartTime; // the setup routine runs once when you press reset void setup() { pinMode(LED_PIN, OUTPUT); // declare pin GPIO18 to be an output fadeStartTime = millis(); } // fade-in in loop, and restart after finishing void loop() { unsigned long progress = millis() - fadeStartTime; if (progress <= FADE_PEDIOD) { long brightness = map(progress, 0, FADE_PEDIOD, 0, 255); analogWrite(LED_PIN, brightness); } else { fadeStartTime = millis(); // restart fade again } }

Cách tạo hiệu ứng fade-out LED trong một khoảng thời gian mà không sử dụng delay()

/* * 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-led-fade */ #define LED_PIN 18 // ESP32 pin GPIO18 connected to LED #define FADE_PEDIOD 3000 // fade time is 3 seconds unsigned long fadeStartTime; // the setup routine runs once when you press reset void setup() { pinMode(LED_PIN, OUTPUT); // declare pin GPIO18 to be an output fadeStartTime = millis(); } // fade-out in loop, and restart after finishing void loop() { unsigned long progress = millis() - fadeStartTime; if (progress <= FADE_PEDIOD) { long brightness = 255 - map(progress, 0, FADE_PEDIOD, 0, 255); analogWrite(LED_PIN, brightness); } else { fadeStartTime = millis(); // restart fade again } }

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.

Tài Liệu Tham Khảo

Bình Luận