Informazioni su come far azionare 2 servo motori contemporaneamente

Salve a tutti, sto cercando di progettare un robot che mi faccia suonare un pianoforte tramite 10 servomotori comandati da arduino uno tramite interfaccia I2C con scheda PCA9685.
Volevo chiedere come faccio a pilotare 2 o più servomotori contemporaneamente.
Grazie allego anche il codice che mi permette però di azionare solo un servomotore alla volta.

Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();

#define MIN_PULSE_WIDTH       650
#define MAX_PULSE_WIDTH       2350
#define DEFAULT_PULSE_WIDTH   1500
#define FREQUENCY             50

uint8_t servonum = 2;

void setup() 
{
  Serial.begin(9600);
  Serial.println("16 channel Servo test!");
  pwm.begin();
  pwm.setPWMFreq(FREQUENCY);
}
int pulseWidth(int angle)
{
  int pulse_wide, analog_value;
  pulse_wide   = map(angle, 0, 180, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH);
  analog_value = int(float(pulse_wide) / 1000000 * FREQUENCY * 4096);
  Serial.println(analog_value);
  return analog_value;
}

void loop() {
 
  pwm.setPWM(3, 0, pulseWidth(75)); 
  delay(300);; 
  delay(300);
  pwm.setPWM(3, 0, pulseWidth(120)) ; 
 
  delay(500);
   pwm.setPWM(3, 3, pulseWidth(75));
  delay(300);
  pwm.setPWM(3, 3, pulseWidth(120));
  delay(500);
   pwm.setPWM(2, 2, pulseWidth(50));
  delay(200);
  pwm.setPWM(2, 2, pulseWidth(120));
  delay(500);
   pwm.setPWM(0, 0, pulseWidth(70));
  delay(300);
  pwm.setPWM(0, 0, pulseWidth(120));
  delay(500);
 
}

Buongiorno,
essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

MD

P.S.: Qui una serie di link utili, NON necessariamente inerenti alla tua domanda:
- serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- pinout delle varie schede by xxxPighi: Pinout
- link generali utili: Link Utili

M scusi ora mi sono presentato sull'apposita pagina non avevo finito di leggere il regolamento.

E' un segreto ... se te lo diciamo, poi saremmo costretti ad ucciderti ... :smiley:

Scherzi a parte, dipende tutto da cosa intendi con "contemporaneamente" ... Arduino, e quasi tutte le schede simili, comunque, ha una piccola MCU ad 8 bit senza multitasking, il che significa che puo eseguire UNA sola operazione per volta ... inoltre vedo che nel tuo sketch usi i delay, ed un delay "blocca" l'intera esecuzione per tutto il tempo che "aspetta" ...

Quindi, prima di tutto, bisogna rielaborare il programma per usare millis(), al posto dei delay, per i tempi di attesa (e non basta sostituirla, bisogna ripensare tutta la struttura) ... e poi puoi eseguire operazioni "consecutive" in modo molto veloce, "quasi" contemporaneamente, ma NON in modo contemporaneo ... :wink:

Grazie mille per la risposta...ho capito ,contemporaneamente intendevo che ,come le mani che suonano il pianoforte quindi la sinistra fa l'accompagnamento e la destra la melodia

per azionarli contemporaneamente,potresti collegarli ad allo stesso Pin