Mikrosekunden sind keine Ticks
Arduino C++setPWM(ch, on, off) nimmt Ticks, keine Mikrosekunden: Bei 50 Hz ist ein Tick 20000 / 4096 µs. Der Startcode schickt 1500, als wären es µs, und vergisst außerdem setPWMFreq(50). Schreib ticksFor() so, dass aus 1500 µs etwa 307 Ticks werden, aus 600 etwa 123 und aus 2400 etwa 492, und setz den Rahmen auf 50 Hz.
Prüfungen
- Noch nicht ausgeführtLäuft
- Noch nicht ausgeführtSetzt den Rahmen mit setPWMFreq(50) auf 50 Hz
- Noch nicht ausgeführtAus 1500 µs werden 306-308 Ticks
- Noch nicht ausgeführtAus 600 µs werden 122-124 Ticks
- Noch nicht ausgeführtAus 2400 µs werden 490-493 Ticks
- Noch nicht ausgeführtKanal 0 sendet einen Puls von 1500 µs in einem 50-Hz-Rahmen
Tipps
- ticks = us x 4096 / 20000. Erst multiplizieren, dann teilen, sonst geht der Bruchteil verloren.
- 1500 x 4096 ist über 6 Millionen, zu groß für ein int auf einem Nano: Wandle zuerst in uint32_t um.
- pwm.setPWMFreq(50); kommt direkt nach pwm.begin();