Library&Source / PS3_to_Arduino

Dependents:   throw_1

Committer:
masaaki_nr
Date:
Fri Nov 08 10:11:32 2019 +0000
Revision:
3:378f57911f5d
Parent:
2:422d5d7602cc
add to disconect

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kitta5687 1:b7d47b40707d 1 #include <PS3BT.h>
kitta5687 1:b7d47b40707d 2 #include <usbhub.h>
masaaki_nr 2:422d5d7602cc 3
kitta5687 1:b7d47b40707d 4 #ifdef dobogusinclude
kitta5687 1:b7d47b40707d 5 #include <spi4teensy3.h>
kitta5687 1:b7d47b40707d 6 #endif
kitta5687 1:b7d47b40707d 7 #include <SPI.h>
masaaki_nr 2:422d5d7602cc 8
kitta5687 1:b7d47b40707d 9 USB Usb;
kitta5687 1:b7d47b40707d 10 BTD Btd(&Usb); // You have to create the Bluetooth Dongle instance like so
kitta5687 1:b7d47b40707d 11 PS3BT PS3(&Btd); // This will just create the instance
kitta5687 1:b7d47b40707d 12 //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
masaaki_nr 2:422d5d7602cc 13
kitta5687 1:b7d47b40707d 14 unsigned long botton_val = 0;
masaaki_nr 2:422d5d7602cc 15
kitta5687 1:b7d47b40707d 16 int sthick[6] = { 0, 0, 0, 0, 0, 0 };//アナログ値格納用:左スティック,右スティック,L2,R2
kitta5687 1:b7d47b40707d 17 int check = 0;
kitta5687 1:b7d47b40707d 18 uint8_t str[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };//送信データ格納用
masaaki_nr 2:422d5d7602cc 19
kitta5687 1:b7d47b40707d 20 void setup() {
kitta5687 1:b7d47b40707d 21 Serial.begin(57600);
kitta5687 1:b7d47b40707d 22 //Serial.begin(115200);
kitta5687 1:b7d47b40707d 23 #if !defined(__MIPSEL__)
kitta5687 1:b7d47b40707d 24 while (!Serial); // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection
kitta5687 1:b7d47b40707d 25 #endif
kitta5687 1:b7d47b40707d 26 if (Usb.Init() == -1) {
kitta5687 1:b7d47b40707d 27 while (1); //halt
kitta5687 1:b7d47b40707d 28 }
kitta5687 1:b7d47b40707d 29 }
kitta5687 1:b7d47b40707d 30 void loop() {
masaaki_nr 2:422d5d7602cc 31 Usb.Task();
masaaki_nr 2:422d5d7602cc 32 if (PS3.PS3Connected || PS3.PS3NavigationConnected) {
masaaki_nr 2:422d5d7602cc 33 sthick[0] = PS3.getAnalogHat(LeftHatX);
masaaki_nr 2:422d5d7602cc 34 sthick[1] = PS3.getAnalogHat(LeftHatY);
masaaki_nr 2:422d5d7602cc 35 sthick[2] = PS3.getAnalogHat(RightHatX);
masaaki_nr 2:422d5d7602cc 36 sthick[3] = PS3.getAnalogHat(RightHatY);
masaaki_nr 2:422d5d7602cc 37 sthick[4] = PS3.getAnalogButton(L2);
masaaki_nr 2:422d5d7602cc 38 sthick[5] = PS3.getAnalogButton(R2);
masaaki_nr 2:422d5d7602cc 39
masaaki_nr 2:422d5d7602cc 40 check = Serial.read();
kitta5687 1:b7d47b40707d 41
masaaki_nr 2:422d5d7602cc 42 switch(check){
masaaki_nr 2:422d5d7602cc 43 case 1:
masaaki_nr 2:422d5d7602cc 44 if (PS3.getButtonPress(PS)) bitSet(botton_val, 0); //PS3.disconnect();
masaaki_nr 2:422d5d7602cc 45 if (PS3.getButtonPress(TRIANGLE)) bitSet(botton_val, 1);
masaaki_nr 2:422d5d7602cc 46 if (PS3.getButtonPress(CIRCLE)) bitSet(botton_val, 2);
masaaki_nr 2:422d5d7602cc 47 if (PS3.getButtonPress(CROSS)) bitSet(botton_val, 3);
masaaki_nr 2:422d5d7602cc 48 if (PS3.getButtonPress(SQUARE)) bitSet(botton_val, 4);
masaaki_nr 2:422d5d7602cc 49
masaaki_nr 2:422d5d7602cc 50 if (PS3.getButtonPress(UP)) bitSet(botton_val, 5);
masaaki_nr 2:422d5d7602cc 51 if (PS3.getButtonPress(RIGHT)) bitSet(botton_val, 6);
masaaki_nr 2:422d5d7602cc 52 if (PS3.getButtonPress(DOWN)) bitSet(botton_val, 7);
masaaki_nr 2:422d5d7602cc 53 if (PS3.getButtonPress(LEFT)) bitSet(botton_val, 8);
masaaki_nr 2:422d5d7602cc 54
masaaki_nr 2:422d5d7602cc 55 if (PS3.getButtonPress(L1)) bitSet(botton_val, 9);
masaaki_nr 2:422d5d7602cc 56 if (PS3.getButtonPress(L3)) bitSet(botton_val, 10);
masaaki_nr 2:422d5d7602cc 57 if (PS3.getButtonPress(R1)) bitSet(botton_val, 11);
masaaki_nr 2:422d5d7602cc 58 if (PS3.getButtonPress(R3)) bitSet(botton_val, 12);
masaaki_nr 2:422d5d7602cc 59
masaaki_nr 2:422d5d7602cc 60 if (PS3.getButtonPress(SELECT)) bitSet(botton_val, 13);
masaaki_nr 2:422d5d7602cc 61 if (PS3.getButtonPress(START)) bitSet(botton_val, 14);
masaaki_nr 2:422d5d7602cc 62 break;
kitta5687 1:b7d47b40707d 63
masaaki_nr 2:422d5d7602cc 64 case 2:
masaaki_nr 2:422d5d7602cc 65 if (PS3.getButtonClick(PS)) bitSet(botton_val, 0); //PS3.disconnect();
masaaki_nr 2:422d5d7602cc 66 if (PS3.getButtonClick(TRIANGLE)) bitSet(botton_val, 1);
masaaki_nr 2:422d5d7602cc 67 if (PS3.getButtonClick(CIRCLE)) bitSet(botton_val, 2);
masaaki_nr 2:422d5d7602cc 68 if (PS3.getButtonClick(CROSS)) bitSet(botton_val, 3);
masaaki_nr 2:422d5d7602cc 69 if (PS3.getButtonClick(SQUARE)) bitSet(botton_val, 4);
masaaki_nr 2:422d5d7602cc 70
masaaki_nr 2:422d5d7602cc 71 if (PS3.getButtonClick(UP)) bitSet(botton_val, 5);
masaaki_nr 2:422d5d7602cc 72 if (PS3.getButtonClick(RIGHT)) bitSet(botton_val, 6);
masaaki_nr 2:422d5d7602cc 73 if (PS3.getButtonClick(DOWN)) bitSet(botton_val, 7);
masaaki_nr 2:422d5d7602cc 74 if (PS3.getButtonClick(LEFT)) bitSet(botton_val, 8);
masaaki_nr 2:422d5d7602cc 75
masaaki_nr 2:422d5d7602cc 76 if (PS3.getButtonClick(L1)) bitSet(botton_val, 9);
masaaki_nr 2:422d5d7602cc 77 if (PS3.getButtonClick(L3)) bitSet(botton_val, 10);
masaaki_nr 2:422d5d7602cc 78 if (PS3.getButtonClick(R1)) bitSet(botton_val, 11);
masaaki_nr 2:422d5d7602cc 79 if (PS3.getButtonClick(R3)) bitSet(botton_val, 12);
masaaki_nr 2:422d5d7602cc 80
masaaki_nr 2:422d5d7602cc 81 if (PS3.getButtonClick(SELECT)) bitSet(botton_val, 13);
masaaki_nr 2:422d5d7602cc 82 if (PS3.getButtonClick(START)) bitSet(botton_val, 14);
masaaki_nr 2:422d5d7602cc 83 break;
masaaki_nr 3:378f57911f5d 84
masaaki_nr 3:378f57911f5d 85 case 3:
masaaki_nr 3:378f57911f5d 86 PS3.disconnect();
masaaki_nr 3:378f57911f5d 87 break;
kitta5687 1:b7d47b40707d 88 }
masaaki_nr 2:422d5d7602cc 89 /***********************************************/
masaaki_nr 2:422d5d7602cc 90 str[0] = botton_val & 0x00ff;
masaaki_nr 2:422d5d7602cc 91 str[1] = botton_val >> 8;
masaaki_nr 2:422d5d7602cc 92 botton_val = 0;
masaaki_nr 2:422d5d7602cc 93
masaaki_nr 2:422d5d7602cc 94 for (int i = 2; i < 8; i++) {
masaaki_nr 2:422d5d7602cc 95 str[i] = sthick[i - 2];
masaaki_nr 2:422d5d7602cc 96 }
masaaki_nr 2:422d5d7602cc 97
masaaki_nr 2:422d5d7602cc 98 //str[8] = 0;
masaaki_nr 2:422d5d7602cc 99 str[8] = PS3.PS3Connected;//コントローラが接続されているか確認
masaaki_nr 2:422d5d7602cc 100 /***********************************************/
masaaki_nr 2:422d5d7602cc 101 // check = Serial.read();//nucleoからの受信データ確認
masaaki_nr 2:422d5d7602cc 102
masaaki_nr 2:422d5d7602cc 103 if (check > 0) Serial.write(str, 9);
masaaki_nr 2:422d5d7602cc 104 else{}
masaaki_nr 2:422d5d7602cc 105
masaaki_nr 2:422d5d7602cc 106 Serial.flush();
masaaki_nr 2:422d5d7602cc 107 check = 0;
masaaki_nr 2:422d5d7602cc 108 }
masaaki_nr 2:422d5d7602cc 109 else{
masaaki_nr 2:422d5d7602cc 110 check = Serial.read();//nucleoからの受信データ確認
masaaki_nr 2:422d5d7602cc 111 memset(str,0,9);
masaaki_nr 2:422d5d7602cc 112 if (check > 0) Serial.write(str, 9);
masaaki_nr 2:422d5d7602cc 113 Serial.flush();
masaaki_nr 2:422d5d7602cc 114 check = 0;
masaaki_nr 2:422d5d7602cc 115 }
kitta5687 1:b7d47b40707d 116 }