Pages: [1]   Go Down
Author Topic: Problem with PS3USB example sketch  (Read 926 times)
0 Members and 1 Guest are viewing this topic.
London
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hello all, first post and kinda new to this stuff so treat me gently...

I'm using a SparkFun USB Host Shield with an Arduino Uno powered by a 12 V adaptor and connected to my laptop via USB for serial communication. I've installed the USB Host Shield Library v2.0 and am trying to run the example sketch "PS3USB". I've got a MadCatz PS3 compatible wireless controller with its usb dongle connected to the shield. When I run the sketch and open the serial monitor the following is displayed:

Quote
PS3 USB Library Started
Unknown Device Connected - VID: 0738 PID: A856
PS3 Init Failed, error code: D1

I've plugged the dongle into my laptop and it's been detected so I know there's not a problem with the controller, I'm therefore just looking for some guidance to resolve the problem. The example sketch is attached below, thanks.

Code:
/*
 Example sketch for the PS3 USB library - developed by Kristian Lauszus
 For more information visit my blog: http://blog.tkjelectronics.dk/ or
 send me an e-mail:  kristianl@tkjelectronics.com
 */

#include <PS3USB.h>
USB Usb;
/* You can create the instance of the class in two ways */
PS3USB PS3(&Usb); // This will just create the instance
//PS3USB PS3(&Usb,0x00,0x15,0x83,0x3D,0x0A,0x57); // This will also store the bluetooth address - this can be obtained from the dongle when running the sketch

boolean printAngle;
uint8_t state = 0;

