ESP32 PWM
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách tạo tín hiệu PWM với ESP32 bằng Arduino IDE. Để làm ví dụ, chúng tôi sẽ xây dựng một mạch đơn giản làm mờ đèn LED bằng cách sử dụng bộ điều khiển LED PWM của ESP32. Chúng tôi cũng sẽ chỉ cho bạn cách bạn có thể nhận được cùng một tín hiệu PWM trên các GPIO khác nhau cùng một lúc.
PHẦN 1: GIẢI QUYẾT VẤN ĐỀ.
- PWM : Có nghĩa là điều chỉnh độ rộng xung.
- Điều chỉnh độ sáng của led, của bóng đèn, còn điều chỉnh vd tốc độ động cơ DC nhanh hay chậm ... Còn điều chỉnh tốc độ động cơ AC người ta dùng biến tần nhé !.
1. Đầu tiên, bạn cần chọn một kênh PWM. Có 16 kênh từ 0 đến 15.
2. Sau đó, bạn cần đặt tần số tín hiệu PWM. Đối với đèn LED, tần số 5000 Hz là tốt để sử dụng.
3. Bạn cũng cần đặt độ phân giải chu kỳ nhiệm vụ của tín hiệu: bạn có độ phân giải từ 1 đến 16 bit. Chúng tôi sẽ sử dụng độ phân giải 8 bit, có nghĩa là bạn có thể kiểm soát độ sáng của đèn LED bằng cách sử dụng giá trị từ 0 đến 255.
4. Tiếp theo, bạn cần chỉ định GPIO hoặc GPIO nào mà tín hiệu sẽ xuất hiện. Để làm được điều đó, bạn sẽ sử dụng chức năng sau:
ledcAttachPin(GPIO, channel)
Ta ví dụ đoạn code sau :
const int ledPin = 16; // Chân số 16 xuất tính hiệu ra điều khiển led.
const int freq = 5000; // TẦN SỐ 5000 HZ
const int ledChannel = 0; // kênh 0.
const int resolution = 8; // độ phân giải 8 bít đếm từ 0-255.
void setup(){
// cấu hình kênh 0, 5000 hz, phân giải 8 bit.
ledcSetup(ledChannel, freq, resolution);
// ledPin =16, chân số 16, kênh số 0 đưa ra ngõ led đó.
ledcAttachPin(ledPin, ledChannel);
}
void loop(){
// cho biến dutycycle tăng từ 0 --> 255.
// Led sang dần.
for(int dutyCycle = 0; dutyCycle <= 255; dutyCycle++){
// changing the LED brightness with PWM
ledcWrite(ledChannel, dutyCycle);
delay(15);
}
// Led Tối dần
for(int dutyCycle = 255; dutyCycle >= 0; dutyCycle--){
// changing the LED brightness with PWM
ledcWrite(ledChannel, dutyCycle);
delay(15);
}
}
* Những giải thích khác đã đính kèm trong code. chúc các bạn học tốt !