Problemas servos (resetea arduino)

Buenas tardes:

Estoy trabajando con una placa Arduino no, un Arduino motor shield al cual tengo conectado 4 servos y un boton, los servos estan conectados en los pines 7, 9, 10 y 11. Todo está alimentado por una bateria de lipo de 7,4V y 2000 mAh

Lo que se trata es sencillo, los servos deben abrirse simultaneamente al presionar el boton. Hasta aquí todo correcto.
El problema es que en determinados momentos la placa parece "resetearse" a ve si me explico, cuando trabajan los cuatro al llegar al final del recorrido se paran un instante y continuan, además de bajar la intensidad del testigo led de la placa, los servos son mg 996R, hasta ahora habia trabajado con 3 servos en otro proyecto y no había tenido problemas, no se si es de software o de hardware, dejo aquí el codigo que estoy usando a ver si me podeis decir de donde puede venir el error y como solucionarlo.

#include <Servo.h> 
 
Servo servo1;  
Servo servo2;
Servo servo3;
Servo servo4;

int pos = 10;    // variable to store the servo position 
int posb = 170;


const int buttonPin = 2;


int buttonState = 0;


void setup() 
{ 

  servo1.attach(9);  // attaches the servo on pin 10 to the servo object 
 servo2.attach(10);
 servo3.attach(11);
 servo4.attach(7); 
  
 servo1.write(pos); 

  servo2.write(pos); 

  servo3.write(pos); 
  
  servo4.write(pos); 

delay(2000);  

 pinMode(9, LOW) ;
 pinMode(10, LOW) ;
 pinMode(11, LOW) ;
 pinMode(7, LOW) ;
 delay (500);
 pinMode(buttonPin, INPUT);
    
}
 
void loop() 
{

  buttonState = digitalRead(buttonPin);
  

if (buttonState == HIGH){
  //SECUENCIA 1


 

 {

  pinMode(9, HIGH) ;
  delay(150);
  pinMode(10, HIGH) ;
    delay(15);

  pinMode(11, HIGH) ; 
   delay(15);
 
pinMode(7, HIGH) ;
  delay(15);

{
   {   
	      servo1.write(posb);

servo2.write(posb); 

servo3.write(posb); 


servo4.write(posb); 
delay(15);      
  }
}

  pinMode ( 9, LOW);
  pinMode (10, LOW);
    pinMode (11, LOW);

  pinMode (3, LOW);

}  
}
}

Saludotes y gracias

Se te ocurrió ver el consumo de cada servo?

Espero que no los alimentes desde el arduino pero de ser asi esa es la causa.
Arduino no puedo entregar mas de 350mA y mira lo que consume un mg996R entre 500 y 900mA

Para la batería esta mas o menos bien pero para el Arduino si es quien los alimenta no.

Asi que comparte gnd y alimenta los Servos desde la bateria

• Weight: 55 g
• Dimension: 40.7 x 19.7 x 42.9 mm approx.
• Stall torque: 9.4 kgf·cm (4.8 V ), 11 kgf·cm (6 V)
• Operating speed: 0.17 s/60º (4.8 V), 0.14 s/60º (6 V)
• Operating voltage: 4.8 V a 7.2 V
• Running Current 500 mA –
• Stall Current 2.5 A (6V)
• Dead band width: 5 µs
• Stable and shock proof double ball bearing design
• Temperature range: 0 ºC - 55 ºC

Pues si, los estaba alimentando desde arduino, gracias Surbyte.
Pruebo y comento.

Pues solucionado, aunque con una cosa que no acabo de entender, aunque imagino que sea por lo mismo, efectivamente alimentando los servidores directos con la batería y controlándolo con Arduino no pasa, así que es eso.
Pero, por asegurarme, al arrancar el Arduino he tenido que poner delays para que fueran a la posición original de uno en uno, ya que si lo hacía todos al tiempo se va reseteando la placa, solo por confirmar, ¿es el mismo problema? Que la batería no pueda alimentar a todos al tiempo?

Te puse el consumo que puede tener 1, asi que multiplica y compáralo con tu batería. Es posible que la batería no este bien cargada, pero es de 2000mAh y cada servo puede consumir 900mA de modo que te estan faltando 2000mA mas para estar seguro en el peor caso.

Para estar seguro yo usaría una fuente externa de al menos 4A (podria ser una fuente de PC) y mediría el consumo de los 4 servos. Eso te dará la pauta de que necesitas a nivel de batería para estar seguro y que autonomía tendrás, porque una cosa es ponerlos en marcha pero luego la otra es por cuanto tiempo?

2000mAh indica que puede entregar 2000mA x 1 hora y luego? Kaput, asi que vigila los consumos.

Ok, gracias surbyte, lo comprobaré y te digo, el tiempo de funcionamiento no me preocupa demasiado, es para un espectáculo y deben funcionar una vez, así que no debería haber problema en ese sentido, no obstante miraré lo del consumo para futuras ocasiones que vayan a estar funcionando más tiempo .

Si.. no subestimes las cosas. Hoy lo quieres para algo y mañana dices.. ahh tengo esto y luego te da un dolor de cabeza.
Debes saber hasta donde puede funcionar correctamente. Si es 1 hora que lo sea.. y si es mas.. tmb. Siempre la decisión involucra $$$