Servo e PWM

Ciao a tutti, ho bisogno di pilotare un servo e due motori in DC. Ho letto che se utilizzo la libreria servo non posso usare la funzione analogwrite, ma non posso pilotare i servo con un' uscita Pwm. Penso che in qualche modo si possa fare. Che mi sfugge?

Il ATmega 328 ha 3 timer. Ogni timer gestisce 2 uscite PWM. La libreria servo usa un timer. Percui non funzionano 2 PWM ma gli altri 4 funzionano.
Secondo Servo - Arduino Reference

On boards other than the Mega, use of the library disables analogWrite() (PWM) functionality on pins 9 and 10, whether or not there is a Servo on those pins. On the Mega, up to 12 servos can be used without interfering with PWM functionality; use of 12 to 23 motors will disable PWM on pins 11 and 12.

Ciao Uwe

Breve riassunto dei timer di Arduino UNO :

Timer0
Usato da millis() e delay() e per il PWM sui pin 5 e 6
fast hardware pwm
(default 976.5625 Hz)
Pin 5 è anche usato per il “pulse counting”
Pin 8 è usato per il “input capture”

Timer1
Usato dalla libreria Servo e per il PWM sui pin 9 e 10. Libreria e PWM mutuamente esclusivi.
8-bit phase correct pwm mode
(default 488.28125 Hz)

Timer2
Usato per il PWM sui pin 3 e 11
8-bit phase correct pwm mode
(default 488.28125 Hz)

... spero possa essere utile :wink:

Guglielmo

Grazie mille a entrambi. Se modifico la frequenza del timer0 per pilotare i motori in DC , creo problemi alle funzioni mills() e delay()?

cicciofranco:
Se modifico la frequenza del timer0 per pilotare i motori in DC , creo problemi alle funzioni mills() e delay()?

Ovvio che SI, se la raddoppi, si dimezzano i tempi e così via ...

Guglielmo