X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=tmk_core%2Fprotocol%2Fusb_hid%2FUSB_Host_Shield_2.0%2Fexamples%2FBluetooth%2FPS3SPP%2FPS3SPP.ino;fp=tmk_core%2Fprotocol%2Fusb_hid%2FUSB_Host_Shield_2.0%2Fexamples%2FBluetooth%2FPS3SPP%2FPS3SPP.ino;h=8f234cbd8d36a762a27d81bf22bbe471ea1096fe;hb=f1f2066657f4a0998adc016c95d7e541b436e09f;hp=0000000000000000000000000000000000000000;hpb=1c73e574f109a17566db99e399bdf86007488d2a;p=qmk_firmware.git diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/PS3SPP/PS3SPP.ino b/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/PS3SPP/PS3SPP.ino new file mode 100644 index 000000000..8f234cbd8 --- /dev/null +++ b/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/PS3SPP/PS3SPP.ino @@ -0,0 +1,162 @@ +/* + Example sketch for the 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 + + This example show how one can combine all the difference Bluetooth services in one single code. + Note: + You will need a Arduino Mega 1280/2560 to run this sketch, + as a normal Arduino (Uno, Duemilanove etc.) doesn't have enough SRAM and FLASH + */ + +#include +#include +#include + +// Satisfy the IDE, which needs to see the include statment in the ino too. +#ifdef dobogusinclude +#include +#include +#endif + +USB Usb; +//USBHub Hub1(&Usb); // Some dongles have a hub inside + +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 */ +SPP SerialBT(&Btd); // This will set the name to the defaults: "Arduino" and the pin to "0000" +//SPP SerialBTBT(&Btd,"Lauszus's Arduino","0000"); // You can also set the name and pin like so +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 + +bool firstMessage = true; +String output = ""; // We will store the data in this string + +void setup() { + Serial.begin(115200); // This wil lprint the debugging from the libraries +#if !defined(__MIPSEL__) + while (!Serial); // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection +#endif + if (Usb.Init() == -1) { + Serial.print(F("\r\nOSC did not start")); + while (1); //halt + } + Serial.print(F("\r\nBluetooth Library Started")); + output.reserve(200); // Reserve 200 bytes for the output string +} +void loop() { + Usb.Task(); // The SPP data is actually not send until this is called, one could call SerialBT.send() directly as well + + if (SerialBT.connected) { + if (firstMessage) { + firstMessage = false; + SerialBT.println(F("Hello from Arduino")); // Send welcome message + } + if (Serial.available()) + SerialBT.write(Serial.read()); + if (SerialBT.available()) + Serial.write(SerialBT.read()); + } + else + firstMessage = true; + + if (PS3.PS3Connected || PS3.PS3NavigationConnected) { + output = ""; // Reset output string + 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) { + output += "LeftHatX: "; + output += PS3.getAnalogHat(LeftHatX); + output += "\tLeftHatY: "; + output += PS3.getAnalogHat(LeftHatY); + if (PS3.PS3Connected) { // The Navigation controller only have one joystick + output += "\tRightHatX: "; + output += PS3.getAnalogHat(RightHatX); + output += "\tRightHatY: "; + output += PS3.getAnalogHat(RightHatY); + } + } + //Analog button values can be read from almost all buttons + if (PS3.getAnalogButton(L2) || PS3.getAnalogButton(R2)) { + if (output != "") + output += "\r\n"; + output += "L2: "; + output += PS3.getAnalogButton(L2); + if (PS3.PS3Connected) { + output += "\tR2: "; + output += PS3.getAnalogButton(R2); + } + } + if (output != "") { + Serial.println(output); + if (SerialBT.connected) + SerialBT.println(output); + output = ""; // Reset output string + } + 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"; + + if (PS3.getButtonClick(UP)) { + output += " - Up"; + if (PS3.PS3Connected) { + PS3.setLedOff(); + PS3.setLedOn(LED4); + } + } + if (PS3.getButtonClick(RIGHT)) { + output += " - Right"; + if (PS3.PS3Connected) { + PS3.setLedOff(); + PS3.setLedOn(LED1); + } + } + if (PS3.getButtonClick(DOWN)) { + output += " - Down"; + if (PS3.PS3Connected) { + PS3.setLedOff(); + PS3.setLedOn(LED2); + } + } + if (PS3.getButtonClick(LEFT)) { + output += " - Left"; + if (PS3.PS3Connected) { + PS3.setLedOff(); + PS3.setLedOn(LED3); + } + } + + if (PS3.getButtonClick(L1)) + output += " - L1"; + if (PS3.getButtonClick(L3)) + output += " - L3"; + if (PS3.getButtonClick(R1)) + output += " - R1"; + if (PS3.getButtonClick(R3)) + output += " - R3"; + + if (PS3.getButtonClick(SELECT)) { + output += " - Select"; + } + if (PS3.getButtonClick(START)) + output += " - Start"; + + if (output != "") { + String string = "PS3 Controller" + output; + Serial.println(string); + if (SerialBT.connected) + SerialBT.println(string); + } + } + delay(10); + } +}