Tous les articles

PWM sur ESP32 : tout ce qu'il faut savoir pour les LEDs RC

Le PWM (Pulse Width Modulation) est la technologie qui permet de contrôler finement l'intensité d'une LED sans régulateur analogique. Sur ESP32, il est géré par le module LEDC — bien plus puissant qu'un Arduino classique.

Comment fonctionne le PWM ?

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.

Le module LEDC de l'ESP32

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 et 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.

Pourquoi pas 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.

💡 Astuce : À 1000Hz, le PWM est inaudible (au-dessus des 20kHz humains) et invisible à l'œil nu. En dessous de 100Hz, vous pourriez voir des scintillements ou les capter en vidéo.
Articles liés
← Retour au blog