De acuerdo con esto :
La biblioteca Servo admite hasta 12 motores en la mayoría de las placas Arduino y 48 en Arduino Mega. En placas que no sean Mega, el uso de la biblioteca desactiva la funcionalidad analogWrite() (PWM) en los pines 9 y 10, haya o no un Servo en esos pines. En Mega, se pueden usar hasta 12 servos sin interferir con la funcionalidad PWM; el uso de 12 a 23 motores desactivará PWM en los pines 11 y 12.
Sin embargo, según esto :
Pines de E/S digital 14 (de los cuales 6 proporcionan salida PWM)
Entonces, ¿cómo puede el Uno controlar más de 6 servos si solo tiene 6 pines de E/S digitales que pueden proporcionar salida PWM?
La biblioteca Servo no usa PWM. Cuando llama a write() , calcula un ancho de pulso en microsegundos y lo almacena en una matriz global. Luego, hay un solo temporizador que activa regularmente una interrupción que cambia las señales de salida de acuerdo con el ancho de pulso deseado de cada canal.
Puede encontrar el código fuente a continuación: enlace de Github
Los 6 pines PWM usan el UART incorporado en el ATmega328P para producir su salida. Esto hace que los pulsos sean muy rápidos para una salida "analógica" de mayor calidad. Debido a que los servos se comunican a una velocidad lo suficientemente lenta, pueden controlarse mediante interrupciones de software. Las interrupciones de software desaparecen del código que está ejecutando y ejecuta el código incluido con la biblioteca de servos. Este código utiliza medios estándar para cambiar el estado de los pines. Al hacerlo usando interrupciones en lugar de usar el UART, pierde algo de tiempo de procesamiento pero gana la capacidad de manejar más servos.
usuario41158
Grapsus
Jon Watte
比尔盖子