La légère inclinaison du servo est dû à la souplesse de l'équerre qui fait office de ressort pour ne pas forcer.
Je n'ai pas interfacé Arduino avec Android mais avec PC sous MsW. Ne disposant que de carte Arduino Mega, et la gestion des butées est faite par programmation en mesurant le courant à travers le potentiometre.
const int MAX_ARRIERE=887;
const int ARRET=1365;
const int MAX_AVANT=1843;
const int broche_servo=40;
int mesure_brute=0;
float impulsion=0.0;
Servo servo;
void setup(){
Serial.begin(115200);
servo.attach(broche_servo);
pinMode (broche_servo,OUTPUT);
digitalWrite(broche_servo,HIGH);}
void loop(){
mesure_brute= analogRead(A0) ;
impulsion=map(mesure_brute, 0,1023, MAX_ARRIERE, MAX_AVANT);
Serial.print("Largeur impulsion =");
Serial.print(impulsion);
Serial.println(" microsecondes");
servo.writeMicroseconds(impulsion);
delay(100);
Si au départ on prend garde que le zoom soit réglé au minimum et que le servo soit en position mini, il ne devrait pas y avoir de glissement.
Ma prog est des plus simple mais on peut toujours après étalonnage; avoir un prog qui permette la gestion du zoom à telle position : 55 -70-100-135-200-250 dans le cadre d'un 55-250 par exemple.