void setup() {
  Serial.begin(115200);
  if (Usb.Init() == -1) {
    Serial.print(F("\r\nOSC did not start"));
    while(1); //halt
  } 
  Serial.print(F("\r\nPS3 USB Library Started"));
}
void loop() {
  Usb.Task();

  if(PS3.PS3Connected || PS3.PS3NavigationConnected) {
    if(PS3.getAnalogHat(LeftHatX) > 137 || PS3.getAnalogHat(LeftHatX) < 117 || PS3.getAnalogHat(LeftHatY) > 137 || PS3.getAnalogHat(LeftHatY) < 117 || PS3.getAnalogHat(RightHatX) > 137 || PS3.getAnalogHat(RightHatX) < 117 || PS3.getAnalogHat(RightHatY) > 137 || PS3.getAnalogHat(RightHatY) < 117) {
      Serial.print(F("\r\nLeftHatX: "));
      Serial.print(PS3.getAnalogHat(LeftHatX));
      Serial.print(F("\tLeftHatY: "));
      Serial.print(PS3.getAnalogHat(LeftHatY));
      Serial.print(F("\tRightHatX: "));
      Serial.print(PS3.getAnalogHat(RightHatX));
      Serial.print(F("\tRightHatY: "));
      Serial.print(PS3.getAnalogHat(RightHatY));
    }
    // Analog button values can be read from almost all buttons
    if(PS3.getAnalogButton(L2_ANALOG) > 0 || PS3.getAnalogButton(R2_ANALOG) > 0) {
      Serial.print(F("\r\nL2: "));
      Serial.print(PS3.getAnalogButton(L2_ANALOG));
      Serial.print(F("\tR2: "));
      Serial.print(PS3.getAnalogButton(R2_ANALOG));
    }
    if(PS3.getButtonClick(PS))
      Serial.print(F("\r\nPS"));

    if(PS3.getButtonClick(TRIANGLE))
      Serial.print(F("\r\nTraingle"));
    if(PS3.getButtonClick(CIRCLE))
      Serial.print(F("\r\nCircle"));
    if(PS3.getButtonClick(CROSS))
      Serial.print(F("\r\nCross"));
    if(PS3.getButtonClick(SQUARE))
      Serial.print(F("\r\nSquare"));

    if(PS3.getButtonClick(UP)) {
      Serial.print(F("\r\nUp"));
      PS3.setAllOff();
      PS3.setLedOn(LED4);
    }
    if(PS3.getButtonClick(RIGHT)) {
      Serial.print(F("\r\nRight"));
      PS3.setAllOff();
      PS3.setLedOn(LED1);         
    }
    if(PS3.getButtonClick(DOWN)) {
      Serial.print(F("\r\nDown"));
      PS3.setAllOff();
      PS3.setLedOn(LED2);         
    }
    if(PS3.getButtonClick(LEFT)) {         
      Serial.print(F("\r\nLeft"));
      PS3.setAllOff();         
      PS3.setLedOn(LED3);         
    }

    if(PS3.getButtonClick(L1))
      Serial.print(F("\r\nL1")); 
    if(PS3.getButtonClick(L3))
      Serial.print(F("\r\nL3"));
    if(PS3.getButtonClick(R1))
      Serial.print(F("\r\nR1")); 
    if(PS3.getButtonClick(R3))
      Serial.print(F("\r\nR3"));

    if(PS3.getButtonClick(SELECT)) {
      Serial.print(F("\r\nSelect - "));
      Serial.print(PS3.getStatusString());       
    }
    if(PS3.getButtonClick(START)) {
      Serial.print(F("\r\nStart"));             
      printAngle = !printAngle;
    }                                               
  }
  if(printAngle) {
    Serial.print(F("\r\nPitch: "));               
    Serial.print(PS3.getAngle(Pitch));                 
    Serial.print(F("\tRoll: "));
    Serial.print(PS3.getAngle(Roll));     
  }
  else if(PS3.PS3MoveConnected) { // One can only set the color of the bulb, set the rumble, set and get the bluetooth address and calibrate the magnetometer via USB
    switch(state) {
    case 0:
      PS3.moveSetRumble(0);   
      PS3.moveSetBulb(Off);     
      state = 1;
      break;

    case 1:
      PS3.moveSetRumble(75);
      PS3.moveSetBulb(Red);     
      state = 2;
      break;

    case 2:
      PS3.moveSetRumble(125);
      PS3.moveSetBulb(Green);     
      state = 3;
      break;

    case 3:
      PS3.moveSetRumble(150);
      PS3.moveSetBulb(Blue);     
      state = 4;
      break;

    case 4:
      PS3.moveSetRumble(175);
      PS3.moveSetBulb(Yellow);   
      state = 5;
      break;

    case 5:
      PS3.moveSetRumble(200);
      PS3.moveSetBulb(Lightblue);   
      state = 6;
      break;

    case 6:
      PS3.moveSetRumble(225);
      PS3.moveSetBulb(Purble);   
      state = 7;
      break;

    case 7:
      PS3.moveSetRumble(250);
      PS3.moveSetBulb(White);   
      state = 0;
      break;
    }
    delay(1000);
  }
}
Logged

Gosport, UK
Offline Offline
Faraday Member
**
Karma: 21
Posts: 3113
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

The PS3USB library, as supplied, expects to find a device with a genuine Sony VID (Vendor ID) of 0x054C, and fails if it doesn't see one. You could try modifying the following lines in PS3USB.h...

Code:
//PID and VID of the different devices
#define PS3_VID 0x054C // Sony Corporation
#define PS3_PID 0x0268 // PS3 Controller DualShock 3

Replace the VID and PID values with those for your device.
Logged

London
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Thank you very much! I've got it working now!
Logged

London
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

i've been running the sketch and it just scrolls infinitely on the serial monitor and it doesn't seem to be responding to any button presses from the controller; should i change something else in the PS3USB.h file?
Logged

London
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, since yesterday i've managed to get my hands on a usb cable for my official sony dualshock controller. Once again I've changed the VID and PID values in the .h file to match those of the controller and the sketch now says:
Quote
PS3 USB Library Started
Dualshock 3 Controller Connected
Bluetooth Address was set to: 00:00:00:00:00:00
but it's not responding to any button presses/holds. Please help!
Logged

Pages: [1]   Go Up
Jump to: