PS3 Bluetooth For Arduino Uno or Arduino Pro mini

main.cpp

Committer:
piroro4560
Date:
2022-06-25
Revision:
0:f678509106d4

File content as of revision 0:f678509106d4:

/*
 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
 ハセオムニ:00:02:5B:00:A5:A5, 0x00, 0x02, 0x5B, 0x00, 0xA5, 0xA5
 一番ドングル:00:1B:DC:F4:41:E8, 0x00, 0x1B, 0xDC, 0xF4, 0x41, 0xE
 二番ドングル:00:1B:DC:F4:43:A0, 0x00, 0x1B, 0xDC, 0xF4, 0x43, 0xA0
 */

#include <PS3BT.h>
#include <usbhub.h>

// Satisfy the IDE, which needs to see the include statment in the ino too.
#ifdef dobogusinclude
#include <spi4teensy3.h>
#endif
#include <SPI.h>

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 class in two ways */
PS3BT PS3(&Btd); // This will just create the instance
// PS3BT PS3(&Btd, 0x00, 0x1B, 0xDC, 0xF4, 0x41, 0xE8); // This will also store the bluetooth address - this can be obtained from the dongle when running the sketch

uint8_t header0 = 0xFF;
uint8_t header1 = 0xEE;
bool button[12] = {};
uint8_t button0 = 0;
uint8_t button1 = 0;
uint8_t trigger[2] = {};
uint8_t stick[4] = {};
uint8_t count_timeout=0;

bool printTemperature, printAngle;

void setup() {
  Serial.begin(115200);
#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 PS3BT"));
    while (1); //halt
  }
  Serial.print(F("\rNo.1 Test005 send all data nodelay\n"));
}
void loop() {
  Usb.Task();

  if (PS3.PS3Connected || PS3.PS3NavigationConnected) {
    for (int i = 0; i < 8; i++) {
      button[i] = PS3.getButtonPress((ButtonEnum)(i));
      button1 = button1 << 1;
      button1 += (button[i]);
    }
    for (int i = 8; i < 12; i++) {
      button[i] = PS3.getButtonPress((ButtonEnum)(i+2));
      button0 = button0 << 1;
      button0 += button[i];
    }
    trigger[0] = PS3.getAnalogButton(L2);
    trigger[1] = PS3.getAnalogButton(R2);
    stick[0] = PS3.getAnalogHat(LeftHatX);
    stick[1] = PS3.getAnalogHat(LeftHatY);
    stick[2] = PS3.getAnalogHat(RightHatX);
    stick[3] = PS3.getAnalogHat(RightHatY);
    
#if 0
    Serial.print(header0);
    Serial.print(header1);
    Serial.print(button0);
    Serial.print(button1);
    Serial.print(trigger[0]);
    Serial.print(trigger[1]);
    Serial.print(stick[0]);
    Serial.print(stick[1]);
    Serial.print(stick[2]);
    Serial.print(stick[3]);
    Serial.print(count_timeout);
    Serial.println();
#else
    Serial.write(header0);
    Serial.write(header1);
    Serial.write(button0);
    Serial.write(button1);
    Serial.write(trigger[0]);
    Serial.write(trigger[1]);
    Serial.write(stick[0]);
    Serial.write(stick[1]);
    Serial.write(stick[2]);
    Serial.write(stick[3]);
    Serial.write(count_timeout);
#endif

    count_timeout++;
    if (count_timeout > 255) count_timeout=0;
  }
}