Des microsecondes ne sont pas des ticks
Arduino C++setPWM(ch, on, off) prend des ticks, pas des microsecondes : à 50 Hz, un tick vaut 20000 / 4096 µs. Le code de départ envoie 1500 comme si c'étaient des µs, et oublie aussi setPWMFreq(50). Écrivez ticksFor() pour que 1500 µs deviennent environ 307 ticks, 600 environ 123 et 2400 environ 492, et réglez la trame sur 50 Hz.
Vérifications
- Pas encore lancéTourne
- Pas encore lancéRègle la trame sur 50 Hz avec setPWMFreq(50)
- Pas encore lancé1500 µs donnent 306-308 ticks
- Pas encore lancé600 µs donnent 122-124 ticks
- Pas encore lancé2400 µs donnent 490-493 ticks
- Pas encore lancéLe canal 0 envoie une impulsion de 1500 µs dans une trame à 50 Hz
Indices
- ticks = us x 4096 / 20000. Multipliez d'abord, puis divisez, sinon la fraction est perdue.
- 1500 x 4096 dépasse 6 millions, trop pour un int sur un Nano : convertissez d'abord en uint32_t.
- pwm.setPWMFreq(50); se place juste après pwm.begin();