主導機 mbed用のプログラムです 改良しました

Dependencies:   mbed

Fork of F3RC_syudou_master_3 by 日記

Revision:
16:b232fd9ee9c2
Parent:
15:c5258a4dee75
Child:
17:c5c41fcf316e
--- a/User.cpp	Sat Apr 29 11:48:36 2017 +0000
+++ b/User.cpp	Mon Aug 21 04:51:26 2017 +0000
@@ -3,24 +3,25 @@
 #include "hci.h"
 #include "ps3.h"
 #include "User.h"
-
 #include "mbed.h"
 
 int RSX,RSY,LSX,LSY,BSU,BSL;
 //これより下に関数外に書く要素を記入する
-PwmOut led1(LED1);
-PwmOut led2(LED2);
-DigitalOut led3(LED3);
-DigitalOut led4(LED4);
+//spi通信用
+SPI spi(p5,p6,p7);
+DigitalOut cs(p8);
+
 
-void UserLoopSetting(){
-    //一度だけ行いたい初期設定をここに書く
-    led1.period_ms(20);
+void UserLoopSetting()
+{
+    spi.format(16,3);
+    spi.frequency(1000000);
 }
 
-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;
@@ -29,7 +30,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;
@@ -40,24 +41,81 @@
         ButtonState =  ((ps3report*)(data + 1))->ButtonState;
     }
     //ここより下にプログラムを書く
-    
-    
-    //データ取得例
-    if((ButtonState >> BUTTONCIRCLE)&1 == 1) {
-        led1 = 1;
-        //○が押されたとき
-    }else{
-        led1 = 0;
-        //○を押してないとき
+    //spi通信用プログラム
+
+    int a,b,c,d,e,f,g,h,i,j;
+    int send = 0;
+
+
+    while(1) {
+        if((ButtonState >> BUTTONTRIANGEL)&1 == 1) { //フォトトランジスタ1
+            a = 1;
+        } else {
+            a = 0;
+        }
+
+        if((ButtonState >> BUTTONCIRCLE)&1 == 1) {//フォトトランジスタ2
+            b = 2;
+        } else {
+            b = 0;
+        }
+
+        if((ButtonState >> BUTTONUP)&1 == 1) {//対応するボタンを書く(今回上ボタン
+            c = 4;
+        } else {
+            c = 0;
+        }
+
+        if((ButtonState >> BUTTONDOWN)&1 == 1) {//対応するボタンを書く(今回下ボタン
+            d = 8;
+        } else {
+            d = 0;
+        }
+
+        if((ButtonState >> BUTTONL1)&1 == 1) {//対応するボタンを書く(今回L1ボタン
+            e = 16;
+        } else {
+            e = 0;
         }
-        
-    led1=LSX/256.0f;
-    led2=LSY/256.0f;
-    led3=ButtonState & 0x0400;  //L1の状態
-    led4=ButtonState & 0x0800;  //R1の状態
-    //値の取得はps3.hを参照
-    //ここまでプログラム例    実機に乗せるときは消して大丈夫です
-    
-    
-        
+
+        if((ButtonState >> BUTTONL2)&1 == 1) {//対応するボタンを書く(今回L2ボタン
+            f = 32;
+        } else {
+            f = 0;
+        }
+
+        if((ButtonState >> BUTTONTRIANGEL)&1 == 1) {//対応するボタンを書く(今回△ボタン
+            g = 64;
+        } else {
+            g = 0;
+        }
+
+        if((ButtonState >> BUTTONCROSS)&1 == 1) {//対応するボタンを書く(今回×ボタン
+            h = 128;
+        } else {
+            h = 0;
+        }
+
+        if((ButtonState >> BUTTONR1)&1 == 1) {//対応するボタンを書く(今回R1ボタン
+            i = 256;
+        } else {
+            i = 0;
+        }
+
+        if((ButtonState >> BUTTONR2)&1 == 1) {//対応するボタンを書く(今回R2ボタン
+            j = 512;
+        } else {
+            j = 0;
+        }
+
+
+
+        send = a+b+c+d+e+f+g+h+i+j;
+
+        cs = 0;
+        spi. write(send);
+        cs = 1;
+        printf("%d\r\n",send);
+
+    }
 }
\ No newline at end of file