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

Dependencies:   mbed

Fork of PS3_BlueUSB_user_ver_circlewar by 智也 馬場

Revision:
13:0d6ad1fb03b5
Parent:
12:d35077f98a08
Child:
19:71f64ff1b86f
--- a/User.cpp	Mon Feb 15 08:36:10 2016 +0000
+++ b/User.cpp	Tue Mar 29 12:29:58 2016 +0000
@@ -1,7 +1,3 @@
-
-/*分かれ!J!*/
-
-
 
 #include "Utils.h"
 #include "USBHost.h"
@@ -16,21 +12,19 @@
 PwmOut led2(LED2);
 DigitalOut led3(LED3);
 DigitalOut led4(LED4);
-DigitalOut LA(p21);
-DigitalOut RA(p23);
-DigitalOut LH(p22);
-DigitalOut RH(p24);
-DigitalOut CH(p25);
+DigitalOut hand(p21);
 SPI m(p5, p6, p7);
 DigitalOut cs(p8);
-void UserLoopSetting(){
+void UserLoopSetting()
+{
     //一度だけ行いたい初期設定をここに書く
     led1.period_ms(20);
 }
 
-void UserLoop(char n,const u8* data){
+void UserLoop(char n,const u8* data)
+{
     u16 ButtonState;
-    if(n==0){//有線Ps3USB.cpp
+    if(n==0) { //有線Ps3USB.cpp
         RSX = ((ps3report*)data)->RightStickX;
         RSY = ((ps3report*)data)->RightStickY;
         LSX = ((ps3report*)data)->LeftStickX;
@@ -39,7 +33,7 @@
         BSL = (u8)(((ps3report*)data)->ButtonState >> 8);
         //ボタンの処理
         ButtonState =  ((ps3report*)data)->ButtonState;
-    }else {//無線TestShell.cpp
+    } else {//無線TestShell.cpp
         RSX = ((ps3report*)(data + 1))->RightStickX;
         RSY = ((ps3report*)(data + 1))->RightStickY;
         LSX = ((ps3report*)(data + 1))->LeftStickX;
@@ -52,57 +46,52 @@
     //ここより下にプログラムを書く
     //データ取得例
     int M=0;
+    bool H=0;
     m.format(16,3);
     m.frequency(1000000);
     cs=0;
     if((ButtonState >> BUTTONCIRCLE)&1) {
         //○が押されたとき
+        H=!H;
+        hand=H;
     }
-    if((ButtonState >> BUTTONL2)&1){
-        LA=1;
-        }
-    else if((ButtonState >> BUTTONR2)&1){
-        RA=1;
-        }
-    else if((ButtonState >> BUTTONCROSS)&1){
-        RA=1;
-        LA=1;
-        }
-    else if((ButtonState >> BUTTONCIRCLE)&1){
-        RH=1;
-        }
-    else if((ButtonState >> BUTTONTRIANGEL)&1){
-        CH=1;
-        }
-    else if((ButtonState >> BUTTONSQUARE)&1){
-        LH=1;
+    //以下の整数MをSPIで送る
+    //整数Mを16桁の二進数とする。
+    //桁数|  16  |  15  |    14   |13|12|11|10|9|8|    7    |6|5|4|3|2|1|
+    //指示|右旋回 |左旋回 |Xの+or-|    出力0~63    |Yの+orー|  出力0~63  |
+    if((ButtonState >> BUTTONR1)&1) {
+        M=1;
+        M=M<<15;
+    } else if((ButtonState >> BUTTONL2)&1) {
+        M=1;
+        M=M<<14;
+    } else {
+        if(LSX-128>=0) {
+            M=1;
+            M=M<<6;
+            M+=(LSX-128)/2;
+            M=M<<7;
+        } else if(LSX-128<0) {
+            M+=(-1)*((LSX-128)/2);
+            if(M==64) M=63;
+            M=M<<7;
         }
-    if((ButtonState >> BUTTONR1)&1){
-        M=+32768;
-        }
-    else if((ButtonState >> BUTTONL2)&1){
-        M=+16384;
-        }
-    if(LSX-128>=0){
-        M=+8192;
-        M=+(LSX-128)*64;
-        }
-    else if(LSX-128<0){
-        M=+(-1)*((LSX-128)*64);
-        }
-    if(LSY-128>=0){
-        M=+64;
-        M=+((LSY-128)/2);
-        }
-    else if(LSY-128<0){
-        M=+((-1)*(LSY-128));
-        }
-    m.write(M);    
-    
+        if(LSY-128>=0) {            
+            M+=1<<6;
+            M+=(LSY-128)/2;
+        } else if(LSY-128<0) {
+            M+=((-1)*(LSY-128)/2);
+            if(M==64) M=63;
+        } else M=0;
+    }
+    m.write(0xffff);
+//    m.write(M);
+    printf("0x%x\r\n",M);
+
     led1=LSX/256.0f;
     led2=LSY/256.0f;
     led3=ButtonState & 0x0400;  //L1の状態
     led4=ButtonState & 0x0800;  //R1の状態
     //値の取得はps3.hを参照
-        cs=1;
+    cs=1;
 }
\ No newline at end of file