mirror of
https://github.com/felis/USB_Host_Shield_2.0.git
synced 2024-03-22 11:31:26 +01:00
Several minor adjustments
This commit is contained in:
parent
b66a8f214c
commit
d638d726e2
5 changed files with 255 additions and 255 deletions
67
PS3BT.cpp
67
PS3BT.cpp
|
@ -369,6 +369,9 @@ void PS3BT::PrintEndpointDescriptor( const USB_ENDPOINT_DESCRIPTOR* ep_ptr )
|
||||||
/* Performs a cleanup after failed Init() attempt */
|
/* Performs a cleanup after failed Init() attempt */
|
||||||
uint8_t PS3BT::Release()
|
uint8_t PS3BT::Release()
|
||||||
{
|
{
|
||||||
|
PS3Connected = false;
|
||||||
|
PS3MoveConnected = false;
|
||||||
|
PS3NavigationConnected = false;
|
||||||
pUsb->GetAddressPool().FreeAddress(bAddress);
|
pUsb->GetAddressPool().FreeAddress(bAddress);
|
||||||
bAddress = 0;
|
bAddress = 0;
|
||||||
bPollEnable = false;
|
bPollEnable = false;
|
||||||
|
@ -486,13 +489,13 @@ double PS3BT::getAngle(Angle a) {
|
||||||
double accYval;
|
double accYval;
|
||||||
double accZval;
|
double accZval;
|
||||||
|
|
||||||
if(PS3BTConnected) {
|
if(PS3Connected) {
|
||||||
// Data for the Kionix KXPC4 used in the DualShock 3
|
// Data for the Kionix KXPC4 used in the DualShock 3
|
||||||
const double zeroG = 511.5; // 1.65/3.3*1023 (1,65V)
|
const double zeroG = 511.5; // 1.65/3.3*1023 (1,65V)
|
||||||
accXval = -((double)getSensor(aX)-zeroG);
|
accXval = -((double)getSensor(aX)-zeroG);
|
||||||
accYval = -((double)getSensor(aY)-zeroG);
|
accYval = -((double)getSensor(aY)-zeroG);
|
||||||
accZval = -((double)getSensor(aZ)-zeroG);
|
accZval = -((double)getSensor(aZ)-zeroG);
|
||||||
} else if(PS3MoveBTConnected) {
|
} else if(PS3MoveConnected) {
|
||||||
// It's a Kionix KXSC4 inside the Motion controller
|
// It's a Kionix KXSC4 inside the Motion controller
|
||||||
const uint16_t zeroG = 0x8000;
|
const uint16_t zeroG = 0x8000;
|
||||||
accXval = getSensor(aXmove);
|
accXval = getSensor(aXmove);
|
||||||
|
@ -534,7 +537,7 @@ bool PS3BT::getStatus(Status c)
|
||||||
}
|
}
|
||||||
String PS3BT::getStatusString()
|
String PS3BT::getStatusString()
|
||||||
{
|
{
|
||||||
if (PS3BTConnected || PS3NavigationBTConnected)
|
if (PS3Connected || PS3NavigationConnected)
|
||||||
{
|
{
|
||||||
char statusOutput[100];
|
char statusOutput[100];
|
||||||
|
|
||||||
|
@ -566,7 +569,7 @@ String PS3BT::getStatusString()
|
||||||
return statusOutput;
|
return statusOutput;
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(PS3MoveBTConnected)
|
else if(PS3MoveConnected)
|
||||||
{
|
{
|
||||||
char statusOutput[50];
|
char statusOutput[50];
|
||||||
|
|
||||||
|
@ -586,12 +589,12 @@ String PS3BT::getStatusString()
|
||||||
}
|
}
|
||||||
void PS3BT::disconnect()//Use this void to disconnect any of the controllers
|
void PS3BT::disconnect()//Use this void to disconnect any of the controllers
|
||||||
{
|
{
|
||||||
if (PS3BTConnected)
|
if (PS3Connected)
|
||||||
PS3BTConnected = false;
|
PS3Connected = false;
|
||||||
else if (PS3MoveBTConnected)
|
else if (PS3MoveConnected)
|
||||||
PS3MoveBTConnected = false;
|
PS3MoveConnected = false;
|
||||||
else if (PS3NavigationBTConnected)
|
else if (PS3NavigationConnected)
|
||||||
PS3NavigationBTConnected = false;
|
PS3NavigationConnected = false;
|
||||||
|
|
||||||
//First the HID interrupt channel has to be disconencted, then the HID control channel and finally the HCI connection
|
//First the HID interrupt channel has to be disconencted, then the HID control channel and finally the HCI connection
|
||||||
l2cap_disconnection_request(0x0A, interrupt_dcid, interrupt_scid);
|
l2cap_disconnection_request(0x0A, interrupt_dcid, interrupt_scid);
|
||||||
|
@ -1030,7 +1033,7 @@ void PS3BT::ACL_event_task()
|
||||||
else if (l2capinbuf[6] == interrupt_dcid[0] && l2capinbuf[7] == interrupt_dcid[1])//l2cap_interrupt
|
else if (l2capinbuf[6] == interrupt_dcid[0] && l2capinbuf[7] == interrupt_dcid[1])//l2cap_interrupt
|
||||||
{
|
{
|
||||||
//Serial.print("\r\nL2CAP Interrupt");
|
//Serial.print("\r\nL2CAP Interrupt");
|
||||||
if(PS3BTConnected || PS3MoveBTConnected || PS3NavigationBTConnected)
|
if(PS3Connected || PS3MoveConnected || PS3NavigationConnected)
|
||||||
{
|
{
|
||||||
readReport();
|
readReport();
|
||||||
#ifdef PRINTREPORT
|
#ifdef PRINTREPORT
|
||||||
|
@ -1155,30 +1158,29 @@ void PS3BT::L2CAP_task()
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
Notify(PSTR("\r\nDualshock 3 Controller Enabled\r\n"));
|
Notify(PSTR("\r\nDualshock 3 Controller Enabled\r\n"));
|
||||||
#endif
|
#endif
|
||||||
PS3BTConnected = true;
|
PS3Connected = true;
|
||||||
} else if (remote_name[0] == 'N') { // First letter in Navigation Controller ('N')
|
} else if (remote_name[0] == 'N') { // First letter in Navigation Controller ('N')
|
||||||
setLedOn(LED1); // This just turns LED constantly on, on the Navigation controller
|
setLedOn(LED1); // This just turns LED constantly on, on the Navigation controller
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
Notify(PSTR("\r\nNavigation Controller Enabled\r\n"));
|
Notify(PSTR("\r\nNavigation Controller Enabled\r\n"));
|
||||||
#endif
|
#endif
|
||||||
PS3NavigationBTConnected = true;
|
PS3NavigationConnected = true;
|
||||||
} else if(remote_name[0] == 'M') { // First letter in Motion Controller ('M')
|
} else if(remote_name[0] == 'M') { // First letter in Motion Controller ('M')
|
||||||
moveSetBulb(Red);
|
moveSetBulb(Red);
|
||||||
timerBulbRumble = millis();
|
timerBulbRumble = millis();
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
Notify(PSTR("\r\nMotion Controller Enabled\r\n"));
|
Notify(PSTR("\r\nMotion Controller Enabled\r\n"));
|
||||||
#endif
|
#endif
|
||||||
PS3MoveBTConnected = true;
|
PS3MoveConnected = true;
|
||||||
}
|
}
|
||||||
l2cap_state = L2CAP_EV_L2CAP_DONE;
|
l2cap_state = L2CAP_EV_L2CAP_DONE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case L2CAP_EV_L2CAP_DONE:
|
case L2CAP_EV_L2CAP_DONE:
|
||||||
if (PS3MoveBTConnected)//The Bulb and rumble values, has to be send at aproximatly every 5th second for it to stay on
|
if (PS3MoveConnected)//The Bulb and rumble values, has to be send at aproximatly every 5th second for it to stay on
|
||||||
{
|
{
|
||||||
dtimeBulbRumble = millis() - timerBulbRumble;
|
if (millis() - timerBulbRumble > 4000)//Send at least every 4th second
|
||||||
if (dtimeBulbRumble > 4000)//Send at least every 4th second
|
|
||||||
{
|
{
|
||||||
HIDMove_Command(HIDMoveBuffer, HID_BUFFERSIZE);//The Bulb and rumble values, has to be written again and again, for it to stay turned on
|
HIDMove_Command(HIDMoveBuffer, HID_BUFFERSIZE);//The Bulb and rumble values, has to be written again and again, for it to stay turned on
|
||||||
timerBulbRumble = millis();
|
timerBulbRumble = millis();
|
||||||
|
@ -1217,11 +1219,13 @@ void PS3BT::L2CAP_task()
|
||||||
/************************************************************/
|
/************************************************************/
|
||||||
void PS3BT::readReport()
|
void PS3BT::readReport()
|
||||||
{
|
{
|
||||||
|
if (l2capinbuf == NULL)
|
||||||
|
return;
|
||||||
if(l2capinbuf[8] == 0xA1)//HID_THDR_DATA_INPUT
|
if(l2capinbuf[8] == 0xA1)//HID_THDR_DATA_INPUT
|
||||||
{
|
{
|
||||||
if(PS3BTConnected || PS3NavigationBTConnected)
|
if(PS3Connected || PS3NavigationConnected)
|
||||||
ButtonState = (uint32_t)(l2capinbuf[11] | ((uint16_t)l2capinbuf[12] << 8) | ((uint32_t)l2capinbuf[13] << 16));
|
ButtonState = (uint32_t)(l2capinbuf[11] | ((uint16_t)l2capinbuf[12] << 8) | ((uint32_t)l2capinbuf[13] << 16));
|
||||||
else if(PS3MoveBTConnected)
|
else if(PS3MoveConnected)
|
||||||
ButtonState = (uint32_t)(l2capinbuf[10] | ((uint16_t)l2capinbuf[11] << 8) | ((uint32_t)l2capinbuf[12] << 16));
|
ButtonState = (uint32_t)(l2capinbuf[10] | ((uint16_t)l2capinbuf[11] << 8) | ((uint32_t)l2capinbuf[12] << 16));
|
||||||
|
|
||||||
//Notify(PSTR("\r\nButtonState");
|
//Notify(PSTR("\r\nButtonState");
|
||||||
|
@ -1252,6 +1256,8 @@ void PS3BT::readReport()
|
||||||
|
|
||||||
void PS3BT::printReport() //Uncomment "#define PRINTREPORT" to print the report send by the PS3 Controllers
|
void PS3BT::printReport() //Uncomment "#define PRINTREPORT" to print the report send by the PS3 Controllers
|
||||||
{
|
{
|
||||||
|
if (l2capinbuf == NULL)
|
||||||
|
return;
|
||||||
if(l2capinbuf[8] == 0xA1)//HID_THDR_DATA_INPUT
|
if(l2capinbuf[8] == 0xA1)//HID_THDR_DATA_INPUT
|
||||||
{
|
{
|
||||||
for(uint8_t i = 10; i < 58;i++)
|
for(uint8_t i = 10; i < 58;i++)
|
||||||
|
@ -1506,10 +1512,8 @@ void PS3BT::HID_Command(uint8_t* data, uint16_t nbytes)
|
||||||
for (uint16_t i = 0; i < nbytes; i++)//L2CAP C-frame
|
for (uint16_t i = 0; i < nbytes; i++)//L2CAP C-frame
|
||||||
buf[8 + i] = data[i];
|
buf[8 + i] = data[i];
|
||||||
|
|
||||||
dtimeHID = millis() - timerHID;
|
if (millis() - timerHID <= 250)// Check if is has been more than 250ms since last command
|
||||||
|
delay((uint32_t)(250 - (millis() - timerHID)));//There have to be a delay between commands
|
||||||
if (dtimeHID <= 250)// Check if is has been more than 250ms since last command
|
|
||||||
delay((uint32_t)(250 - dtimeHID));//There have to be a delay between commands
|
|
||||||
|
|
||||||
pUsb->outTransfer(bAddress, epInfo[ BTD_DATAOUT_PIPE ].epAddr, (8 + nbytes), buf);
|
pUsb->outTransfer(bAddress, epInfo[ BTD_DATAOUT_PIPE ].epAddr, (8 + nbytes), buf);
|
||||||
|
|
||||||
|
@ -1602,10 +1606,8 @@ void PS3BT::HIDMove_Command(uint8_t* data,uint16_t nbytes)
|
||||||
for (uint16_t i = 0; i < nbytes; i++)//L2CAP C-frame
|
for (uint16_t i = 0; i < nbytes; i++)//L2CAP C-frame
|
||||||
buf[8 + i] = data[i];
|
buf[8 + i] = data[i];
|
||||||
|
|
||||||
dtimeHID = millis() - timerHID;
|
if (millis() - timerHID <= 250)// Check if is has been less than 200ms since last command
|
||||||
|
delay((uint32_t)(250 - (millis() - timerHID)));//There have to be a delay between commands
|
||||||
if (dtimeHID <= 250)// Check if is has been less than 200ms since last command
|
|
||||||
delay((uint32_t)(250 - dtimeHID));//There have to be a delay between commands
|
|
||||||
|
|
||||||
pUsb->outTransfer(bAddress, epInfo[ BTD_DATAOUT_PIPE ].epAddr, (8 + nbytes), buf);
|
pUsb->outTransfer(bAddress, epInfo[ BTD_DATAOUT_PIPE ].epAddr, (8 + nbytes), buf);
|
||||||
|
|
||||||
|
@ -1622,15 +1624,14 @@ void PS3BT::moveSetBulb(uint8_t r, uint8_t g, uint8_t b)//Use this to set the Co
|
||||||
}
|
}
|
||||||
void PS3BT::moveSetBulb(Colors color)//Use this to set the Color using the predefined colors in "enums.h"
|
void PS3BT::moveSetBulb(Colors color)//Use this to set the Color using the predefined colors in "enums.h"
|
||||||
{
|
{
|
||||||
//set the Bulb's values into the write buffer
|
moveSetBulb((uint8_t)(color >> 16),(uint8_t)(color >> 8),(uint8_t)(color));
|
||||||
HIDMoveBuffer[3] = (uint8_t)(color >> 16);
|
|
||||||
HIDMoveBuffer[4] = (uint8_t)(color >> 8);
|
|
||||||
HIDMoveBuffer[5] = (uint8_t)(color);
|
|
||||||
|
|
||||||
HIDMove_Command(HIDMoveBuffer, HID_BUFFERSIZE);
|
|
||||||
}
|
}
|
||||||
void PS3BT::moveSetRumble(uint8_t rumble)
|
void PS3BT::moveSetRumble(uint8_t rumble)
|
||||||
{
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
if(rumble < 64 && rumble != 0) // The rumble value has to at least 64, or approximately 25% (64/255*100)
|
||||||
|
Notify(PSTR("\r\nThe rumble value has to at least 64, or approximately 25%"));
|
||||||
|
#endif
|
||||||
//set the rumble value into the write buffer
|
//set the rumble value into the write buffer
|
||||||
HIDMoveBuffer[7] = rumble;
|
HIDMoveBuffer[7] = rumble;
|
||||||
|
|
||||||
|
|
8
PS3BT.h
8
PS3BT.h
|
@ -361,9 +361,9 @@ public:
|
||||||
void moveSetBulb(Colors color);//Use this to set the Color using the predefined colors in "enum Colors"
|
void moveSetBulb(Colors color);//Use this to set the Color using the predefined colors in "enum Colors"
|
||||||
void moveSetRumble(uint8_t rumble);
|
void moveSetRumble(uint8_t rumble);
|
||||||
|
|
||||||
bool PS3BTConnected;// Variable used to indicate if the normal playstation controller is successfully connected
|
bool PS3Connected;// Variable used to indicate if the normal playstation controller is successfully connected
|
||||||
bool PS3MoveBTConnected;// Variable used to indicate if the move controller is successfully connected
|
bool PS3MoveConnected;// Variable used to indicate if the move controller is successfully connected
|
||||||
bool PS3NavigationBTConnected;// Variable used to indicate if the navigation controller is successfully connected
|
bool PS3NavigationConnected;// Variable used to indicate if the navigation controller is successfully connected
|
||||||
bool buttonChanged;//Indicate if a button has been changed
|
bool buttonChanged;//Indicate if a button has been changed
|
||||||
bool buttonPressed;//Indicate if a button has been pressed
|
bool buttonPressed;//Indicate if a button has been pressed
|
||||||
bool buttonReleased;//Indicate if a button has been released
|
bool buttonReleased;//Indicate if a button has been released
|
||||||
|
@ -411,9 +411,7 @@ private:
|
||||||
uint32_t ButtonState;
|
uint32_t ButtonState;
|
||||||
uint32_t OldButtonState;
|
uint32_t OldButtonState;
|
||||||
uint32_t timerHID;// timer used see if there has to be a delay before a new HID command
|
uint32_t timerHID;// timer used see if there has to be a delay before a new HID command
|
||||||
uint32_t dtimeHID;// delta time since last HID command
|
|
||||||
uint32_t timerBulbRumble;// used to continuously set PS3 Move controller Bulb and rumble values
|
uint32_t timerBulbRumble;// used to continuously set PS3 Move controller Bulb and rumble values
|
||||||
uint32_t dtimeBulbRumble;// used to know how longs since last since the Bulb and rumble values was written
|
|
||||||
|
|
||||||
uint8_t my_bdaddr[6]; //Change to your dongles Bluetooth address in PS3BT.cpp
|
uint8_t my_bdaddr[6]; //Change to your dongles Bluetooth address in PS3BT.cpp
|
||||||
uint8_t hcibuf[BULK_MAXPKTSIZE];//General purpose buffer for hci data
|
uint8_t hcibuf[BULK_MAXPKTSIZE];//General purpose buffer for hci data
|
||||||
|
|
202
examples/PS3/PS3BT/PS3BT.ino
Normal file
202
examples/PS3/PS3BT/PS3BT.ino
Normal file
|
@ -0,0 +1,202 @@
|
||||||
|
/*
|
||||||
|
Example sketch for the PS3 Bluetooth 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 <PS3BT.h>
|
||||||
|
USB Usb;
|
||||||
|
/* You can create the instance of the class in two ways */
|
||||||
|
PS3BT PS3(&Usb); // This will just create the instance
|
||||||
|
//PS3BT 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 printTemperature;
|
||||||
|
boolean printAngle;
|
||||||
|
|
||||||
|
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 Bluetooth 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) {
|
||||||
|
if(PS3.getAnalogHat(LeftHatX) > 137 || PS3.getAnalogHat(LeftHatX) < 117) {
|
||||||
|
Serial.print(F("LeftHatX: "));
|
||||||
|
Serial.print(PS3.getAnalogHat(LeftHatX));
|
||||||
|
Serial.print("\t");
|
||||||
|
} if(PS3.getAnalogHat(LeftHatY) > 137 || PS3.getAnalogHat(LeftHatY) < 117) {
|
||||||
|
Serial.print(F("LeftHatY: "));
|
||||||
|
Serial.print(PS3.getAnalogHat(LeftHatY));
|
||||||
|
Serial.print("\t");
|
||||||
|
} if(PS3.getAnalogHat(RightHatX) > 137 || PS3.getAnalogHat(RightHatX) < 117) {
|
||||||
|
Serial.print(F("RightHatX: "));
|
||||||
|
Serial.print(PS3.getAnalogHat(RightHatX));
|
||||||
|
Serial.print("\t");
|
||||||
|
} if(PS3.getAnalogHat(RightHatY) > 137 || PS3.getAnalogHat(RightHatY) < 117) {
|
||||||
|
Serial.print(F("RightHatY: "));
|
||||||
|
Serial.print(PS3.getAnalogHat(RightHatY));
|
||||||
|
}
|
||||||
|
Serial.println("");
|
||||||
|
}
|
||||||
|
|
||||||
|
//Analog button values can be read from almost all buttons
|
||||||
|
if(PS3.getAnalogButton(L2_ANALOG) > 0 || PS3.getAnalogButton(R2_ANALOG) > 0) {
|
||||||
|
if(PS3.getAnalogButton(L2_ANALOG) > 0) {
|
||||||
|
Serial.print(F("L2: "));
|
||||||
|
Serial.print(PS3.getAnalogButton(L2_ANALOG));
|
||||||
|
Serial.print("\t");
|
||||||
|
} if(PS3.getAnalogButton(R2_ANALOG) > 0) {
|
||||||
|
Serial.print(F("R2: "));
|
||||||
|
Serial.print(PS3.getAnalogButton(R2_ANALOG));
|
||||||
|
}
|
||||||
|
Serial.println("");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(PS3.buttonPressed)
|
||||||
|
{
|
||||||
|
Serial.print(F("PS3 Controller"));
|
||||||
|
|
||||||
|
if(PS3.getButton(PS)) {
|
||||||
|
Serial.print(F(" - PS"));
|
||||||
|
PS3.disconnect();
|
||||||
|
} else {
|
||||||
|
if(PS3.getButton(TRIANGLE))
|
||||||
|
Serial.print(F(" - Traingle"));
|
||||||
|
if(PS3.getButton(CIRCLE))
|
||||||
|
Serial.print(F(" - Circle"));
|
||||||
|
if(PS3.getButton(CROSS))
|
||||||
|
Serial.print(F(" - Cross"));
|
||||||
|
if(PS3.getButton(SQUARE))
|
||||||
|
Serial.print(F(" - Square"));
|
||||||
|
|
||||||
|
if(PS3.getButton(UP)) {
|
||||||
|
Serial.print(F(" - Up"));
|
||||||
|
PS3.setAllOff();
|
||||||
|
PS3.setLedOn(LED4);
|
||||||
|
} if(PS3.getButton(RIGHT)) {
|
||||||
|
Serial.print(F(" - Right"));
|
||||||
|
PS3.setAllOff();
|
||||||
|
PS3.setLedOn(LED1);
|
||||||
|
} if(PS3.getButton(DOWN)) {
|
||||||
|
Serial.print(F(" - Down"));
|
||||||
|
PS3.setAllOff();
|
||||||
|
PS3.setLedOn(LED2);
|
||||||
|
} if(PS3.getButton(LEFT)) {
|
||||||
|
Serial.print(F(" - Left"));
|
||||||
|
PS3.setAllOff();
|
||||||
|
PS3.setLedOn(LED3);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(PS3.getButton(L1))
|
||||||
|
Serial.print(F(" - L1"));
|
||||||
|
//if(PS3.getButton(L2))
|
||||||
|
//Serial.print(F(" - L2"));
|
||||||
|
if(PS3.getButton(L3))
|
||||||
|
Serial.print(F(" - L3"));
|
||||||
|
if(PS3.getButton(R1))
|
||||||
|
Serial.print(F(" - R1"));
|
||||||
|
//if(PS3.getButton(R2))
|
||||||
|
//Serial.print(F(" - R2"));
|
||||||
|
if(PS3.getButton(R3))
|
||||||
|
Serial.print(F(" - R3"));
|
||||||
|
|
||||||
|
if(PS3.getButton(SELECT)) {
|
||||||
|
Serial.print(F(" - Select - "));
|
||||||
|
Serial.print(PS3.getStatusString());
|
||||||
|
} if(PS3.getButton(START)) {
|
||||||
|
Serial.print(F(" - Start"));
|
||||||
|
printAngle = !printAngle;
|
||||||
|
while(PS3.getButton(START))
|
||||||
|
Usb.Task();
|
||||||
|
}
|
||||||
|
Serial.println("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(printAngle) {
|
||||||
|
Serial.print(F("Pitch: "));
|
||||||
|
Serial.print(PS3.getAngle(Pitch));
|
||||||
|
Serial.print(F("\tRoll: "));
|
||||||
|
Serial.println(PS3.getAngle(Roll));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(PS3.PS3MoveConnected)
|
||||||
|
{
|
||||||
|
if(PS3.getAnalogButton(T_MOVE_ANALOG) > 0) {
|
||||||
|
Serial.print(F("T: "));
|
||||||
|
Serial.println(PS3.getAnalogButton(T_MOVE_ANALOG));
|
||||||
|
} if(PS3.buttonPressed) {
|
||||||
|
Serial.print(F("PS3 Move Controller"));
|
||||||
|
|
||||||
|
if(PS3.getButton(PS_MOVE)) {
|
||||||
|
Serial.print(F(" - PS"));
|
||||||
|
PS3.disconnect();
|
||||||
|
} else {
|
||||||
|
if(PS3.getButton(SELECT_MOVE)) {
|
||||||
|
Serial.print(F(" - Select"));
|
||||||
|
printTemperature = !printTemperature;
|
||||||
|
while(PS3.getButton(SELECT_MOVE))
|
||||||
|
Usb.Task();
|
||||||
|
} if(PS3.getButton(START_MOVE)) {
|
||||||
|
Serial.print(F(" - Start"));
|
||||||
|
printAngle = !printAngle;
|
||||||
|
while(PS3.getButton(START_MOVE))
|
||||||
|
Usb.Task();
|
||||||
|
} if(PS3.getButton(TRIANGLE_MOVE)) {
|
||||||
|
Serial.print(F(" - Triangle"));
|
||||||
|
PS3.moveSetBulb(Red);
|
||||||
|
} if(PS3.getButton(CIRCLE_MOVE)) {
|
||||||
|
Serial.print(F(" - Circle"));
|
||||||
|
PS3.moveSetBulb(Green);
|
||||||
|
} if(PS3.getButton(SQUARE_MOVE)) {
|
||||||
|
Serial.print(F(" - Square"));
|
||||||
|
PS3.moveSetBulb(Blue);
|
||||||
|
} if(PS3.getButton(CROSS_MOVE)) {
|
||||||
|
Serial.print(F(" - Cross"));
|
||||||
|
PS3.moveSetBulb(Yellow);
|
||||||
|
} if(PS3.getButton(MOVE_MOVE)) {
|
||||||
|
PS3.moveSetBulb(Off);
|
||||||
|
Serial.print(F(" - Move"));
|
||||||
|
Serial.print(F(" - "));
|
||||||
|
Serial.print(PS3.getStatusString());
|
||||||
|
}
|
||||||
|
//if(PS3.getButton(T))
|
||||||
|
//Serial.print(F(" - T"));
|
||||||
|
|
||||||
|
Serial.println("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(printAngle) {
|
||||||
|
Serial.print(F("Pitch: "));
|
||||||
|
Serial.print(PS3.getAngle(Pitch));
|
||||||
|
Serial.print(F("\tRoll: "));
|
||||||
|
Serial.println(PS3.getAngle(Roll));
|
||||||
|
}
|
||||||
|
else if(printTemperature) {
|
||||||
|
String templow;
|
||||||
|
String temphigh;
|
||||||
|
String input = String(PS3.getSensor(tempMove));
|
||||||
|
|
||||||
|
if (input.length() > 3) {
|
||||||
|
temphigh = input.substring(0, 2);
|
||||||
|
templow = input.substring(2);
|
||||||
|
} else {
|
||||||
|
temphigh = input.substring(0, 1);
|
||||||
|
templow = input.substring(1);
|
||||||
|
}
|
||||||
|
Serial.print(F("Temperature: "));
|
||||||
|
Serial.print(temphigh);
|
||||||
|
Serial.print(F("."));
|
||||||
|
Serial.println(templow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
delay(1);
|
||||||
|
}
|
|
@ -1,202 +0,0 @@
|
||||||
/*
|
|
||||||
Example sketch for the PS3 Bluetooth 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 <PS3BT.h>
|
|
||||||
USB Usb;
|
|
||||||
/* You can create the instance of the class in two ways */
|
|
||||||
PS3BT BT(&Usb); // This will just create the instance
|
|
||||||
//PS3BT BT(&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 printTemperature;
|
|
||||||
boolean printAngle;
|
|
||||||
|
|
||||||
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 Bluetooth Library Started"));
|
|
||||||
}
|
|
||||||
void loop()
|
|
||||||
{
|
|
||||||
Usb.Task();
|
|
||||||
|
|
||||||
if(BT.PS3BTConnected || BT.PS3NavigationBTConnected) {
|
|
||||||
if(BT.getAnalogHat(LeftHatX) > 137 || BT.getAnalogHat(LeftHatX) < 117 || BT.getAnalogHat(LeftHatY) > 137 || BT.getAnalogHat(LeftHatY) < 117 || BT.getAnalogHat(RightHatX) > 137 || BT.getAnalogHat(RightHatX) < 117 || BT.getAnalogHat(RightHatY) > 137 || BT.getAnalogHat(RightHatY) < 117) {
|
|
||||||
if(BT.getAnalogHat(LeftHatX) > 137 || BT.getAnalogHat(LeftHatX) < 117) {
|
|
||||||
Serial.print(F("LeftHatX: "));
|
|
||||||
Serial.print(BT.getAnalogHat(LeftHatX));
|
|
||||||
Serial.print("\t");
|
|
||||||
} if(BT.getAnalogHat(LeftHatY) > 137 || BT.getAnalogHat(LeftHatY) < 117) {
|
|
||||||
Serial.print(F("LeftHatY: "));
|
|
||||||
Serial.print(BT.getAnalogHat(LeftHatY));
|
|
||||||
Serial.print("\t");
|
|
||||||
} if(BT.getAnalogHat(RightHatX) > 137 || BT.getAnalogHat(RightHatX) < 117) {
|
|
||||||
Serial.print(F("RightHatX: "));
|
|
||||||
Serial.print(BT.getAnalogHat(RightHatX));
|
|
||||||
Serial.print("\t");
|
|
||||||
} if(BT.getAnalogHat(RightHatY) > 137 || BT.getAnalogHat(RightHatY) < 117) {
|
|
||||||
Serial.print(F("RightHatY: "));
|
|
||||||
Serial.print(BT.getAnalogHat(RightHatY));
|
|
||||||
}
|
|
||||||
Serial.println("");
|
|
||||||
}
|
|
||||||
|
|
||||||
//Analog button values can be read from almost all buttons
|
|
||||||
if(BT.getAnalogButton(L2_ANALOG) > 0 || BT.getAnalogButton(R2_ANALOG) > 0) {
|
|
||||||
if(BT.getAnalogButton(L2_ANALOG) > 0) {
|
|
||||||
Serial.print(F("L2: "));
|
|
||||||
Serial.print(BT.getAnalogButton(L2_ANALOG));
|
|
||||||
Serial.print("\t");
|
|
||||||
} if(BT.getAnalogButton(R2_ANALOG) > 0) {
|
|
||||||
Serial.print(F("R2: "));
|
|
||||||
Serial.print(BT.getAnalogButton(R2_ANALOG));
|
|
||||||
}
|
|
||||||
Serial.println("");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(BT.buttonPressed)
|
|
||||||
{
|
|
||||||
Serial.print(F("PS3 Controller"));
|
|
||||||
|
|
||||||
if(BT.getButton(PS)) {
|
|
||||||
Serial.print(F(" - PS"));
|
|
||||||
BT.disconnect();
|
|
||||||
} else {
|
|
||||||
if(BT.getButton(TRIANGLE))
|
|
||||||
Serial.print(F(" - Traingle"));
|
|
||||||
if(BT.getButton(CIRCLE))
|
|
||||||
Serial.print(F(" - Circle"));
|
|
||||||
if(BT.getButton(CROSS))
|
|
||||||
Serial.print(F(" - Cross"));
|
|
||||||
if(BT.getButton(SQUARE))
|
|
||||||
Serial.print(F(" - Square"));
|
|
||||||
|
|
||||||
if(BT.getButton(UP)) {
|
|
||||||
Serial.print(F(" - Up"));
|
|
||||||
BT.setAllOff();
|
|
||||||
BT.setLedOn(LED4);
|
|
||||||
} if(BT.getButton(RIGHT)) {
|
|
||||||
Serial.print(F(" - Right"));
|
|
||||||
BT.setAllOff();
|
|
||||||
BT.setLedOn(LED1);
|
|
||||||
} if(BT.getButton(DOWN)) {
|
|
||||||
Serial.print(F(" - Down"));
|
|
||||||
BT.setAllOff();
|
|
||||||
BT.setLedOn(LED2);
|
|
||||||
} if(BT.getButton(LEFT)) {
|
|
||||||
Serial.print(F(" - Left"));
|
|
||||||
BT.setAllOff();
|
|
||||||
BT.setLedOn(LED3);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(BT.getButton(L1))
|
|
||||||
Serial.print(F(" - L1"));
|
|
||||||
//if(BT.getButton(L2))
|
|
||||||
//Serial.print(F(" - L2"));
|
|
||||||
if(BT.getButton(L3))
|
|
||||||
Serial.print(F(" - L3"));
|
|
||||||
if(BT.getButton(R1))
|
|
||||||
Serial.print(F(" - R1"));
|
|
||||||
//if(BT.getButton(R2))
|
|
||||||
//Serial.print(F(" - R2"));
|
|
||||||
if(BT.getButton(R3))
|
|
||||||
Serial.print(F(" - R3"));
|
|
||||||
|
|
||||||
if(BT.getButton(SELECT)) {
|
|
||||||
Serial.print(F(" - Select - "));
|
|
||||||
Serial.print(BT.getStatusString());
|
|
||||||
} if(BT.getButton(START)) {
|
|
||||||
Serial.print(F(" - Start"));
|
|
||||||
printAngle = !printAngle;
|
|
||||||
while(BT.getButton(START))
|
|
||||||
Usb.Task();
|
|
||||||
}
|
|
||||||
Serial.println("");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(printAngle) {
|
|
||||||
Serial.print(F("Pitch: "));
|
|
||||||
Serial.print(BT.getAngle(Pitch));
|
|
||||||
Serial.print(F("\tRoll: "));
|
|
||||||
Serial.println(BT.getAngle(Roll));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if(BT.PS3MoveBTConnected)
|
|
||||||
{
|
|
||||||
if(BT.getAnalogButton(T_MOVE_ANALOG) > 0) {
|
|
||||||
Serial.print(F("T: "));
|
|
||||||
Serial.println(BT.getAnalogButton(T_MOVE_ANALOG));
|
|
||||||
} if(BT.buttonPressed) {
|
|
||||||
Serial.print(F("PS3 Move Controller"));
|
|
||||||
|
|
||||||
if(BT.getButton(PS_MOVE)) {
|
|
||||||
Serial.print(F(" - PS"));
|
|
||||||
BT.disconnect();
|
|
||||||
} else {
|
|
||||||
if(BT.getButton(SELECT_MOVE)) {
|
|
||||||
Serial.print(F(" - Select"));
|
|
||||||
printTemperature = !printTemperature;
|
|
||||||
while(BT.getButton(SELECT_MOVE))
|
|
||||||
Usb.Task();
|
|
||||||
} if(BT.getButton(START_MOVE)) {
|
|
||||||
Serial.print(F(" - Start"));
|
|
||||||
printAngle = !printAngle;
|
|
||||||
while(BT.getButton(START_MOVE))
|
|
||||||
Usb.Task();
|
|
||||||
} if(BT.getButton(TRIANGLE_MOVE)) {
|
|
||||||
Serial.print(F(" - Triangle"));
|
|
||||||
BT.moveSetBulb(Red);
|
|
||||||
} if(BT.getButton(CIRCLE_MOVE)) {
|
|
||||||
Serial.print(F(" - Circle"));
|
|
||||||
BT.moveSetBulb(Green);
|
|
||||||
} if(BT.getButton(SQUARE_MOVE)) {
|
|
||||||
Serial.print(F(" - Square"));
|
|
||||||
BT.moveSetBulb(Blue);
|
|
||||||
} if(BT.getButton(CROSS_MOVE)) {
|
|
||||||
Serial.print(F(" - Cross"));
|
|
||||||
BT.moveSetBulb(Yellow);
|
|
||||||
} if(BT.getButton(MOVE_MOVE)) {
|
|
||||||
BT.moveSetBulb(Off);
|
|
||||||
Serial.print(F(" - Move"));
|
|
||||||
Serial.print(F(" - "));
|
|
||||||
Serial.print(BT.getStatusString());
|
|
||||||
}
|
|
||||||
//if(BT.getButton(T))
|
|
||||||
//Serial.print(F(" - T"));
|
|
||||||
|
|
||||||
Serial.println("");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(printAngle) {
|
|
||||||
Serial.print(F("Pitch: "));
|
|
||||||
Serial.print(BT.getAngle(Pitch));
|
|
||||||
Serial.print(F("\tRoll: "));
|
|
||||||
Serial.println(BT.getAngle(Roll));
|
|
||||||
}
|
|
||||||
else if(printTemperature) {
|
|
||||||
String templow;
|
|
||||||
String temphigh;
|
|
||||||
String input = String(BT.getSensor(tempMove));
|
|
||||||
|
|
||||||
if (input.length() > 3) {
|
|
||||||
temphigh = input.substring(0, 2);
|
|
||||||
templow = input.substring(2);
|
|
||||||
} else {
|
|
||||||
temphigh = input.substring(0, 1);
|
|
||||||
templow = input.substring(1);
|
|
||||||
}
|
|
||||||
Serial.print(F("Temperature: "));
|
|
||||||
Serial.print(temphigh);
|
|
||||||
Serial.print(F("."));
|
|
||||||
Serial.println(templow);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
delay(1);
|
|
||||||
}
|
|
25
keywords.txt
25
keywords.txt
|
@ -1,16 +1,17 @@
|
||||||
################################################
|
####################################################
|
||||||
# Syntax Coloring Map For PS3 Bluetooth Library
|
# Syntax Coloring Map For PS3 Bluetooth/USB Library
|
||||||
################################################
|
####################################################
|
||||||
|
|
||||||
################################################
|
####################################################
|
||||||
# Datatypes (KEYWORD1)
|
# Datatypes (KEYWORD1)
|
||||||
################################################
|
####################################################
|
||||||
|
|
||||||
PS3BT KEYWORD1
|
PS3BT KEYWORD1
|
||||||
|
PS3USB KEYWORD1
|
||||||
|
|
||||||
################################################
|
####################################################
|
||||||
# Methods and Functions (KEYWORD2)
|
# Methods and Functions (KEYWORD2)
|
||||||
################################################
|
####################################################
|
||||||
setBdaddr KEYWORD2
|
setBdaddr KEYWORD2
|
||||||
setMoveBdaddr KEYWORD2
|
setMoveBdaddr KEYWORD2
|
||||||
|
|
||||||
|
@ -32,18 +33,18 @@ setLedToggle KEYWORD2
|
||||||
moveSetBulb KEYWORD2
|
moveSetBulb KEYWORD2
|
||||||
moveSetRumble KEYWORD2
|
moveSetRumble KEYWORD2
|
||||||
|
|
||||||
PS3BTConnected KEYWORD2
|
PS3Connected KEYWORD2
|
||||||
PS3MoveBTConnected KEYWORD2
|
PS3MoveConnected KEYWORD2
|
||||||
PS3NavigationBTConnected KEYWORD2
|
PS3NavigationConnected KEYWORD2
|
||||||
buttonChanged KEYWORD2
|
buttonChanged KEYWORD2
|
||||||
buttonPressed KEYWORD2
|
buttonPressed KEYWORD2
|
||||||
buttonReleased KEYWORD2
|
buttonReleased KEYWORD2
|
||||||
|
|
||||||
isWatingForConnection KEYWORD2
|
isWatingForConnection KEYWORD2
|
||||||
|
|
||||||
################################################
|
####################################################
|
||||||
# Constants and enums (LITERAL1)
|
# Constants and enums (LITERAL1)
|
||||||
################################################
|
####################################################
|
||||||
LED1 LITERAL1
|
LED1 LITERAL1
|
||||||
LED2 LITERAL1
|
LED2 LITERAL1
|
||||||
LED3 LITERAL1
|
LED3 LITERAL1
|
||||||
|
|
Loading…
Reference in a new issue