Controlling 835 servo's simultaneously

I was looking at daniel rozin's wooden mirror: http://www.youtube.com/watch?v=BZysu9QcceM and it has me wondering how is it that he could control 835 servo's simultaneously?

You can control any amount of servo’s if you add a small controller to everyone and put them in a network. Then the main computer just has to send a message to the servo that has to switch position. That means that inside the computer there is the previous image and a new image. These are compared and from that signals are generated.

You could put 125 Arduino’s (328) in an I2C network and let ervery arduino control 8 servo’s, the master computer only needs to send 1 byte (= 8 bits = 8 servo’s) to every node. With some soft pwm or so the servos could be controlled. 100 bytes over I2C takes in the order of a few milliseconds.

The master could be an UNO. If carefully crafted one would only need one image in memory and proces the pixels streamwise, not trivial but doable. Assuming some lowres cam exist that streams out pixel after pixel over serial.

The master code would be something like this (need quite some rework)

setup()
{
  // fill image from cam
}

loop()
{
  for (int x = 0; x < 32; x++)
  {
    for (int y = 0; y < 32; y++)
     {
        value = getPixelfromCam(x,y);
        if (value != getPixelfromBitmap(x,y))
        {
           I2C_setPixel(x,y);
           setPixelinBitmap(x,y, value);
        }
     }
  }
}

The slave code is left as an exercise for the reader :wink: