Микроконтроллер ESP32-C3, установленный на платы быстрой разработки NodeMCU ESP-C3-13 Kit (ESP-C3-32S Kit), поддерживает 6 каналов ШИМ (широтно-импульсная модуляция).
Каналы ШИМ, по английски PWM (Pulse-width modulation), в документации к библиотекам ESP32 называют LEDC каналами (LED control). LEDC - устройство управления светодиодами, оно же ШИМ, может управлять многими другими устройствами.
ledcSetup функция используется для настройки частоты и разрешения канала LEDC:
double ledcSetup(uint8_t channel, double freq, uint8_t resolution_bits);
- channel номер канала LEDC, выбранного для настройки (0 - 5),
- freq частота ШИМ генератора,
- resolution_bits разрешение таймера-счётчика для канала ledc, диапазон 1-12 бит.
Если эта функция возвращает 0, возникла ошибка, и канал ledc не был настроен.
ledcAttachPin функция используется для подключения IO вывода к каналу LEDC:
void ledcAttachPin(uint8_t pin, uint8_t chan);
- pin номер IO вывода GPIO,
- chan номер канала LEDC (0 - 5).
ledcWrite функция используется для установки режима работы канала LEDC:
void ledcWrite(uint8_t chan, uint32_t duty);
- chan номер канала LEDC для записи.
- duty скважность сигнала для выбранного канала (в пределах установленного разрешения таймера-счётчика).
Ниже следующая программа плавно меняет яркость зелёного светодиода на плате NodeMCU ESP-C3-13 Kit (ESP-C3-32S Kit).
#define LED_PIN_GREEN 4 // Номер IO
#define LEDC_CHANNEL_GREEN 0 // От 0 до 5
#define LEDC_TIMER_RESOLUTION 12 // От 0 до 4095
#define LEDC_BASE_FREQ 200 // Гц
void setup() {
ledcSetup(LEDC_CHANNEL_GREEN, LEDC_BASE_FREQ, LEDC_TIMER_RESOLUTION);
ledcAttachPin(LED_PIN_GREEN, LEDC_CHANNEL_GREEN);
}
void loop() {
for (int i = -64; i < 64; i++) {
int duty = i* i;
ledcWrite(LEDC_CHANNEL_GREEN, duty);
delay(50);
}
}
Лист. 1. Программа Fading для NodeMCU ESP-C3-13 Kit (ESP-C3-32S Kit)
Литература:
https://docs.espressif.com/projects/arduino-esp32/en/latest/api/ledc.html