Lập trình ESP32 (3/8): PWM — LED fade & điều khiển servo SG90
LEDC PWM trên ESP32, fade LED mượt, thư viện ESP32Servo — điều khiển góc servo 0–180°.
· 1 min read
Khóa lập trình Arduino ESP32 cơ bản — IoT từ Blink đến SmartNode · Phần 3/8▼
Phần 3/8 (~35 phút) · Phần 2 · Phần 4 — ADC
LED fade với LEDC
const int LED_PIN = 4;
const int PWM_CHANNEL = 0;
const int PWM_FREQ = 5000;
const int PWM_RES = 8; // 0-255
void setup() {
ledcSetup(PWM_CHANNEL, PWM_FREQ, PWM_RES);
ledcAttachPin(LED_PIN, PWM_CHANNEL);
}
void loop() {
for (int d = 0; d <= 255; d++) {
ledcWrite(PWM_CHANNEL, d);
delay(5);
}
for (int d = 255; d >= 0; d--) {
ledcWrite(PWM_CHANNEL, d);
delay(5);
}
}
Servo SG90
Cài thư viện ESP32Servo (Library Manager).
#include <ESP32Servo.h>
Servo myServo;
const int SERVO_PIN = 13;
void setup() {
myServo.setPeriodHertz(50);
myServo.attach(SERVO_PIN, 500, 2400);
}
void loop() {
myServo.write(0);
delay(1000);
myServo.write(90);
delay(1000);
myServo.write(180);
delay(1000);
}
SmartNode sau này dùng PWM cho dim đèn và servo cho van/mái che demo.
Bài tập
Map biến trở 10 kΩ (ADC preview) → góc servo (hoàn thiện ở phần 4).
Câu hỏi thường gặp
Servo ăn mấy volt?
SG90 thường 4.8–6 V. ESP32 3.3 V logic — nên cấp servo từ nguồn 5 V riêng, GND chung với ESP32; không lấy 5 V từ board lâu dài.
Bài đọc tiếp theo
Lập trình ESP32 (1/8): Giới thiệu board, cài Arduino IDE & Blink LED
Khóa Arduino ESP32 miễn phí — phần 1: chọn board ESP32-WROOM, cài core esp32 trên Arduino IDE 2.x, nạp Blink, hiểu Serial Monitor. Lộ trình: /blog/hoc-lap-trinh-arduino-esp32-tu-dau
Đọc tiếp →Lập trình ESP32 (2/8): GPIO digital, nút bấm & chống dội (debounce)
GPIO ESP32: digitalRead/Write, nút bấm pull-up nội, toggle LED, debounce phần mềm — nền tảng đọc cảm biến digital.
Đọc tiếp →Lập trình ESP32 (4/8): ADC — cảm biến analog & DHT22
Đọc ADC 12-bit, chia áp, biến trở; thư viện DHT — nhiệt độ/độ ẩm cho SmartNode.
Đọc tiếp →Startup của bạn cần tech partner?
Trao đổi miễn phí về MVP, timeline và mô hình chia lợi nhuận phù hợp.