diff --git a/examples/Bluetooth/PS3Multi/PS3Multi.ino b/examples/Bluetooth/PS3Multi/PS3Multi.ino index 6bcdcdf5..6c4805bb 100644 --- a/examples/Bluetooth/PS3Multi/PS3Multi.ino +++ b/examples/Bluetooth/PS3Multi/PS3Multi.ino @@ -8,13 +8,16 @@ #include USB Usb; BTD Btd(&Usb); // You have to create the Bluetooth Dongle instance like so -PS3BT* PS3[2]; // We will use this pointer to store the two instance, you can easily make it larger if you like, but it will use a lot of RAM! +PS3BT *PS3[2]; // We will use this pointer to store the two instance, you can easily make it larger if you like, but it will use a lot of RAM! const uint8_t length = sizeof(PS3)/sizeof(PS3[0]); // Get the lenght of the array boolean printAngle[length]; +boolean oldControllerState[length]; void setup() { - for(uint8_t i=0;iattachOnInit(onInit); // onInit() is called upon a new connection - you can call the function whatever you like + } Serial.begin(115200); if (Usb.Init() == -1) { @@ -31,28 +34,29 @@ void loop() { if(PS3[i]->getAnalogHat(LeftHatX) > 137 || PS3[i]->getAnalogHat(LeftHatX) < 117 || PS3[i]->getAnalogHat(LeftHatY) > 137 || PS3[i]->getAnalogHat(LeftHatY) < 117 || PS3[i]->getAnalogHat(RightHatX) > 137 || PS3[i]->getAnalogHat(RightHatX) < 117 || PS3[i]->getAnalogHat(RightHatY) > 137 || PS3[i]->getAnalogHat(RightHatY) < 117) { Serial.print(F("\r\nLeftHatX: ")); Serial.print(PS3[i]->getAnalogHat(LeftHatX)); - Serial.print(F("\tLeftHatY: ")); + Serial.print(F("\tLeftHatY: ")); Serial.print(PS3[i]->getAnalogHat(LeftHatY)); if(!PS3[i]->PS3NavigationConnected) { // The Navigation controller only have one joystick - Serial.print(F("\tRightHatX: ")); + Serial.print(F("\tRightHatX: ")); Serial.print(PS3[i]->getAnalogHat(RightHatX)); - Serial.print(F("\tRightHatY: ")); - Serial.print(PS3[i]->getAnalogHat(RightHatY)); + Serial.print(F("\tRightHatY: ")); + Serial.print(PS3[i]->getAnalogHat(RightHatY)); } } //Analog button values can be read from almost all buttons if(PS3[i]->getAnalogButton(L2) || PS3[i]->getAnalogButton(R2)) { - Serial.print(F("\r\nL2: ")); + Serial.print(F("\r\nL2: ")); Serial.print(PS3[i]->getAnalogButton(L2)); if(!PS3[i]->PS3NavigationConnected) { - Serial.print(F("\tR2: ")); + Serial.print(F("\tR2: ")); Serial.print(PS3[i]->getAnalogButton(R2)); } } if(PS3[i]->getButtonClick(PS)) { Serial.print(F("\r\nPS")); PS3[i]->disconnect(); - } + oldControllerState[i] = false; // Reset value + } else { if(PS3[i]->getButtonClick(TRIANGLE)) Serial.print(F("\r\nTraingle")); @@ -64,56 +68,56 @@ void loop() { Serial.print(F("\r\nSquare")); if(PS3[i]->getButtonClick(UP)) { - Serial.print(F("\r\nUp")); + Serial.print(F("\r\nUp")); if(PS3[i]->PS3Connected) { PS3[i]->setAllOff(); PS3[i]->setLedOn(LED4); } - } + } if(PS3[i]->getButtonClick(RIGHT)) { Serial.print(F("\r\nRight")); if(PS3[i]->PS3Connected) { PS3[i]->setAllOff(); - PS3[i]->setLedOn(LED1); - } - } + PS3[i]->setLedOn(LED1); + } + } if(PS3[i]->getButtonClick(DOWN)) { Serial.print(F("\r\nDown")); if(PS3[i]->PS3Connected) { PS3[i]->setAllOff(); - PS3[i]->setLedOn(LED2); + PS3[i]->setLedOn(LED2); } - } - if(PS3[i]->getButtonClick(LEFT)) { - Serial.print(F("\r\nLeft")); + } + if(PS3[i]->getButtonClick(LEFT)) { + Serial.print(F("\r\nLeft")); if(PS3[i]->PS3Connected) { - PS3[i]->setAllOff(); - PS3[i]->setLedOn(LED3); - } + PS3[i]->setAllOff(); + PS3[i]->setLedOn(LED3); + } } if(PS3[i]->getButtonClick(L1)) - Serial.print(F("\r\nL1")); + Serial.print(F("\r\nL1")); if(PS3[i]->getButtonClick(L3)) - Serial.print(F("\r\nL3")); + Serial.print(F("\r\nL3")); if(PS3[i]->getButtonClick(R1)) - Serial.print(F("\r\nR1")); + Serial.print(F("\r\nR1")); if(PS3[i]->getButtonClick(R3)) Serial.print(F("\r\nR3")); if(PS3[i]->getButtonClick(SELECT)) { - Serial.print(F("\r\nSelect - ")); - Serial.print(PS3[i]->getStatusString()); - } + Serial.print(F("\r\nSelect - ")); + Serial.print(PS3[i]->getStatusString()); + } if(PS3[i]->getButtonClick(START)) { - Serial.print(F("\r\nStart")); + Serial.print(F("\r\nStart")); printAngle[i] = !printAngle[i]; - } + } } if(printAngle[i]) { - Serial.print(F("\r\nPitch: ")); - Serial.print(PS3[i]->getAngle(Pitch)); - Serial.print(F("\tRoll: ")); + Serial.print(F("\r\nPitch: ")); + Serial.print(PS3[i]->getAngle(Pitch)); + Serial.print(F("\tRoll: ")); Serial.print(PS3[i]->getAngle(Roll)); } } @@ -121,3 +125,12 @@ void loop() { //else if(PS3[i]->PS3MoveConnected) { } } + +void onInit() { + for (uint8_t i=0;iPS3Connected || PS3[i]->PS3NavigationConnected) && !oldControllerState[i]) { + oldControllerState[i] = true; // Used to check which is the new controller + PS3[i]->setLedOn((LED)i); // Cast directly to LED enum - see: "controllerEnums.h" + } + } +} diff --git a/examples/Bluetooth/WiiMulti/WiiMulti.ino b/examples/Bluetooth/WiiMulti/WiiMulti.ino index c0705d6e..c9bac283 100644 --- a/examples/Bluetooth/WiiMulti/WiiMulti.ino +++ b/examples/Bluetooth/WiiMulti/WiiMulti.ino @@ -8,14 +8,17 @@ #include USB Usb; BTD Btd(&Usb); // You have to create the Bluetooth Dongle instance like so -WII* Wii[2]; // We will use this pointer to store the two instance, you can easily make it larger if you like, but it will use a lot of RAM! +WII *Wii[2]; // We will use this pointer to store the two instance, you can easily make it larger if you like, but it will use a lot of RAM! const uint8_t length = sizeof(Wii)/sizeof(Wii[0]); // Get the lenght of the array -bool printAngle[length]; +boolean printAngle[length]; +boolean oldControllerState[length]; void setup() { - for(uint8_t i=0;iattachOnInit(onInit); // onInit() is called upon a new connection - you can call the function whatever you like + } + Serial.begin(115200); if (Usb.Init() == -1) { Serial.print(F("\r\nOSC did not start")); @@ -31,6 +34,7 @@ void loop() { if(Wii[i]->getButtonClick(HOME)) { // You can use getButtonPress to see if the button is held down Serial.print(F("\r\nHOME")); Wii[i]->disconnect(); + oldControllerState[i] = false; // Reset value delay(1000); // This delay is needed for some Wiimotes, so it doesn't try to reconnect right away } else { @@ -105,3 +109,12 @@ void loop() { } } } + +void onInit() { + for (uint8_t i=0;iwiimoteConnected && !oldControllerState[i]) { + oldControllerState[i] = true; // Used to check which is the new controller + Wii[i]->setLedOn((LED)i); // Cast directly to LED enum - see: "controllerEnums.h" + } + } +}