Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Fork of PS3_BlueUSB_user_ver2 by
Diff: User.cpp
- Revision:
- 12:1254070d444a
- Parent:
- 11:86d717718dbf
--- a/User.cpp Mon Feb 15 02:23:25 2016 +0000
+++ b/User.cpp Sun Nov 06 01:25:39 2016 +0000
@@ -6,21 +6,36 @@
#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); // mosi, miso, sclk
+DigitalOut cs(p8);
-void UserLoopSetting(){
+/*
+2進数の足回り、昇降機構、開閉機構の情報
+valmasterは全ての情報の合計
+*/
+int valArm = 0;
+int valUpDown = 0;
+int valLeg = 0;
+int valMaster = 0;
+
+DigitalOut led (LED1);
+
+
+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;
@@ -29,7 +44,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,17 +55,78 @@
ButtonState = ((ps3report*)(data + 1))->ButtonState;
}
//ここより下にプログラムを書く
- //データ取得例
+ //送る情報は2進数で考えた後、10進数に直して送る。(2進数での書き込みができないため)
+
+/*
+SPI通信の設定
+通信量が多い場合、frequencyの値を上げると問題が解決するかもしれない
+*/
+ spi.format(16,3);
+ spi.frequency(1000000);
+ cs = 0;
+
- if((ButtonState >> BUTTONCIRCLE)&1) {
- //○が押されたとき
+ ///////アーム部分/////////
+ if(((ButtonState >> BUTTONR1)&1 == 1)&&((ButtonState >> BUTTONL1)&1 == 1)) {//両方閉じる
+ valArm = 3584;//0111000000000;
+ } else if((ButtonState >> BUTTONR1)&1 == 1) {//右側閉じる
+ valArm = 2560;//0101000000000;
+ } else if((ButtonState >> BUTTONL1)&1 == 1) {//左側閉じる
+ valArm = 3072;//0110000000000;
+ } else if(((ButtonState >> BUTTONR2)&1 == 1)&&((ButtonState >> BUTTONL2)&1 == 1)) {//両方開く
+ valArm = 1536;//0011000000000;
+ } else if ((ButtonState >> BUTTONR2)&1 == 1) {//右側開く
+ valArm = 512;//0001000000000;
+ } else if((ButtonState >> BUTTONL2)&1 == 1) {//左側開く
+ valArm = 1024;//0010000000000;
+ } else {
+ valArm = 0;//0000000000000;
+ }
+ if((ButtonState >> BUTTONCIRCLE)&1 == 1) { //開く時、○ボタンを押すとスピードが上がる
+ valArm = valArm + 4096;//1000000000000;
+ }
+
+//昇降機構
+ if((ButtonState >> BUTTONSQUARE)&1 == 1) {//big up
+ valUpDown = 24;//11000;
+ } else if((ButtonState >> BUTTONCROSS)&1 == 1) {//big down
+ valUpDown = 16;//10000;
+ } else {//not moving
+ valUpDown = 0;//00000;
}
+
+//足回り
+ if(RSY < 110 && LSY < 110) { //forward
+ valLeg =480; //111100000;
+ led = 1;
+ } else if( RSY < 140 && RSY >= 110 && LSY < 110) { //small turn right1
+ valLeg = 384;//110000000;
+ } else if(RSY >= 140 && LSY < 110) { //big turn right
+ valLeg = 416;//110100000;
+ } else if(RSY >= 140 && LSY >= 110 && LSY < 140) { //small turn right2
+ valLeg = 32;//000100000;
+ } else if(RSY < 110 && LSY >= 110 && LSY < 140) { //small turn left1
+ valLeg = 96;//001100000;
+ } else if(RSY < 110 && LSY >= 140) { //big turn left
+ valLeg = 224;//011100000;
+ } else if(RSY < 140 && RSY >= 110 && LSY >=140) { //small turn left2
+ valLeg = 128;//010000000;
+ } else if(RSY >= 140 && LSY >= 140) {//back
+ valLeg = 160;//010100000;
+ } else if((ButtonState >> BUTTONUP)&1 == 1) { //微調整前進
+ valLeg = 256;//100000000;
+ } else if((ButtonState >> BUTTONDOWN)&1 == 1) { //微調整後進
+ valLeg = 288;//100100000
+ } else if((ButtonState >> BUTTONRIGHT)&1 == 1) { //微調整右折
+ valLeg = 320;//101000000
+ } else if((ButtonState >> BUTTONLEFT)&1 == 1) { //微調整左折
+ valLeg = 352;//101100000
+ } else {
+ valLeg = 0;//000000000;
+ }
+
+ valMaster = valLeg + valUpDown + valArm;//この値をSPI通信で送る
-
- led1=LSX/256.0f;
- led2=LSY/256.0f;
- led3=ButtonState & 0x0400; //L1の状態
- led4=ButtonState & 0x0800; //R1の状態
- //値の取得はps3.hを参照
-
-}
\ No newline at end of file
+ spi.write(valMaster);
+ cs = 1;
+}
