Go Down

Topic: Problemas para controlar Arduino con mando PS2 (Read 4523 times) previous topic - next topic

Cheskovy

Jan 10, 2019, 04:38 pm Last Edit: Jan 10, 2019, 04:51 pm by Cheskovy
Hace unos dias encontré en Youtube un tutorial (este) en el que se te enseña a controlar Arduino con un mando de PS2 y decidí implementar esto en un proyecto de un brazo robótico. En el tutorial se utiliza el siguiente código:

Code: [Select]

#include <PS2X_lib.h>

PS2X ps2x;

int error = 0;
byte vibrate = 0;

void setup()
{
  Serial.begin(9600);
  error = ps2x.config_gamepad(8,12,A0,13,true,true);  //(clock, command, attention, data)

  if(error == 0)
  {
    Serial.println("Controlador encontrado y configurado");
  }
  else
  {
    Serial.println("Error, mando no encontrado");
  }
}

void loop()
{
  int temp;
  ps2x.read_gamepad(false,vibrate);

  vibrate = ps2x.Analog(PSAB_BLUE);
 
  if(ps2x.Button(PSB_PAD_UP))
  {
    temp = ps2x.Analog(PSAB_PAD_UP);
    Serial.print("Presionaste arriba: ");
    Serial.println(temp);
  }
 
  else if(ps2x.Button(PSB_PAD_DOWN))
  {
    temp = ps2x.Analog(PSAB_PAD_DOWN);
    Serial.print("Presionaste abajo: ");
    Serial.println(temp);
  }

  else if(ps2x.Button(PSB_PAD_LEFT))
  {
    temp = ps2x.Analog(PSAB_PAD_LEFT);
    Serial.println("Presionaste izquierda: ");
    Serial.print(temp);
  }

  else if(ps2x.Button(PSB_PAD_RIGHT))
  {
    temp = ps2x.Analog(PSAB_PAD_RIGHT);
    Serial.println("Presionaste derecha: ");
    Serial.print(temp);
  }


  if(ps2x.Button(PSB_BLUE))
  {
    Serial.println("Presionaste X: ");
  }
  if(ps2x.Button(PSB_PINK))
  {
    Serial.println("Presionaste cuadrado: ");
  }
  if(ps2x.Button(PSB_RED))
  {
    Serial.println("Presionaste redondo: ");
  }
  if(ps2x.Button(PSB_GREEN))
  {
    Serial.println("Presionaste triangulo: ");
  }
  if(ps2x.Button(PSB_L1))
  {
    Serial.println("Presionaste L1: ");
  }
  if(ps2x.Button(PSB_L2))
  {
    Serial.println("Presionaste L2: ");
  }
  if(ps2x.Button(PSB_R1))
  {
    Serial.println("Presionaste R1: ");
  }
  if(ps2x.Button(PSB_R2))
  {
    Serial.println("Presionaste R2: ");
  }

 
  if(ps2x.Button(PSB_SELECT))
  {
    Serial.println("Presionaste seleccionar: ");
  }
  else if(ps2x.Button(PSB_START))
  {
    Serial.println("Presionaste entrar: ");
  }
 
  delay(50);
}


Las conexiones realizadas son las siguientes (con el lado sin curvaturas del conector del mando hacia arriba):
      pin 1 => pin 13
      pin 2 => pin 12
      pin 4 => GND
      pin 5 => 3.3 V
      pin 6 => pin A0
      pin 7 => pin 8

Inicialmente ejecuté el programa en mi placa Funduino UNO (esta) con un mando de marca desconocida. Al ejecutar el programa me aparecía en el monitor serie que estaba pulsando constantemente todos los botones. Decidí pedirle un mando original de Sony a un amigo, y al volver a ejecutar el programa sucedía exactamente lo mismo que antes.
No sé que puede estar fallado ya que el programa que he utilizado es el que el hombre del tutorial utiliza con éxito. A diferencia del hombre del tutorial, yo utilizo una Funduino UNO, en cambio él utiliza una Arduino UNO. No se si entra en juego algo de hardware o de software, pero me he quedado sin ideas...  :smiley-confuse:
Espero que puedan ayudarme.

Gracias de antemano.
Un saludo. 

surbyte

Aunque no creo que sea esto, prueba con esta librería PS2X mas actual.

Elimina la anterior y reemplázala por esta.

Ten en cuenta que puedes con estos comandos descomentados

// $$$$$$$$$$$$ DEBUG ENABLE SECTION $$$$$$$$$$$$$$$$
// to debug ps2 controller, uncomment these two lines to print out debug to uart

#define PS2X_DEBUG
#define PS2X_COM_DEBUG

ver información de como funciona todo.


Cheskovy

He intentado compilar uno de los ejemplos que viene con la librería PS2X que me has mencionado y sencillamente aparece un error que dice que es una librería invalida

Code: [Select]
/Users/Fran/Documents/Arduino/libraries/Arduino-PS2X-master/PS2X_lib/Examples/PS2X_Example/PS2X_Example.ino:1:34: fatal error: PS2X_lib.h: No such file or directory
 #include <PS2X_lib.h>  //for v1.6
                                  ^
compilation terminated.
exit status 1
Error compilando para la tarjeta Arduino/Genuino Uno.
Librería inválida encontrada en /Users/Fran/Documents/Arduino/libraries/Arduino-PS2X-master: /Users/Fran/Documents/Arduino/libraries/Arduino-PS2X-master


He visto que dentro de la carpeta de la librería había un archivo donde había unas instrucciones por si se tenia algún problema con esta en la que sencillamente tenia que eliminar marcas de comentarios. He vuelto a probar y el resultado es el mismo.
He ido a la pagina del creador de la librería y he visto que una persona posteó un problema igual que el mío, pero no tiene respuesta y es de hace mas de un año, por lo que supongo que escribirle al creador sería inútil.

Estoy en las mismas que antes, con la librería anterior. 

surbyte


Cheskovy

Si, la borre y puse la que me has dicho en la carpeta de librerías de Arduino.

surbyte


Cheskovy

#6
Jan 11, 2019, 02:07 pm Last Edit: Jan 11, 2019, 02:09 pm by Cheskovy
Sigo en las mismas que al principio he intentado varias cosas aun sin tener del todo idea de que hacia y no he conseguido nada. No tengo ni idea de que puede estar fallando... No se si es un problema de software o de compatibilidad con la placa y el mando o... no sé...

Alguien que sepa sobre le tema?

Go Up