Saludos, disculpen, estoy tratando de realizar un robot soccer controlado con un control de PS y un servo chuta el balón, pero al momento de activar el servo la tarjeta se desconecta, esto solo sucede con las baterías 3 baterías de 3,7v en serie (11.1 V), conectada la tarjeta al puerto USB funciona correctamente.
#include <PS2X_lib.h>
#include <Servo.h>
int vde=6, def=5, der=4, izf=7, izr=8, viz=9;
int sp=255;
int t=0;
PS2X ps2x;
Servo chu;
void setup(){
Serial.begin(9600);
ps2x.config_gamepad(13,11,10,12);
Serial.println("En linea");
pinMode (vde,OUTPUT);
pinMode (def,OUTPUT);
pinMode (der,OUTPUT);
pinMode (izf,OUTPUT);
pinMode (izr,OUTPUT);
pinMode (viz,OUTPUT);
chu.attach(3);
chu.write(0);
}
void adelante ()
{
digitalWrite(vde, sp);
digitalWrite(def, HIGH);
digitalWrite(der, LOW);
digitalWrite(izf, HIGH);
digitalWrite(izr, LOW);
digitalWrite(viz, sp);
}
void izquierda ()
{
digitalWrite(vde, sp);
digitalWrite(def, HIGH);
digitalWrite(der, LOW);
digitalWrite(izf, LOW);
digitalWrite(izr, HIGH);
digitalWrite(viz, sp);
}
void derecha ()
{
digitalWrite(vde, sp);
digitalWrite(def, LOW);
digitalWrite(der, HIGH);
digitalWrite(izf, HIGH);
digitalWrite(izr, LOW);
digitalWrite(viz, sp);
}
void atras ()
{
digitalWrite(vde, sp);
digitalWrite(def, LOW);
digitalWrite(der, HIGH);
digitalWrite(izf, LOW);
digitalWrite(izr, HIGH);
digitalWrite(viz, sp);
}
void alto ()
{
digitalWrite(vde, 0);
digitalWrite(def, LOW);
digitalWrite(der, LOW);
digitalWrite(izf, LOW);
digitalWrite(izr, LOW);
digitalWrite(viz, 0);
}
void chuta (){
chu.write(90);
delay(500);
chu.write(0);
}
void loop(){
ps2x.read_gamepad();
if(ps2x.Button(PSB_START))
Serial.println("Start is being held");
if(ps2x.Button(PSB_SELECT))
Serial.println("Select is being held");
if(ps2x.Button(PSB_PAD_UP)) {
adelante();
delay (t);
Serial.println("adelante");
}
if(ps2x.Button(PSB_PAD_RIGHT)){
derecha();
delay (t);
Serial.println("derecha");
}
if(ps2x.Button(PSB_PAD_LEFT)){
izquierda();
delay (t);
Serial.println("izquierda");
}
if(ps2x.Button(PSB_PAD_DOWN)){
atras();
delay (t);
Serial.println("atras");
}
if (ps2x.NewButtonState())
{
if(ps2x.Button(PSB_GREEN)){
Serial.println("Triangle pressed");
chuta();
Serial.println("chuta");
}
if(ps2x.Button(PSB_RED))
Serial.println("Circle pressed");
if(ps2x.Button(PSB_BLUE))
Serial.println("X pressed");
if(ps2x.Button(PSB_PINK))
Serial.println("Square pressed");
if(ps2x.Button(PSB_L1))
Serial.println("L1_Presed");
if(ps2x.Button(PSB_R1)){
Serial.println("R1_Presed");
sp=255;
Serial.println("Velocidad 1");
}
if(ps2x.Button(PSB_L2))
Serial.println("L2_pressed");
if(ps2x.Button(PSB_R2)){
Serial.println("R2_pressed");
sp=100;
Serial.println("Velocidad 2");
}
}
if(ps2x.ButtonReleased(PSB_PAD_UP)){
Serial.println("Alto");
alto();
}
if(ps2x.ButtonReleased(PSB_PAD_RIGHT)){
Serial.println("Alto");
alto();
}
if(ps2x.ButtonReleased(PSB_PAD_LEFT)){
Serial.println("Alto");
alto();
}
if(ps2x.ButtonReleased(PSB_PAD_DOWN)){
Serial.println("Alto");
alto();
}
}

