2012-08-04 20:10:00 +02:00
/*
2012-08-08 19:59:43 +02:00
Example sketch for the Bluetooth library - developed by Kristian Lauszus
2012-08-04 20:10:00 +02:00
For more information visit my blog : http : //blog.tkjelectronics.dk/ or
send me an e - mail : kristianl @ tkjelectronics . com
2012-09-09 22:13:52 +02:00
2013-02-04 07:25:28 +01:00
This example show how one can combine all the difference Bluetooth services in one single code .
Note :
2012-08-09 21:34:51 +02:00
You will need a Arduino Mega 1280 / 2560 to run this sketch ,
2013-02-04 07:25:28 +01:00
as a normal Arduino ( Uno , Duemilanove etc . ) doesn ' t have enough SRAM and FLASH
2012-08-09 21:34:51 +02:00
*/
2012-08-04 20:10:00 +02:00
2012-08-08 19:23:03 +02:00
# include <PS3BT.h>
# include <SPP.h>
2012-08-04 20:10:00 +02:00
USB Usb ;
2012-08-08 19:23:03 +02:00
BTD Btd ( & Usb ) ; // You have to create the Bluetooth Dongle instance like so
/* You can create the instances of the bluetooth services in two ways */
2012-08-04 20:10:00 +02:00
SPP SerialBT ( & Btd ) ; // This will set the name to the defaults: "Arduino" and the pin to "1234"
2012-08-08 19:23:03 +02:00
//SPP SerialBTBT(&Btd,"Lauszus's Arduino","0000"); // You can also set the name and pin like so
2012-08-04 20:10:00 +02:00
PS3BT PS3 ( & Btd ) ; // This will just create the instance
//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
boolean firstMessage = true ;
2012-09-09 22:13:52 +02:00
String output ; // We will store the data in these string so we doesn't overflow the dongle
2012-08-08 19:23:03 +02:00
2012-08-04 20:10:00 +02:00
void setup ( ) {
Serial . begin ( 115200 ) ; // This wil lprint the debugging from the libraries
if ( Usb . Init ( ) = = - 1 ) {
2012-08-08 19:23:03 +02:00
Serial . print ( F ( " \r \n OSC did not start " ) ) ;
2012-08-04 20:10:00 +02:00
while ( 1 ) ; //halt
}
2012-08-08 21:28:25 +02:00
Serial . print ( F ( " \r \n Bluetooth Library Started " ) ) ;
2012-08-04 20:10:00 +02:00
}
void loop ( ) {
Usb . Task ( ) ;
2012-08-08 19:23:03 +02:00
if ( SerialBT . connected ) {
2012-08-04 20:10:00 +02:00
if ( firstMessage ) {
firstMessage = false ;
SerialBT . println ( F ( " Hello from Arduino " ) ) ; // Send welcome message
}
if ( Serial . available ( ) )
SerialBT . print ( Serial . read ( ) ) ;
if ( SerialBT . available ( ) )
Serial . write ( SerialBT . read ( ) ) ;
}
else
firstMessage = true ;
2012-08-08 19:23:03 +02:00
2012-09-09 22:13:52 +02:00
if ( PS3 . PS3Connected | | PS3 . PS3NavigationConnected ) {
2012-09-19 23:20:49 +02:00
output = " " ; // Reset output string
2012-08-04 20:10:00 +02:00
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
output + = " LeftHatX: " ;
output + = PS3 . getAnalogHat ( LeftHatX ) ;
output + = " \t LeftHatY: " ;
output + = PS3 . getAnalogHat ( LeftHatY ) ;
2013-01-20 22:30:53 +01:00
if ( ! PS3 . PS3NavigationConnected ) {
output + = " \t RightHatX: " ;
output + = PS3 . getAnalogHat ( RightHatX ) ;
output + = " \t RightHatY: " ;
output + = PS3 . getAnalogHat ( RightHatY ) ;
}
2012-08-04 20:10:00 +02:00
}
//Analog button values can be read from almost all buttons
2013-01-27 22:02:33 +01:00
if ( PS3 . getAnalogButton ( L2 ) | | PS3 . getAnalogButton ( R2 ) ) {
2012-09-09 22:13:52 +02:00
if ( output ! = " " )
output + = " \r \n " ;
output + = " L2: " ;
2013-01-27 22:02:33 +01:00
output + = PS3 . getAnalogButton ( L2 ) ;
2013-01-20 22:30:53 +01:00
if ( ! PS3 . PS3NavigationConnected ) {
output + = " \t R2: " ;
2013-01-27 22:02:33 +01:00
output + = PS3 . getAnalogButton ( R2 ) ;
2013-01-20 22:30:53 +01:00
}
2012-08-08 19:23:03 +02:00
}
2012-09-09 22:13:52 +02:00
if ( output ! = " " ) {
Serial . println ( output ) ;
2012-08-08 19:23:03 +02:00
if ( SerialBT . connected )
2012-09-09 22:13:52 +02:00
SerialBT . println ( output ) ;
2012-09-19 23:20:49 +02:00
output = " " ; // Reset output string
2012-08-04 20:10:00 +02:00
}
2012-09-09 22:13:52 +02:00
if ( PS3 . getButtonClick ( PS ) ) {
output + = " - PS " ;
PS3 . disconnect ( ) ;
}
else {
if ( PS3 . getButtonClick ( TRIANGLE ) )
output + = " - Traingle " ;
if ( PS3 . getButtonClick ( CIRCLE ) )
output + = " - Circle " ;
if ( PS3 . getButtonClick ( CROSS ) )
output + = " - Cross " ;
if ( PS3 . getButtonClick ( SQUARE ) )
output + = " - Square " ;
2012-08-04 20:10:00 +02:00
2012-09-09 22:13:52 +02:00
if ( PS3 . getButtonClick ( UP ) ) {
output + = " - Up " ;
if ( PS3 . PS3Connected ) {
PS3 . setAllOff ( ) ;
PS3 . setLedOn ( LED4 ) ;
}
}
if ( PS3 . getButtonClick ( RIGHT ) ) {
output + = " - Right " ;
if ( PS3 . PS3Connected ) {
PS3 . setAllOff ( ) ;
PS3 . setLedOn ( LED1 ) ;
}
}
if ( PS3 . getButtonClick ( DOWN ) ) {
output + = " - Down " ;
if ( PS3 . PS3Connected ) {
PS3 . setAllOff ( ) ;
PS3 . setLedOn ( LED2 ) ;
}
}
if ( PS3 . getButtonClick ( LEFT ) ) {
output + = " - Left " ;
if ( PS3 . PS3Connected ) {
PS3 . setAllOff ( ) ;
PS3 . setLedOn ( LED3 ) ;
}
2012-08-08 19:23:03 +02:00
}
2012-08-04 20:10:00 +02:00
2012-09-09 22:13:52 +02:00
if ( PS3 . getButtonClick ( L1 ) )
output + = " - L1 " ;
if ( PS3 . getButtonClick ( L3 ) )
output + = " - L3 " ;
if ( PS3 . getButtonClick ( R1 ) )
output + = " - R1 " ;
if ( PS3 . getButtonClick ( R3 ) )
output + = " - R3 " ;
2012-08-04 20:10:00 +02:00
2012-09-09 22:13:52 +02:00
if ( PS3 . getButtonClick ( SELECT ) )
output + = " - Select " ;
if ( PS3 . getButtonClick ( START ) )
output + = " - Start " ;
2012-08-04 20:10:00 +02:00
2012-09-09 22:13:52 +02:00
if ( output ! = " " ) {
String string = " PS3 Controller " + output ;
Serial . println ( string ) ;
2012-08-08 19:23:03 +02:00
if ( SerialBT . connected )
2012-09-09 22:13:52 +02:00
SerialBT . println ( string ) ;
}
}
2012-08-04 20:10:00 +02:00
}
}