2012-05-26 01:46:18 +02:00
/*
Example sketch for the PS3 Bluetooth library - developed by Kristian Lauszus
2013-11-12 19:45:06 +01:00
For more information visit my blog : http : //blog.tkjelectronics.dk/ or
2012-05-26 01:46:18 +02:00
send me an e - mail : kristianl @ tkjelectronics . com
*/
# include <PS3BT.h>
2013-08-13 21:31:52 +02:00
# include <usbhub.h>
2014-08-03 00:57:37 +02:00
2015-03-03 19:08:39 +01:00
// Satisfy the IDE, which needs to see the include statment in the ino too.
# ifdef dobogusinclude
2013-12-05 03:56:06 +01:00
# include <spi4teensy3.h>
# endif
2017-08-14 09:39:38 +02:00
# include <SPI.h>
2013-08-13 21:31:52 +02:00
2012-05-26 01:46:18 +02:00
USB Usb ;
2013-11-24 15:17:19 +01:00
//USBHub Hub1(&Usb); // Some dongles have a hub inside
2012-08-08 19:21:40 +02:00
BTD Btd ( & Usb ) ; // You have to create the Bluetooth Dongle instance like so
2012-05-26 01:46:18 +02:00
/* You can create the instance of the class in two ways */
2012-08-08 19:21:40 +02:00
PS3BT PS3 ( & Btd ) ; // This will just create the instance
2014-01-12 16:31:47 +01:00
//PS3BT PS3(&Btd, 0x00, 0x15, 0x83, 0x3D, 0x0A, 0x57); // This will also store the bluetooth address - this can be obtained from the dongle when running the sketch
2012-05-26 01:46:18 +02:00
2016-01-20 01:07:26 +01:00
bool printTemperature , printAngle ;
2012-05-26 01:46:18 +02:00
2012-08-08 19:21:40 +02:00
void setup ( ) {
2012-05-26 01:46:18 +02:00
Serial . begin ( 115200 ) ;
2014-11-10 07:35:13 +01:00
# if !defined(__MIPSEL__)
2013-10-21 19:58:03 +02:00
while ( ! Serial ) ; // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection
2014-11-10 07:35:13 +01:00
# endif
2012-05-26 01:46:18 +02:00
if ( Usb . Init ( ) = = - 1 ) {
Serial . print ( F ( " \r \n OSC did not start " ) ) ;
2013-11-12 19:45:06 +01:00
while ( 1 ) ; //halt
2012-05-26 01:46:18 +02:00
}
Serial . print ( F ( " \r \n PS3 Bluetooth Library Started " ) ) ;
}
2012-08-08 19:21:40 +02:00
void loop ( ) {
2012-05-26 01:46:18 +02:00
Usb . Task ( ) ;
2013-11-12 19:45:06 +01:00
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 \n LeftHatX: " ) ) ;
2012-09-09 22:13:52 +02:00
Serial . print ( PS3 . getAnalogHat ( LeftHatX ) ) ;
2013-11-12 19:45:06 +01:00
Serial . print ( F ( " \t LeftHatY: " ) ) ;
2012-09-09 22:13:52 +02:00
Serial . print ( PS3 . getAnalogHat ( LeftHatY ) ) ;
2013-11-24 15:15:46 +01:00
if ( PS3 . PS3Connected ) { // The Navigation controller only have one joystick
2013-11-12 19:45:06 +01:00
Serial . print ( F ( " \t RightHatX: " ) ) ;
2013-01-20 18:14:15 +01:00
Serial . print ( PS3 . getAnalogHat ( RightHatX ) ) ;
2013-11-12 19:45:06 +01:00
Serial . print ( F ( " \t RightHatY: " ) ) ;
2013-01-20 18:14:15 +01:00
Serial . print ( PS3 . getAnalogHat ( RightHatY ) ) ;
2013-11-12 19:45:06 +01:00
}
2012-05-26 01:46:18 +02:00
}
2013-11-12 19:45:06 +01:00
// Analog button values can be read from almost all buttons
if ( PS3 . getAnalogButton ( L2 ) | | PS3 . getAnalogButton ( R2 ) ) {
Serial . print ( F ( " \r \n L2: " ) ) ;
2013-01-27 22:02:33 +01:00
Serial . print ( PS3 . getAnalogButton ( L2 ) ) ;
2014-01-12 16:31:47 +01:00
if ( PS3 . PS3Connected ) {
2013-11-12 19:45:06 +01:00
Serial . print ( F ( " \t R2: " ) ) ;
2013-01-27 22:02:33 +01:00
Serial . print ( PS3 . getAnalogButton ( R2 ) ) ;
2013-01-20 22:30:53 +01:00
}
2012-05-26 01:46:18 +02:00
}
2016-01-20 01:07:26 +01:00
2013-11-12 19:45:06 +01:00
if ( PS3 . getButtonClick ( PS ) ) {
2012-09-09 22:13:52 +02:00
Serial . print ( F ( " \r \n PS " ) ) ;
PS3 . disconnect ( ) ;
2013-11-12 19:45:06 +01:00
}
2012-09-09 22:13:52 +02:00
else {
2016-01-20 01:07:26 +01:00
if ( PS3 . getButtonClick ( TRIANGLE ) ) {
2019-06-20 12:18:44 +02:00
Serial . print ( F ( " \r \n Triangle " ) ) ;
2016-01-20 01:07:26 +01:00
PS3 . setRumbleOn ( RumbleLow ) ;
}
if ( PS3 . getButtonClick ( CIRCLE ) ) {
2012-09-09 22:13:52 +02:00
Serial . print ( F ( " \r \n Circle " ) ) ;
2016-01-20 01:07:26 +01:00
PS3 . setRumbleOn ( RumbleHigh ) ;
}
2013-11-12 19:45:06 +01:00
if ( PS3 . getButtonClick ( CROSS ) )
2012-09-09 22:13:52 +02:00
Serial . print ( F ( " \r \n Cross " ) ) ;
2013-11-12 19:45:06 +01:00
if ( PS3 . getButtonClick ( SQUARE ) )
2012-09-09 22:13:52 +02:00
Serial . print ( F ( " \r \n Square " ) ) ;
2012-05-26 01:46:18 +02:00
2013-11-12 19:45:06 +01:00
if ( PS3 . getButtonClick ( UP ) ) {
Serial . print ( F ( " \r \n Up " ) ) ;
if ( PS3 . PS3Connected ) {
2013-11-15 23:19:10 +01:00
PS3 . setLedOff ( ) ;
2012-09-09 22:13:52 +02:00
PS3 . setLedOn ( LED4 ) ;
}
2013-11-12 19:45:06 +01:00
}
if ( PS3 . getButtonClick ( RIGHT ) ) {
2012-09-09 22:13:52 +02:00
Serial . print ( F ( " \r \n Right " ) ) ;
2013-11-12 19:45:06 +01:00
if ( PS3 . PS3Connected ) {
2013-11-15 23:19:10 +01:00
PS3 . setLedOff ( ) ;
2013-11-12 19:45:06 +01:00
PS3 . setLedOn ( LED1 ) ;
}
}
if ( PS3 . getButtonClick ( DOWN ) ) {
2012-09-09 22:13:52 +02:00
Serial . print ( F ( " \r \n Down " ) ) ;
2013-11-12 19:45:06 +01:00
if ( PS3 . PS3Connected ) {
2013-11-15 23:19:10 +01:00
PS3 . setLedOff ( ) ;
2013-11-12 19:45:06 +01:00
PS3 . setLedOn ( LED2 ) ;
2012-09-09 22:13:52 +02:00
}
2013-11-12 19:45:06 +01:00
}
if ( PS3 . getButtonClick ( LEFT ) ) {
Serial . print ( F ( " \r \n Left " ) ) ;
if ( PS3 . PS3Connected ) {
2013-11-15 23:19:10 +01:00
PS3 . setLedOff ( ) ;
2013-11-12 19:45:06 +01:00
PS3 . setLedOn ( LED3 ) ;
}
}
2012-05-26 01:46:18 +02:00
2013-11-12 19:45:06 +01: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 ) )
2012-09-09 22:13:52 +02:00
Serial . print ( F ( " \r \n R3 " ) ) ;
2012-05-26 01:46:18 +02:00
2013-11-12 19:45:06 +01:00
if ( PS3 . getButtonClick ( SELECT ) ) {
Serial . print ( F ( " \r \n Select - " ) ) ;
2014-01-04 14:14:22 +01:00
PS3 . printStatusString ( ) ;
2013-11-12 19:45:06 +01:00
}
if ( PS3 . getButtonClick ( START ) ) {
Serial . print ( F ( " \r \n Start " ) ) ;
2012-09-09 22:13:52 +02:00
printAngle = ! printAngle ;
2013-11-12 19:45:06 +01:00
}
2012-05-26 01:46:18 +02:00
}
2014-08-25 02:26:49 +02:00
#if 0 // Set this to 1 in order to see the angle of the controller
2013-11-12 19:45:06 +01:00
if ( printAngle ) {
Serial . print ( F ( " \r \n Pitch: " ) ) ;
Serial . print ( PS3 . getAngle ( Pitch ) ) ;
Serial . print ( F ( " \t Roll: " ) ) ;
2012-09-09 22:13:52 +02:00
Serial . print ( PS3 . getAngle ( Roll ) ) ;
2012-05-26 01:46:18 +02:00
}
2014-08-25 02:26:49 +02:00
# endif
2012-05-26 01:46:18 +02:00
}
2014-08-25 02:26:49 +02:00
#if 0 // Set this to 1 in order to enable support for the Playstation Move controller
2013-11-12 19:45:06 +01:00
else if ( PS3 . PS3MoveConnected ) {
if ( PS3 . getAnalogButton ( T ) ) {
Serial . print ( F ( " \r \n T: " ) ) ;
Serial . print ( PS3 . getAnalogButton ( T ) ) ;
}
if ( PS3 . getButtonClick ( PS ) ) {
2012-09-09 22:13:52 +02:00
Serial . print ( F ( " \r \n PS " ) ) ;
PS3 . disconnect ( ) ;
2013-11-12 19:45:06 +01:00
}
2012-09-09 22:13:52 +02:00
else {
2013-11-12 19:45:06 +01:00
if ( PS3 . getButtonClick ( SELECT ) ) {
2012-09-09 22:13:52 +02:00
Serial . print ( F ( " \r \n Select " ) ) ;
printTemperature = ! printTemperature ;
2013-11-12 19:45:06 +01:00
}
if ( PS3 . getButtonClick ( START ) ) {
2012-09-09 22:13:52 +02:00
Serial . print ( F ( " \r \n Start " ) ) ;
2013-11-12 19:45:06 +01:00
printAngle = ! printAngle ;
}
if ( PS3 . getButtonClick ( TRIANGLE ) ) {
2012-09-09 22:13:52 +02:00
Serial . print ( F ( " \r \n Triangle " ) ) ;
PS3 . moveSetBulb ( Red ) ;
2013-11-12 19:45:06 +01:00
}
if ( PS3 . getButtonClick ( CIRCLE ) ) {
2012-09-09 22:13:52 +02:00
Serial . print ( F ( " \r \n Circle " ) ) ;
PS3 . moveSetBulb ( Green ) ;
2013-11-12 19:45:06 +01:00
}
if ( PS3 . getButtonClick ( SQUARE ) ) {
2012-09-09 22:13:52 +02:00
Serial . print ( F ( " \r \n Square " ) ) ;
PS3 . moveSetBulb ( Blue ) ;
2013-11-12 19:45:06 +01:00
}
if ( PS3 . getButtonClick ( CROSS ) ) {
2012-09-09 22:13:52 +02:00
Serial . print ( F ( " \r \n Cross " ) ) ;
PS3 . moveSetBulb ( Yellow ) ;
2013-11-12 19:45:06 +01:00
}
if ( PS3 . getButtonClick ( MOVE ) ) {
PS3 . moveSetBulb ( Off ) ;
2012-09-09 22:13:52 +02:00
Serial . print ( F ( " \r \n Move " ) ) ;
2013-11-12 19:45:06 +01:00
Serial . print ( F ( " - " ) ) ;
2014-01-04 14:14:22 +01:00
PS3 . printStatusString ( ) ;
2012-05-26 01:46:18 +02:00
}
}
2013-11-12 19:45:06 +01:00
if ( printAngle ) {
Serial . print ( F ( " \r \n Pitch: " ) ) ;
Serial . print ( PS3 . getAngle ( Pitch ) ) ;
Serial . print ( F ( " \t Roll: " ) ) ;
2012-09-09 22:13:52 +02:00
Serial . print ( PS3 . getAngle ( Roll ) ) ;
2012-05-26 01:46:18 +02:00
}
2013-11-12 19:45:06 +01:00
else if ( printTemperature ) {
2012-09-09 22:13:52 +02:00
Serial . print ( F ( " \r \n Temperature: " ) ) ;
Serial . print ( PS3 . getTemperature ( ) ) ;
2012-05-26 01:46:18 +02:00
}
}
2014-08-25 02:26:49 +02:00
# endif
2012-05-26 01:46:18 +02:00
}