Problema con Arduino , USB host y PS3 Joystick

Buenas a todos tengo un problema con este codigo , el cual me conecta el joystick todo perfecto pero cuando empiezo a tocar el R2 que es tecla que tengo que utilizar.

Se cuelga completamente el arduino y se desconecta.

#include <Servo.h>
#include <PS3BT.h>
#include <usbhub.h>

USB Usb;
BTD Btd(&Usb);
PS3BT PS3(&Btd); 



int valor2,valor;
Servo motor1,motor2,motor3,motor4;

void setup() {
   while (!Serial); // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection
  if (Usb.Init() == -1) {
    Serial.print(F("\r\nOSC did not start"));
    while (1); //halt
  }
  Serial.begin(115200);
  Serial.print(F("\r\nPS3 Bluetooth Library Started"));
  
}
void loop() {
  Usb.Task();
  if (PS3.PS3Connected) {
    updatemotor();
    }
}


void updatemotor(){
  
  valor2 = PS3.getAnalogButton(R2);
  valor = map (valor2, 0 , 255, 0 , 150);
  motor1.write(valor);
  motor2.write(valor);
  motor3.write(valor);
  motor4.write(valor);
  Serial.print(valor);
  Serial.println();
  delay(50);
  
}

Al darle al R2 estas intentado mover motores DC ?... lo pregunto por qué si tienes 4 motores directos al arduino puede dañar la placa ya que ella no está para alimentar motores y para este tipo de montajes lo ideal es usar L293D o shields para motores, en cada uno de los casos se alimentan de una fuete..

Pero por el código me parece que está usando un motor shield de adafruit y si el arduino se para al intentar mover los motores puede que algo este generando un corto o algún tipo de mal funcionamiento eléctrico..

Puede dar mas información del montaje de tu arduino ?

Nomada:
Al darle al R2 estas intentado mover motores DC ?... lo pregunto por qué si tienes 4 motores directos al arduino puede dañar la placa ya que ella no está para alimentar motores y para este tipo de montajes lo ideal es usar L293D o shields para motores, en cada uno de los casos se alimentan de una fuete..

Pero por el código me parece que está usando un motor shield de adafruit y si el arduino se para al intentar mover los motores puede que algo este generando un corto o algún tipo de mal funcionamiento eléctrico..

Puede dar mas información del montaje de tu arduino ?

No los motores son Brusheless tienen una alimentacion APARTE.

solo envio señal PWN. y estoy usando un ARDUINO MEGA.

Hola

No estoy del todo seguro, pero me parece que te hace falta vincular los motores con los pines pwm.

falta algo de esto en el setup:

pinMode(#pwmPin, OUTPUT);
servo1.attach(#pwmPin);

Has una prueba simple sin los motores solo chequea que cuando presiones R2 recibas una respuesta correcta y que no sea la librería involucrada la que te genera el problema

En lugar de updatemotor();
comentalo y pon un Serial.println("R2 presionado");

ehrja:
Hola

No estoy del todo seguro, pero me parece que te hace falta vincular los motores con los pines pwm.

falta algo de esto en el setup:

pinMode(#pwmPin, OUTPUT);
servo1.attach(#pwmPin);

FAIL , TIENES RAZON NO DECLARE LOS PINES A LOS MOTORES JAJAJAJ

Gracias.

Solo se declara

servo.attach(pin) , no hace falta el OUTPUT