2012-05-26 01:48:12 +02:00
/*
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 \n OSC did not start " ) ) ;
while ( 1 ) ; //halt
}
Serial . print ( F ( " \r \n PS3 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 ) {
2012-09-09 22:13:52 +02:00
Serial . print ( F ( " \r \n LeftHatX: " ) ) ;
Serial . print ( PS3 . getAnalogHat ( LeftHatX ) ) ;
Serial . print ( F ( " \t LeftHatY: " ) ) ;
Serial . print ( PS3 . getAnalogHat ( LeftHatY ) ) ;
Serial . print ( F ( " \t RightHatX: " ) ) ;
Serial . print ( PS3 . getAnalogHat ( RightHatX ) ) ;
Serial . print ( F ( " \t RightHatY: " ) ) ;
Serial . print ( PS3 . getAnalogHat ( RightHatY ) ) ;
2012-05-26 01:48:12 +02:00
}
// Analog button values can be read from almost all buttons
if ( PS3 . getAnalogButton ( L2_ANALOG ) > 0 | | PS3 . getAnalogButton ( R2_ANALOG ) > 0 ) {
2012-09-09 22:13:52 +02:00
Serial . print ( F ( " \r \n L2: " ) ) ;
Serial . print ( PS3 . getAnalogButton ( L2_ANALOG ) ) ;
Serial . print ( F ( " \t R2: " ) ) ;
Serial . print ( PS3 . getAnalogButton ( R2_ANALOG ) ) ;
2012-05-26 01:48:12 +02:00
}
2012-09-09 22:13:52 +02:00
if ( PS3 . getButtonClick ( PS ) )
Serial . print ( F ( " \r \n PS " ) ) ;
2012-05-26 01:48:12 +02:00
2012-09-09 22:13:52 +02:00
if ( PS3 . getButtonClick ( TRIANGLE ) )
Serial . print ( F ( " \r \n Traingle " ) ) ;
if ( PS3 . getButtonClick ( CIRCLE ) )
Serial . print ( F ( " \r \n Circle " ) ) ;
if ( PS3 . getButtonClick ( CROSS ) )
Serial . print ( F ( " \r \n Cross " ) ) ;
if ( PS3 . getButtonClick ( SQUARE ) )
Serial . print ( F ( " \r \n Square " ) ) ;
2012-05-26 01:48:12 +02:00
2012-09-09 22:13:52 +02:00
if ( PS3 . getButtonClick ( UP ) ) {
Serial . print ( F ( " \r \n Up " ) ) ;
PS3 . setAllOff ( ) ;
PS3 . setLedOn ( LED4 ) ;
}
if ( PS3 . getButtonClick ( RIGHT ) ) {
Serial . print ( F ( " \r \n Right " ) ) ;
PS3 . setAllOff ( ) ;
PS3 . setLedOn ( LED1 ) ;
}
if ( PS3 . getButtonClick ( DOWN ) ) {
Serial . print ( F ( " \r \n Down " ) ) ;
PS3 . setAllOff ( ) ;
PS3 . setLedOn ( LED2 ) ;
}
if ( PS3 . getButtonClick ( LEFT ) ) {
Serial . print ( F ( " \r \n Left " ) ) ;
PS3 . setAllOff ( ) ;
PS3 . setLedOn ( LED3 ) ;
}
2012-05-26 01:48:12 +02:00
2012-09-09 22:13:52 +02:00
if ( PS3 . getButtonClick ( L1 ) )
Serial . print ( F ( " \r \n L1 " ) ) ;
if ( PS3 . getButtonClick ( L3 ) )
Serial . print ( F ( " \r \n L3 " ) ) ;
if ( PS3 . getButtonClick ( R1 ) )
Serial . print ( F ( " \r \n R1 " ) ) ;
if ( PS3 . getButtonClick ( R3 ) )
Serial . print ( F ( " \r \n R3 " ) ) ;
2012-05-26 01:48:12 +02:00
2012-09-09 22:13:52 +02:00
if ( PS3 . getButtonClick ( SELECT ) ) {
Serial . print ( F ( " \r \n Select - " ) ) ;
Serial . print ( PS3 . getStatusString ( ) ) ;
}
if ( PS3 . getButtonClick ( START ) ) {
Serial . print ( F ( " \r \n Start " ) ) ;
printAngle = ! printAngle ;
}
}
if ( printAngle ) {
Serial . print ( F ( " \r \n Pitch: " ) ) ;
Serial . print ( PS3 . getAngle ( Pitch ) ) ;
Serial . print ( F ( " \t Roll: " ) ) ;
Serial . print ( PS3 . getAngle ( Roll ) ) ;
2012-05-26 01:48:12 +02:00
}
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 ) {
2012-09-09 22:13:52 +02:00
case 0 :
2012-05-26 01:48:12 +02:00
PS3 . moveSetRumble ( 0 ) ;
PS3 . moveSetBulb ( Off ) ;
state = 1 ;
break ;
2012-09-09 22:13:52 +02:00
case 1 :
2012-05-26 01:48:12 +02:00
PS3 . moveSetRumble ( 75 ) ;
PS3 . moveSetBulb ( Red ) ;
state = 2 ;
break ;
2012-09-09 22:13:52 +02:00
case 2 :
2012-05-26 01:48:12 +02:00
PS3 . moveSetRumble ( 125 ) ;
PS3 . moveSetBulb ( Green ) ;
state = 3 ;
break ;
2012-09-09 22:13:52 +02:00
case 3 :
2012-05-26 01:48:12 +02:00
PS3 . moveSetRumble ( 150 ) ;
PS3 . moveSetBulb ( Blue ) ;
state = 4 ;
break ;
2012-09-09 22:13:52 +02:00
case 4 :
2012-05-26 01:48:12 +02:00
PS3 . moveSetRumble ( 175 ) ;
PS3 . moveSetBulb ( Yellow ) ;
state = 5 ;
break ;
2012-09-09 22:13:52 +02:00
case 5 :
2012-05-26 01:48:12 +02:00
PS3 . moveSetRumble ( 200 ) ;
PS3 . moveSetBulb ( Lightblue ) ;
state = 6 ;
break ;
2012-09-09 22:13:52 +02:00
case 6 :
2012-05-26 01:48:12 +02:00
PS3 . moveSetRumble ( 225 ) ;
PS3 . moveSetBulb ( Purble ) ;
state = 7 ;
break ;
2012-09-09 22:13:52 +02:00
case 7 :
2012-05-26 01:48:12 +02:00
PS3 . moveSetRumble ( 250 ) ;
PS3 . moveSetBulb ( White ) ;
state = 0 ;
break ;
}
delay ( 1000 ) ;
}
}