ESP32 Điều chỉnh độ sáng LED bằng Potentiometer

Tutorial này hướng dẫn bạn cách sử dụng ESP32 với potentiometer để thay đổi độ sáng của LED.

Nếu bạn muốn kích hoạt LED khi điện áp của potentiometer đạt ngưỡng nhất định, hãy xem tutorial ESP32 - Potentiometer Điều Khiển LED

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

1×38-pin ESP32 ESP-WROOM-32 Dev Module - Narrow Amazon
1×Alternatively, 38-pin ESP32 ESP-WROOM-32 Dev Module - Wide Amazon
1×Alternatively, 30-pin ESP32 ESP-WROOM-32 Dev Module - Wide Amazon
1×Alternatively, ESP32 Uno-form board Amazon
1×Alternatively, ESP32 S3 Uno-form board Amazon
1×Cáp USB Type-C Amazon
1×Chiết áp Amazon
1×Alternatively, 10k Ohm Trimmer Potentiometer Amazon
1×Mô-đun chiết áp có núm xoay Amazon
1×(Thay thế) Potentiometer Kit Amazon
1×(Thay thế) Potentiometer Module với núm xoay Amazon
1×LED Kit Amazon
1×LED (red) Amazon
1×LED Module Amazon
1×Alternatively, Button and LED Kit Amazon
1×Điện trở 220 ohm Amazon
1×breadboard (bo mạch thí nghiệm) Amazon
1×Dây Jumper Amazon
1×(Tùy chọn) DC Power Jack Amazon
1×(Khuyến nghị) Screw Terminal Expansion Board for ESP32 Amazon
1×(Khuyến nghị) Breakout Expansion Board for ESP32 Amazon
1×(Khuyến nghị) Power Splitter for ESP32 Amazon

Or you can buy the following kits:

1×DIYables ESP32 Starter Kit (ESP32 included) Amazon
1×DIYables Sensor Kit (18 sensors/displays) Amazon
Tiết lộ: Một số liên kết trong bài viết này là liên kết tiếp thị Amazon và có thể nhận hoa hồng theo chính sách của chương trình.

Về LED và Potentiometer

Chúng tôi có các tutorial riêng về LED và potentiometer. Mỗi tutorial 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

sơ đồ đấu nối ESP32 rotary chiết áp LED

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 giá trị đầu vào trên chân analog (giá trị từ 0 đến 4095)
int analogValue = analogRead(36); // GPIO36 (ADC0)
  • Chia tỷ lệ thành độ sáng (giá trị từ 0 đến 255)
int brightness = map(analogValue, 0, 4095, 0, 255);
  • Thiết lập độ sáng LED
analogWrite(LED_PIN, brightness);

Code ESP32

/* * 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-potentiometer-fade-led */ #define POTENTIOMETER_PIN 36 // ESP32 pin GPIO36 (ADC0) connected to Potentiometer pin #define LED_PIN 21 // ESP32 pin GPIO21 connected to LED's pin // the setup routine runs once when you press reset: void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); // declare LED pin to be an output: pinMode(LED_PIN, OUTPUT); } // the loop routine runs over and over again forever: void loop() { // reads the input on analog pin A0 (value between 0 and 4095) int analogValue = analogRead(POTENTIOMETER_PIN); // scales it to brightness (value between 0 and 255) int brightness = map(analogValue, 0, 4095, 0, 255); // sets the brightness LED that connects to pin 3 analogWrite(LED_PIN, brightness); // print out the value Serial.print("Analog value = "); Serial.print(analogValue); Serial.print(" => brightness = "); Serial.println(brightness); delay(100); }

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.
  • 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
  • Mở Serial Monitor trên Arduino IDE
cách mở serial monitor trên Arduino ide
  • Xoay potentiometer
  • Quan sát LED thay đổi độ sáng
  • Xem kết quả trên Serial Monitor. Nó sẽ giống như sau:
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
Analog value = 6 => brightness = 1 Analog value = 34 => brightness = 8 Analog value = 89 => brightness = 22 Analog value = 149 => brightness = 37 Analog value = 214 => brightness = 53 Analog value = 297 => brightness = 74 Analog value = 365 => brightness = 90 Analog value = 431 => brightness = 107 Analog value = 510 => brightness = 127 Analog value = 589 => brightness = 146 Analog value = 695 => brightness = 173 Analog value = 790 => brightness = 196 Analog value = 970 => brightness = 241 Analog value = 996 => brightness = 248 Analog value = 1018 => brightness = 253 Analog value = 4095 => brightness = 255
Ln 11, Col 1
ESP32 Dev Module on COM15
2

※ Lưu ý:

Tutorial này sử dụng hàm analogRead() để đọc giá trị từ ADC (Analog-to-Digital Converter) kết nối với potentiometer. ESP32 ADC tốt cho các dự án KHÔNG cần độ chính xác cao. Tuy nhiên, đối với các dự án cần phép đo chính xác, hãy lưu ý:

  • ESP32 ADC không hoàn toàn chính xác và có thể cần hiệu chuẩn để có kết quả đúng. Mỗi board ESP32 có thể khác nhau một chút, vì vậy bạn cần hiệu chuẩn ADC cho từng board riêng lẻ.
  • Hiệu chuẩn có thể khó khăn, đặc biệt đối với người mới bắt đầu, và có thể không luôn cho kết quả chính xác như bạn mong muốn.

Đối với các dự án cần độ chính xác cao, hãy xem xét sử dụng ADC ngoài (ví dụ ADS1115) với ESP32 hoặc sử dụng Arduino, có ADC đáng tin cậy hơn. Nếu bạn vẫn muốn hiệu chuẩn ESP32 ADC, hãy tham khảo ESP32 ADC Calibration Driver

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