Comandare 3 servo tramite 3 potenziometri per remotare videocamera

Ciao a Tutti, sono nuovo e molto poco esperto di Arduino e programmazione. Sto utilizzando Arduino Uno per comandare 3 servo tramite 3 potenziometri, per remotare il Pan, Tilt e Focus di una videocamera.
Ho trovato in rete questo progetto (comanda un servo con un potenziometro) che ho provato e funziona benissimo.

http://www.niklas-ruehl.de/wp-content/uploads/diy_rff_wiring_code.pdf

Quello che vorrei realizzare è di moltiplicare per 3 il tutto.
Ho cercato di scrivere lo sketch attingendo a quelli trovati nel forum:

#include <Servo.h>

Servo servo1; // create servo object to control a servo1
int potpin1 = 0; // analog pin used to connect the potentiometer 1
int val1; // variable to read the value from the analog pin (1024 steps from 0 to 1023)
Servo servo2; // create servo object to control a servo2
int potpin2 = 1; // analog pin used to connect the potentiometer 2
int val2; // variable to read the value from the analog pin (1024 steps from 0 to 1023)
Servo servo3; // create servo object to control a servo3
int potpin3 = 2; // analog pin used to connect the potentiometer 3
int val3; // variable to read the value from the analog pin (1024 steps from 0 to 1023)

void setup()
{
Serial.begin(9600); // start serial communication
servo1.attach(8); // attaches the servo on pin 8 to the servo1 object
servo2.attach(9); // attaches the servo on pin 9 to the servo2 object
servo3.attach(10); // attaches the servo on pin 10 to the servo3 object
}

void loop()
{
val1 = analogRead(potpin1);
int oneturn = val1 / 6; // 6-Turn-Servo uses only one turn (can also be more or less, depending on your lens and gear wheel diameter)
val2 = analogRead(potpin2);
val3 = analogRead(potpin3);

int servoposition = oneturn + 1001; // translates 1024 poti steps into val / 6 servo steps
Serial.println(servoposition); // for test purposes, you can see the poti values in the serial monitor

servo1.writeMicroseconds(servoposition); // servo gets position information
servo2.writeMicroseconds(servoposition); // servo gets position information
servo3.writeMicroseconds(servoposition); // servo gets position information

}

purtroppo quello che ho ottenuto è che ogni potenziometro comanda i 3 servo contemporaneamente.
Qualcuno sa corregermi lo sketch?
Premetto che i servo da comandare non sono dei semplici servo che devono girare di 180° ma dei verricelli che possono compiere fino ad un massimo di 6 giri.
Grazie a tutti

purtroppo quello che ho ottenuto è che ogni potenziometro comanda i 3 servo contemporaneamente. Qualcuno sa corregermi lo sketch?

Se tutti i 3 servo li piloti col valore letto del primo potenziometro allora tutti i 3 girano nello stesso modo. Ciao Uwe

Ecco :roll_eyes: , e quindi? Scusa ma la programmazione non è proprio il mio mestiere...

vuol dire che devi assegnare un valore diverso per ogni potenziometro letto

void loop()
{
  val1 = analogRead(potpin1);
  int oneturn1 = val1 / 6;
  val2 = analogRead(potpin2);
  int oneturn2 = val2 / 6;
  val3 = analogRead(potpin3);
int oneturn3 = val3 / 6;

  int servoposition1 = oneturn1 + 1001; // translates 1024 poti steps into val / 6 servo steps
  Serial.print(servoposition1); // for test purposes, you can see the poti values in the serial monitor
   Serial.print("   ");
  int servoposition2 = oneturn2 + 1001;
  Serial.print(servoposition2);
  Serial.print("   "); 
  int servoposition3 = oneturn3 + 1001; 
  Serial.println(servoposition3); 

  servo1.writeMicroseconds(servoposition1); // servo gets position information
  servo2.writeMicroseconds(servoposition2); // servo gets position information
  servo3.writeMicroseconds(servoposition3); // servo gets position information

}

Ti ringrazio infinitamente. Adesso provo queste modifiche.

Funziona, FANTASTICO. Grazie mille Brunello

Ho notato che i potenziometri hanno una zona morta ad inizio e a fine corsa, in cui il servo non risponde. Da cosa può dipendere?