Más servos que canales PWM

Pues realmente no puedes usar un PWM para sintetizar un pulso de control para un servo.

Los servos trabajan con pulsos de 1ms-2ms con repeticiones de unos 40ms. Un PWM es un pulso periódico donde se varía el tiempo que está activado.

Si fueses a usar un multiplexor, lo que vas a estar generando una configuración de canal periodicamente y vas a tener que reducir la frecuencia del PWM que sintetiza el AVR sustancialmente.

Lo más sencillos es que uses la librería estándar Servo.h. Esta se encarga de sintentizar los pulso que espera el servo por tí y puedes generar tantos canales como pines de entrada salida tengas disponible.

#include <Servo.h> 
 
Servo myservo;  // create servo object to control a servo 
                      // a maximum of eight servo objects can be created 
 
int pos = 0;    // variable to store the servo position 
 
void setup() 
{ 
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object 
} 
 
 
void loop() 
{ 

  // Barrido en un sentido
  for(pos = 0; pos < 180; pos += 1)  // goes from 0 degrees to 180 degrees 
  {                                             // in steps of 1 degree 
    myservo.write(pos);                 // tell servo to go to position in variable 'pos' 
    delay(15);                              // waits 15ms for the servo to reach the position 
  } 

  // Barrido en el otro
  for(pos = 180; pos>=1; pos-=1)     // goes from 180 degrees to 0 degrees 
  {                                
    myservo.write(pos);              // tell servo to go to position in variable 'pos' 
    delay(15);                            // waits 15ms for the servo to reach the position 
  } 
}