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 by
Diff: User.cpp
- Revision:
- 8:1d1b8298f0cd
- Parent:
- 7:4bddbd4549a1
- Child:
- 9:0b1bd6a05321
--- a/User.cpp	Thu Apr 30 06:26:22 2015 +0000
+++ b/User.cpp	Wed May 27 10:31:05 2015 +0000
@@ -10,43 +10,207 @@
 int RSX,RSY,LSX,LSY,BSU,BSL;
 PwmOut led1(LED1);
 PwmOut led2(LED2);
+
 DigitalOut led3(LED3);
 DigitalOut led4(LED4);
 
-void UserLoopSetting(){
+PwmOut wheelR1(p21);
+PwmOut wheelR2(p22);
+
+PwmOut wheelL2(p23);
+PwmOut wheelL1(p24);
+
+DigitalOut launch1(p25);
+DigitalOut launch2(p26);
+
+void motorR(int dir,float dutyR)
+
+{
+    if(dir==1)
+            {
+                wheelR1=dutyR;
+                wheelR2=0;
+            }
+            
+    else if(dir==2)
+            {
+                wheelR2=dutyR;
+                wheelR1=0;
+            }
+            
+    else if(dir==0)
+            {
+                wheelR1=0;
+                wheelR2=0;
+            }
+            
+}
+
+void motorL(int dir,float dutyL)
+{
+    if(dir==1)
+            {
+                wheelL1=dutyL;
+                wheelL2=0;
+            }
+            
+    else if(dir==2)
+            {
+                wheelL1=0;
+                wheelL2=dutyL;
+            }
+            
+    else if(dir==0)
+            {
+                wheelL1=0;
+                wheelL2=0;
+            }
+        
+}
+        
+    
+
+
+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
-        RSX = ((ps3report*)data)->RightStickX;
-        RSY = ((ps3report*)data)->RightStickY;
-        LSX = ((ps3report*)data)->LeftStickX;
-        LSY = ((ps3report*)data)->LeftStickY;
-        BSU = (u8)(((ps3report*)data)->ButtonState & 0x00ff);
-        BSL = (u8)(((ps3report*)data)->ButtonState >> 8);
-        //ボタンの処理
-        ButtonState =  ((ps3report*)data)->ButtonState;
-    }else {//無線TestShell.cpp
-        RSX = ((ps3report*)(data + 1))->RightStickX;
-        RSY = ((ps3report*)(data + 1))->RightStickY;
-        LSX = ((ps3report*)(data + 1))->LeftStickX;
-        LSY = ((ps3report*)(data + 1))->LeftStickY;
-        BSU = (u8)(((ps3report*)(data + 1))->ButtonState & 0x00ff);
-        BSL = (u8)(((ps3report*)(data + 1))->ButtonState >> 8);
-        //ボタンの処理
-        ButtonState =  ((ps3report*)(data + 1))->ButtonState;
-    }
+    if(n==0)
+            {//有線Ps3USB.cpp
+                RSX = ((ps3report*)data)->RightStickX;
+                RSY = ((ps3report*)data)->RightStickY;
+                LSX = ((ps3report*)data)->LeftStickX;
+                LSY = ((ps3report*)data)->LeftStickY;
+                BSU = (u8)(((ps3report*)data)->ButtonState & 0x00ff);
+                BSL = (u8)(((ps3report*)data)->ButtonState >> 8);
+            //ボタンの処理
+                ButtonState =  ((ps3report*)data)->ButtonState;
+            }
+    else 
+            {//無線TestShell.cpp
+                RSX = ((ps3report*)(data + 1))->RightStickX;
+                RSY = ((ps3report*)(data + 1))->RightStickY;
+                LSX = ((ps3report*)(data + 1))->LeftStickX;
+                LSY = ((ps3report*)(data + 1))->LeftStickY;
+                BSU = (u8)(((ps3report*)(data + 1))->ButtonState & 0x00ff);
+                BSL = (u8)(((ps3report*)(data + 1))->ButtonState >> 8);
+            //ボタンの処理
+                ButtonState =  ((ps3report*)(data + 1))->ButtonState;
+            }
     //ここより下にプログラムを書く
     //データ取得例
-    if((ButtonState >> BUTTONCIRCLE)&1) {
-        //○が押されたとき
-    }
+   
+    
+    
+    if((ButtonState >> BUTTONUP)&1) 
+            {
+                motorL(1,0.6);
+                motorR(1,0.6);       
+            }
+            
+    else if((ButtonState >> BUTTONLEFT)&1)
+            {
+                motorL(1,0.4);
+                motorR(1,0.8);
+            }
+        
+    else if((ButtonState >> BUTTONRIGHT)&1)
+            {
+                motorL(1,0.8);
+                motorR(1,0.4);                
+            }
+            
+    else if((ButtonState >> BUTTONDOWN)&1)
+            {
+                motorL(2,0.6);
+                motorR(2,0.6);
+            }
+                
+    else if((ButtonState >> BUTTONR1)&1)
+            {
+                motorL(1,0.3);
+                motorR(2,0.3);
+            }
+                    
+    else if((ButtonState >> BUTTONL1)&1)
+            {
+                motorL(2,0.3);
+                motorR(1,0.3);
+            }
+            
+    else if((ButtonState >> BUTTONSQUARE) & 1)
+            {
+                launch1=1;
+                launch2=0;
+            }
+    else if((ButtonState >> BUTTONCROSS) & 1)
+            {
+                launch1=0;
+                launch2=1;
+            }
+        
+        
+ //ここより下にANALOGのプログラムを書く  
+     //ここより下にANALOGのプログラムを書く  
+     
+ //left up  , right up        
+    else  if(LSX/256.0f>0.3 && LSX/256.0f<0.7 && LSY/256.0f<0.3 &&
+             RSX/256.0f>0.3 && RSX/256.0f<0.7 && RSY/256.0f<0.3)
+             {
+                motorR(1,0.5);
+                motorL(1,0.5);
+             }
+                                            
+ //left down, right down
+                                            
+    else if(LSX/256.0f>0.3 && LSX/256.0f<0.7 && LSY/256.0f>0.7 &&
+            RSX/256.0f>0.3 && RSX/256.0f<0.7 && RSY/256.0f>0.7)
+            {
+                motorR(2,0.5);
+                motorL(2,0.5);
+            }
+                                          
+//  left up  , right down 
+    else if(LSX/256.0f>0.3 && LSX/256.0f<0.7 && LSY/256.0f<0.3 &&
+            RSX/256.0f>0.3 && RSX/256.0f<0.7 && RSY/256.0f>0.7)
+            {
+                motorL(1,0.5);
+                motorR(2,0.5);
+            }
+                                                    
+// left down, right up
+                                                    
+    else if(LSX/256.0f>0.3 && LSX/256.0f<0.7 && LSY/256.0f>0.7 &&
+            RSX/256.0f>0.3 && RSX/256.0f<0.7 && RSY/256.0f<0.3)
+            {
+                motorL(2,0.5);
+                motorR(1,0.5);
+            }
+                                                        
+                                        
+                                        
+                                        
+                                       
+    else    { 
+                  motorL(0,0);
+                  motorR(0,0); 
+            }
+       
+    
+                                
+                                
+                        
+                        
+        
     led1=LSX/256.0f;
     led2=LSY/256.0f;
     led3=ButtonState & 0x0400;  //L1の状態
     led4=ButtonState & 0x0800;  //R1の状態
     //値の取得はps3.hを参照
-}
\ No newline at end of file
+}
+
    