PWM VELOCE

?R:
sul pin 2 siamo d'accordo, sugli altri se non si riesce a variare il duty cycle bisogna pensare ad una alternativa...

Si può fare a livello di codice ma diventa complicato con la tecnica del bit-banging.
Si potrebbe usare un ulteriore timer non usato ed agganciare i pin 3, 4 e 5 ad esso (es. timer 2). Però tutti e 3 i pin avrebbero stessa frequenza e stesso duty cicle.

Curiosità, la funzione tone si basa sul timer 0, fa con la stessa tecnica?

No, viene fatto fare in HW, impostando il timer a seconda del tipo e della frequenza da generare. Il timer usato cambia a seconda del microcontrollore. Sull'Atmega1280/2560 viene usato il timer 2. Ma questa scelta può essere cambiata, basta modificare il file Tone.cpp del core.