PWM (Pulse Width Modulation) is the technology that allows fine control of LED intensity without an analog regulator. On ESP32, it's handled by the LEDC module — far more powerful than a classic Arduino.
How does PWM work?
Au lieu d'abaisser la tension, le PWM coupe rapidement l'alimentation à haute fréquence. À 1000Hz et 50% de rapport cyclique, la LED s'allume et s'éteint 1000 fois par seconde — l'œil perçoit une LED à moitié allumée. Plus le rapport cyclique est élevé, plus la LED est lumineuse.
The ESP32 LEDC module
L'ESP32 dispose de 16 canaux PWM indépendants (LEDC). Chaque canal peut être assigné à n'importe quel GPIO compatible. Flare RC utilise une fréquence de 1000Hz et une résolution de 8 bits (0-255) — 256 niveaux d'intensité.
ledcAttach and ledcWrite
ledcAttach(pin, freq, resolution) initialise un canal PWM sur un GPIO. ledcWrite(pin, value) définit l'intensité (0 = éteint, 255 = plein). Sur ESP32 Core 3.x (ArduinoDroid), la gestion des canaux est automatique — plus besoin de les assigner manuellement.
Why not analogWrite?
Sur Arduino classique, analogWrite() fait du PWM à 490Hz sur 8 bits. Sur ESP32, cette fonction n'existe pas (ou est émulée). Flare RC utilise directement l'API LEDC pour un contrôle précis et une fréquence optimale pour les LEDs.