Paul, sorry my language problems, I don't use english very often, so I might miss some points. Your reply #1 was before quote, so I didn't saw it, sorry!
I see that you want to be hard to handle, but no worries, I don't mind. Instead of waiting to get any help from you, I can say that problem is solved... at least with Romeo it worked, don't understand why it didn't work with duemilanove?
As I don't have much experience with these little wonders and C-language, it took a while make things familiar.
At first, base address for SD21 seems to be 0x61, instead of 0xC2. Then I had to start thinking integers in two bytes, that helped a lot. Example code tell that you can give low byte in milliseconds, well... anyone can see (after well sleeped night) that 800ms can't be expressed within one byte. After that it was clear. I needed simply to devide that number in to two bytes, and give it to SD21 in two parts.
What I didn't remember to try, was that if these registers can be controlled sequentally, between begin- and end translation? Well, I'm sure that will be clear to me soon.
My simple code follows here, thanks!
Kari
#include <Wire.h>
#define SD21 0x61 //SD21 I2C Address, shifted by one bit from 0xC2
void setup()
{
Wire.begin(); // start I2C
Serial.begin(9600);
Wire.beginTransmission(SD21);
Serial.print(" Set Speed 0 for servo1");
Wire.send(0); //Servo1 Speed register 0
Wire.send(0); // Set speed Servo1
Wire.endTransmission();
}
void loop()
{
Serial.print("To right ");
//Right side, 100111001000=2504ms
Wire.beginTransmission(SD21);
Wire.send(1); //Low Byte to Register1 for pulse lenght
Wire.send(200);
Wire.endTransmission();
Wire.beginTransmission(SD21);
Wire.send(2); // High Byte to Register2 for pulse lenght
Wire.send(9); //
Wire.endTransmission();
delay(1500);
Serial.print("Middle position ");
Wire.beginTransmission(SD21);
Wire.send(1); //Low Byte to Register1
Wire.send(255);
Wire.endTransmission();
Wire.beginTransmission(SD21);
Wire.send(2); // High Byte to Register2 for pulse lenght
Wire.send(5);
Wire.endTransmission();
delay(1500);
Serial.print("To left ");
//Left side, 1101000110=838ms
Wire.beginTransmission(SD21);
Wire.send(1);
Wire.send(70);
Wire.endTransmission();
Wire.beginTransmission(SD21);
Wire.send(2);
Wire.send(3);
Wire.endTransmission();
Wire.requestFrom(SD21>>1, 1 );
while(Wire.available())
{ ; }
int b = Wire.receive();
}