Are analogue and digital servos swappable ?

I’m still playing around with robot arms, and to reduce the weight at the effector end I thought I’d swap out my MG996R and replace it with an HD-9110MG.

Both are 6V compatible but the HD is a digital rather than analogue servo.

I thought the “digital” was to do with the electronics inside, but that I could still treat them the same - have I got the wrong idea here ?

I’m driving all the servos in the arm from an Adafruit 16-channel PWM shield.

Does this code still make sense with a mix of servo types ?



// default address 0x40
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();

// servo arrays

// setup
void setup() {
  pwm.setPWMFreq(60);  // Analog servos run at ~60 Hz updates

  for (int i = 0 ; i < SERVOS ; i++){
    currPos[i] = servostart[i];
    targetPos[i] = servostart[i];

  // check various things and set the target position for each servo

  // now move the servos

  for (int i = 0 ; i < SERVOS ; i++){
    currPos[i] = targetPos[i];
    pwm.setPWM(i, 0, currPos[i]);

The control signal is the same for both types. So the same code will work for either or for a mix. Digital servos may tend to be more precise but also more power hungry but it varies by specific types.


Just be careful with voltages , the digital ones must be run at their rated voltage - I killed a 4.8v one on 6v

I think I must have bought a dud ... not a sign of life :frowning:

Plugging a MG996R in works fine, swapping for the HD-9110MG ... nada.

Thanks for confirming it should work anyway,