brazo robot mover los servo al mismo tiempo

tengo un brazo robot controlado por arduino con sevo lo que necesito es guardar posiciones en la memoria EPROM para despues formar secuencias de posiciones pero tambien lo que quiero es que al momento de seleccionar una secuencia o mejor dicho una posicion diferente a la que se encuentre el brazo, los servos se activen y hagan su cambio de posicion y no lo haga de uno por uno espero que me puedan ayudar :C smiley-sad-blue

Podrias guardar las posiciones de cada articulacion del brazo en grados. Luego por medio de un array tomar esos grados y que sea una secuencia. Los servomotores se mueven de uno en uno pero en pasos discretos (4° por ejemplo) pero podrias hacer un procedimiento al cual le mandes el array y vaya moviendo uno a uno los servos pero con diferencias de milisegundo asi te daria la sensacion que se mueven todos al mismo tiempo. Es solo una idea. Exitos

¿cómo sería eso del array? podrías darme un ejemplo?, soy muy nuevo en esto y me gustaría saber cómo mover 2 servos “al mismo tiempo” , probé este código que encontré, pero no sirve, más bien da movimientos errados a los serios, y pues sencillamente no sabría como proceder…

#include <Servo.h>
int pos = 0;
int pos2 = 0;
Servo servo1;
Servo servo2;
void setup()
{
servo1.attach(3);
servo2.attach(4);
}

void loop()
{
for(pos = 0; pos < 180; pos += 1)
for(pos2 = 180; pos > 0; pos -= 1)

{
servo1.write(pos);
servo2.write(pos2);
delay(15);
}
}

Antes que todo, te recomiendo que lear las normas del foro, tambien te recomiendo que busques aqui mismo en

Learnign -Reference

Ahi encontrarás todo para empezar con el lenguaje. Por ejemplo los array estan aqui (use el modo correcto de colocar los links, el botoncito de la cadenita y un signo mas en verde)
El codigo tambien tiene su etiqueta para que se visualice bien.

Un arrary es como un grupo de datos, es como un archivo nido de palomas donde cada casillla almacena un dato. Algo que tienes que tener en cuenta es que el Servo motor necesita cierto tiempo para posicionarse a donde le ordenas, no es instantaneo, siempre se le coloca un delay de unos cuantos milisegundos. Intentaré darte un ejemplo:

#include <Servo.h>

 /* cada numero representaria los grados que se moveria un motor, por eso coloqué 5
int posiciones[] = {10, 12, 8, 20, 45};/*en total suman 95 grados, su mcd es 2
int pasosMovidos[]={0,0,0,0,0};
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;

void setup()
{
 servo1.attach(3);
 servo2.attach(4);
 servo1.attach(5);
 servo2.attach(6);
 servo1.attach(7);
 
}

void loop()
{
 int pasos=90;
  while(pasos>0){
    if(pasosMovidos[0]<posiciones[0]){
       pasosMovidos[0]+=2;
       servo1.write(pasosMovidos[0]);
       delay(20);
                                                  }

   if(pasosMovidos[1]<posiciones[1]){
       pasosMovidos[1]+=2;
       servo2.write(pasosMovidos[1]);
       delay(20);
                                                  }

    if(pasosMovidos[2]<posiciones[2]){
       pasosMovidos[2]+=2;
       servo1.write(pasosMovidos[2]);
       delay(20);
                                                   }

   if(pasosMovidos[3]<posiciones[3]){
       pasosMovidos[3]+=2;
       servo1.write(pasosMovidos[3]);
       delay(20);
                                                }

    if(pasosMovidos[4]<posiciones[4]){
       pasosMovidos[4]+=2;
       servo1.write(pasosMovidos[4]);
       delay(20);
                                                 }

  pasos=90-(pasosMovidos[0]+ pasosMovidos[1]+ pasosMovidos[2]+ pasosMovidos[3]+ pasosMovidos[4]);

                        }
  
}

Es solo una idea, estudiala o probala, yo asi lo veo en mi mente. . Saludos