/* Example sketch for the PS4 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 #include // Satisfy IDE, which only needs to see the include statment in the ino. #ifdef dobogusinclude #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 instance of the BTHID class in two ways */ // This will start an inquiry and then pair with the PS4 controller - you only have to do this once BTHID bthid(&Btd, PAIR); // After that you can simply create the instance like so and then press the PS button on the device //BTHID bthid(&Btd); PS4BT PS4(&bthid); // You should not modify this instance void setup() { Serial.begin(115200); while (!Serial); // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection if (Usb.Init() == -1) { Serial.print(F("\r\nOSC did not start")); while (1); // Halt } Serial.print(F("\r\nPS4 Bluetooth Library Started")); } void loop() { Usb.Task(); if (PS4.connected()) { if (PS4.getAnalogHat(LeftHatX) > 137 || PS4.getAnalogHat(LeftHatX) < 117 || PS4.getAnalogHat(LeftHatY) > 137 || PS4.getAnalogHat(LeftHatY) < 117 || PS4.getAnalogHat(RightHatX) > 137 || PS4.getAnalogHat(RightHatX) < 117 || PS4.getAnalogHat(RightHatY) > 137 || PS4.getAnalogHat(RightHatY) < 117) { Serial.print(F("\r\nLeftHatX: ")); Serial.print(PS4.getAnalogHat(LeftHatX)); Serial.print(F("\tLeftHatY: ")); Serial.print(PS4.getAnalogHat(LeftHatY)); Serial.print(F("\tRightHatX: ")); Serial.print(PS4.getAnalogHat(RightHatX)); Serial.print(F("\tRightHatY: ")); Serial.print(PS4.getAnalogHat(RightHatY)); } if (PS4.getAnalogButton(L2) || PS4.getAnalogButton(R2)) { // These are the only analog buttons on the PS4 controller Serial.print(F("\r\nL2: ")); Serial.print(PS4.getAnalogButton(L2)); Serial.print(F("\tR2: ")); Serial.print(PS4.getAnalogButton(R2)); } if (PS4.getButtonClick(PS)) { Serial.print(F("\r\nPS")); PS4.disconnect(); } else { if (PS4.getButtonClick(TRIANGLE)) Serial.print(F("\r\nTraingle")); if (PS4.getButtonClick(CIRCLE)) Serial.print(F("\r\nCircle")); if (PS4.getButtonClick(CROSS)) Serial.print(F("\r\nCross")); if (PS4.getButtonClick(SQUARE)) Serial.print(F("\r\nSquare")); if (PS4.getButtonClick(UP)) Serial.print(F("\r\nUp")); if (PS4.getButtonClick(RIGHT)) Serial.print(F("\r\nRight")); if (PS4.getButtonClick(DOWN)) Serial.print(F("\r\nDown")); if (PS4.getButtonClick(LEFT)) Serial.print(F("\r\nLeft")); if (PS4.getButtonClick(L1)) Serial.print(F("\r\nL1")); if (PS4.getButtonClick(L3)) Serial.print(F("\r\nL3")); if (PS4.getButtonClick(R1)) Serial.print(F("\r\nR1")); if (PS4.getButtonClick(R3)) Serial.print(F("\r\nR3")); if (PS4.getButtonClick(SHARE)) Serial.print(F("\r\nShare")); if (PS4.getButtonClick(OPTIONS)) Serial.print(F("\r\nOptions")); if (PS4.getButtonClick(KEYPAD)) Serial.print(F("\r\nKeypad")); } } }