新部内対抗A班 / Mbed 2 deprecated PS3_BlueUSB_user_ver_circlewarA

Dependencies:   mbed

Fork of PS3_BlueUSB_user_ver_circlewar by 智也 馬場

Committer:
knumber16
Date:
Thu Mar 10 03:23:21 2016 +0000
Revision:
17:ae30e74e9eba
Parent:
16:90fb0ef425ac
Child:
18:299810a6dcb4
terae;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
baba2357 11:8288386dc376 1
baba2357 11:8288386dc376 2 /*分かれ!J!*/
baba2357 11:8288386dc376 3
hirokimineshita 0:736c76a75def 4 #include "Utils.h"
hirokimineshita 0:736c76a75def 5 #include "USBHost.h"
hirokimineshita 0:736c76a75def 6 #include "hci.h"
hirokimineshita 0:736c76a75def 7 #include "ps3.h"
hirokimineshita 0:736c76a75def 8 #include "User.h"
hirokimineshita 0:736c76a75def 9 #include "mbed.h"
knumber16 15:d9485d4c3b8c 10 #include "S9706.h"
knumber16 15:d9485d4c3b8c 11 #include "SerialServo.h"
knumber16 15:d9485d4c3b8c 12 //#define DEBUG_MODE
knumber16 15:d9485d4c3b8c 13 #define ID 0
hirokimineshita 0:736c76a75def 14
knumber16 17:ae30e74e9eba 15 #define duty1 0.1
knumber16 17:ae30e74e9eba 16 #define duty2 0.1
knumber16 17:ae30e74e9eba 17 int servoflag = 0;
hirokimineshita 0:736c76a75def 18 int RSX,RSY,LSX,LSY,BSU,BSL;
hirokimineshita 9:e5437ba3e920 19 //これより下に関数外に書く要素を記入する
knumber16 17:ae30e74e9eba 20 DigitalOut LA(p18);
knumber16 17:ae30e74e9eba 21 DigitalOut RA(p19);
knumber16 17:ae30e74e9eba 22 DigitalOut LH(p20);
knumber16 17:ae30e74e9eba 23 DigitalOut RH(p21);
knumber16 17:ae30e74e9eba 24 DigitalOut CH(p22);
knumber16 17:ae30e74e9eba 25 PwmOut motor[2] = {p25,p26};
baba2357 10:bf0c0cdb487d 26 SPI m(p5, p6, p7);
baba2357 10:bf0c0cdb487d 27 DigitalOut cs(p8);
knumber16 15:d9485d4c3b8c 28 //Serial pc(USBTX,USBRX);
knumber16 15:d9485d4c3b8c 29
knumber16 15:d9485d4c3b8c 30 DigitalOut leds[4] = {LED1,LED2,LED3,LED4};
knumber16 15:d9485d4c3b8c 31
knumber16 15:d9485d4c3b8c 32
knumber16 15:d9485d4c3b8c 33
knumber16 15:d9485d4c3b8c 34 //
hirokimineshita 0:736c76a75def 35 void UserLoopSetting(){
hirokimineshita 0:736c76a75def 36 //一度だけ行いたい初期設定をここに書く
knumber16 15:d9485d4c3b8c 37 LA=0;
knumber16 15:d9485d4c3b8c 38 RA=0;
knumber16 15:d9485d4c3b8c 39 LH=0;
knumber16 15:d9485d4c3b8c 40 RH=0;
knumber16 15:d9485d4c3b8c 41 CH=0;
knumber16 15:d9485d4c3b8c 42 initSerialServo();
hirokimineshita 0:736c76a75def 43 }
hirokimineshita 0:736c76a75def 44
hirokimineshita 0:736c76a75def 45 void UserLoop(char n,const u8* data){
hirokimineshita 0:736c76a75def 46 u16 ButtonState;
hirokimineshita 0:736c76a75def 47 if(n==0){//有線Ps3USB.cpp
hirokimineshita 0:736c76a75def 48 RSX = ((ps3report*)data)->RightStickX;
hirokimineshita 0:736c76a75def 49 RSY = ((ps3report*)data)->RightStickY;
hirokimineshita 0:736c76a75def 50 LSX = ((ps3report*)data)->LeftStickX;
hirokimineshita 0:736c76a75def 51 LSY = ((ps3report*)data)->LeftStickY;
hirokimineshita 0:736c76a75def 52 BSU = (u8)(((ps3report*)data)->ButtonState & 0x00ff);
hirokimineshita 0:736c76a75def 53 BSL = (u8)(((ps3report*)data)->ButtonState >> 8);
hirokimineshita 0:736c76a75def 54 //ボタンの処理
hirokimineshita 0:736c76a75def 55 ButtonState = ((ps3report*)data)->ButtonState;
hirokimineshita 0:736c76a75def 56 }else {//無線TestShell.cpp
hirokimineshita 0:736c76a75def 57 RSX = ((ps3report*)(data + 1))->RightStickX;
hirokimineshita 0:736c76a75def 58 RSY = ((ps3report*)(data + 1))->RightStickY;
hirokimineshita 0:736c76a75def 59 LSX = ((ps3report*)(data + 1))->LeftStickX;
hirokimineshita 0:736c76a75def 60 LSY = ((ps3report*)(data + 1))->LeftStickY;
hirokimineshita 0:736c76a75def 61 BSU = (u8)(((ps3report*)(data + 1))->ButtonState & 0x00ff);
hirokimineshita 0:736c76a75def 62 BSL = (u8)(((ps3report*)(data + 1))->ButtonState >> 8);
hirokimineshita 0:736c76a75def 63 //ボタンの処理
hirokimineshita 0:736c76a75def 64 ButtonState = ((ps3report*)(data + 1))->ButtonState;
hirokimineshita 0:736c76a75def 65 }
hirokimineshita 0:736c76a75def 66 //ここより下にプログラムを書く
hirokimineshita 0:736c76a75def 67 //データ取得例
knumber16 15:d9485d4c3b8c 68
baba2357 10:bf0c0cdb487d 69 int M=0;
baba2357 10:bf0c0cdb487d 70 m.format(16,3);
baba2357 10:bf0c0cdb487d 71 m.frequency(1000000);
baba2357 10:bf0c0cdb487d 72 cs=0;
knumber16 17:ae30e74e9eba 73 /* if((ButtonState >> BUTTONCIRCLE)&1) {
hirokimineshita 0:736c76a75def 74 //○が押されたとき
hirokimineshita 0:736c76a75def 75 }
knumber16 17:ae30e74e9eba 76 */
knumber16 17:ae30e74e9eba 77 if((ButtonState >> BUTTONUP)&1){
knumber16 17:ae30e74e9eba 78 motor[0]=0;
knumber16 17:ae30e74e9eba 79 motor[1]=0.1;
knumber16 17:ae30e74e9eba 80 }
knumber16 17:ae30e74e9eba 81 else if((ButtonState >> BUTTONDOWN)&1){
knumber16 17:ae30e74e9eba 82 motor[1]=0;
knumber16 17:ae30e74e9eba 83 motor[0]=0.1;
knumber16 17:ae30e74e9eba 84 }
knumber16 17:ae30e74e9eba 85 else{
knumber16 17:ae30e74e9eba 86 motor[0]=0;
knumber16 17:ae30e74e9eba 87 motor[1]=0;
knumber16 17:ae30e74e9eba 88 }
knumber16 17:ae30e74e9eba 89 /* if((ButtonState >> BUTTONRIGHT)&1){
knumber16 17:ae30e74e9eba 90 set_degree(ID,50);
knumber16 17:ae30e74e9eba 91 }else if((ButtonState >> BUTTONLEFT)&1){
knumber16 17:ae30e74e9eba 92 set_degree(ID,200);
knumber16 17:ae30e74e9eba 93 }else{*/
knumber16 17:ae30e74e9eba 94 if(servoflag == 0){
knumber16 17:ae30e74e9eba 95 set_degree(ID,135);
knumber16 17:ae30e74e9eba 96 servoflag= 1;
knumber16 17:ae30e74e9eba 97 }
knumber16 17:ae30e74e9eba 98 // }
baba2357 10:bf0c0cdb487d 99 if((ButtonState >> BUTTONL2)&1){
knumber16 15:d9485d4c3b8c 100 LA=!LA;
baba2357 10:bf0c0cdb487d 101 }
baba2357 10:bf0c0cdb487d 102 else if((ButtonState >> BUTTONR2)&1){
knumber16 15:d9485d4c3b8c 103 RA=!RA;
baba2357 12:d35077f98a08 104 }
baba2357 12:d35077f98a08 105 else if((ButtonState >> BUTTONCROSS)&1){
knumber16 15:d9485d4c3b8c 106 RA=!RA;
knumber16 15:d9485d4c3b8c 107 LA=!LA;
baba2357 10:bf0c0cdb487d 108 }
baba2357 12:d35077f98a08 109 else if((ButtonState >> BUTTONCIRCLE)&1){
knumber16 15:d9485d4c3b8c 110 RH=!RH;
baba2357 12:d35077f98a08 111 }
baba2357 12:d35077f98a08 112 else if((ButtonState >> BUTTONTRIANGEL)&1){
knumber16 15:d9485d4c3b8c 113 CH=!CH;
baba2357 12:d35077f98a08 114 }
baba2357 12:d35077f98a08 115 else if((ButtonState >> BUTTONSQUARE)&1){
knumber16 15:d9485d4c3b8c 116 LH=!LH;
baba2357 10:bf0c0cdb487d 117 }
baba2357 10:bf0c0cdb487d 118 if((ButtonState >> BUTTONR1)&1){
jack0325suzu 14:639d019dfee8 119 M+=1 << 15;
baba2357 10:bf0c0cdb487d 120 }
jack0325suzu 14:639d019dfee8 121 else if((ButtonState >> BUTTONL1)&1){
jack0325suzu 14:639d019dfee8 122 M+=1 << 14;
baba2357 10:bf0c0cdb487d 123 }
baba2357 10:bf0c0cdb487d 124 if(LSX-128>=0){
jack0325suzu 14:639d019dfee8 125 M+=1 << 13;
jack0325suzu 14:639d019dfee8 126 M+=((LSX-128)/2) << 7;
baba2357 10:bf0c0cdb487d 127 }
baba2357 10:bf0c0cdb487d 128 else if(LSX-128<0){
jack0325suzu 14:639d019dfee8 129 if(128-LSX==128)M+=63 << 7;
jack0325suzu 14:639d019dfee8 130 else M+=((128-LSX)/2) << 7;
jack0325suzu 14:639d019dfee8 131 }
jack0325suzu 14:639d019dfee8 132 if(LSY-127<=0){
jack0325suzu 14:639d019dfee8 133 M+=1 << 6;
jack0325suzu 14:639d019dfee8 134 M+=((127-LSY)/2);
jack0325suzu 14:639d019dfee8 135 }
jack0325suzu 14:639d019dfee8 136 else if(LSY-127>0){
jack0325suzu 14:639d019dfee8 137 if(LSY-127==128)M+=63;
jack0325suzu 14:639d019dfee8 138 else M+=(LSY-127)/2;
baba2357 10:bf0c0cdb487d 139 }
jack0325suzu 14:639d019dfee8 140 #ifdef DEBUG_MODE
jack0325suzu 14:639d019dfee8 141 int MM,i,MA[16];
jack0325suzu 14:639d019dfee8 142 MM=M;
jack0325suzu 14:639d019dfee8 143 for(i=0;MM>0;i++){
jack0325suzu 14:639d019dfee8 144 MA[i]=MM % 2;
jack0325suzu 14:639d019dfee8 145 MM=MM/2;
jack0325suzu 14:639d019dfee8 146 }
jack0325suzu 14:639d019dfee8 147 for(i=i+1;i<16;i++){
jack0325suzu 14:639d019dfee8 148 MA[i]=0;
jack0325suzu 14:639d019dfee8 149 }
jack0325suzu 14:639d019dfee8 150 for(i=15;i>=0;i--){printf("%d",MA[i]);}
jack0325suzu 14:639d019dfee8 151 printf("\r\n");
jack0325suzu 14:639d019dfee8 152 #endif
jack0325suzu 14:639d019dfee8 153 //printf("LSX=%d,LSY=%d\r\n",LSX,LSY);
jack0325suzu 14:639d019dfee8 154 printf("M=%d \r\n",M);
jack0325suzu 14:639d019dfee8 155
baba2357 10:bf0c0cdb487d 156 m.write(M);
baba2357 12:d35077f98a08 157
knumber16 15:d9485d4c3b8c 158 /*
hirokimineshita 0:736c76a75def 159 led1=LSX/256.0f;
hirokimineshita 0:736c76a75def 160 led2=LSY/256.0f;
hirokimineshita 0:736c76a75def 161 led3=ButtonState & 0x0400; //L1の状態
hirokimineshita 0:736c76a75def 162 led4=ButtonState & 0x0800; //R1の状態
knumber16 15:d9485d4c3b8c 163 */
knumber16 15:d9485d4c3b8c 164 for(int i = 0;i<4;i++){
knumber16 15:d9485d4c3b8c 165 leds[i] = !leds[i];
knumber16 15:d9485d4c3b8c 166 wait_ms(50);
knumber16 15:d9485d4c3b8c 167 }
hirokimineshita 0:736c76a75def 168 //値の取得はps3.hを参照
jack0325suzu 14:639d019dfee8 169 cs=1;
knumber16 15:d9485d4c3b8c 170 // setID(ID);
knumber16 15:d9485d4c3b8c 171 // readID();
knumber16 15:d9485d4c3b8c 172 // readID();
knumber16 15:d9485d4c3b8c 173
hirokimineshita 0:736c76a75def 174 }