主導機 mbed用のプログラムです 改良しました
Dependencies: mbed
Fork of F3RC_syudou_master_3 by
Diff: User.cpp
- Revision:
- 16:b232fd9ee9c2
- Parent:
- 15:c5258a4dee75
- Child:
- 17:c5c41fcf316e
diff -r c5258a4dee75 -r b232fd9ee9c2 User.cpp --- 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