Los microsegundos no son ticks
Arduino C++setPWM(ch, on, off) recibe ticks, no microsegundos: a 50 Hz, un tick son 20000 / 4096 µs. El código de partida envía 1500 como si fueran µs, y además se olvida de setPWMFreq(50). Escribe ticksFor() para que 1500 µs pasen a ser unos 307 ticks, 600 unos 123 y 2400 unos 492, y pon la trama a 50 Hz.
Comprobaciones
- Aún sin ejecutarFunciona
- Aún sin ejecutarPone la trama a 50 Hz con setPWMFreq(50)
- Aún sin ejecutar1500 µs salen como 306-308 ticks
- Aún sin ejecutar600 µs salen como 122-124 ticks
- Aún sin ejecutar2400 µs salen como 490-493 ticks
- Aún sin ejecutarEl canal 0 envía un pulso de 1500 µs en una trama de 50 Hz
Pistas
- ticks = us x 4096 / 20000. Multiplica primero y divide después, o se pierde la fracción.
- 1500 x 4096 pasa de 6 millones, demasiado para un int en una Nano: conviértelo antes a uint32_t.
- pwm.setPWMFreq(50); va justo después de pwm.begin();