Soma Takahashi / Mbed OS kourobo2019

Dependencies:   Controller ikarashiMDC

Revision:
1:58103ad56096
Parent:
0:9beba3a67526
Child:
2:a583ad08d3d6
--- a/main.cpp	Thu Mar 07 02:29:03 2019 +0000
+++ b/main.cpp	Thu Mar 07 09:42:59 2019 +0000
@@ -1,20 +1,22 @@
 #include "mbed.h"
-#include"PS3.h"
 #include "ikarashiMDC.h"
+#include "controller.h"
 
 Serial serial(PC_6, PC_7);
 DigitalOut serialcontrol(D2);
 DigitalOut led1(LED1);
-PS3 ps3(PC_12, PD_2);
 Serial pc(USBTX, USBRX,115200);
+AnalogIn analog_value(A0);
+DigitalOut led(LED1);
+Controller pad(PC_10,PC_11,208);
+
 
 ikarashiMDC ikarashi[] {
-    ikarashiMDC(&serialcontrol,2,3,SM,&serial),
     ikarashiMDC(&serialcontrol,2,0,SM,&serial),
     ikarashiMDC(&serialcontrol,2,1,SM,&serial),
     ikarashiMDC(&serialcontrol,2,2,SM,&serial),
-    ikarashiMDC(&serialcontrol,3,0,SM,&serial),
-    ikarashiMDC(&serialcontrol,3,1,SM,&serial)
+    ikarashiMDC(&serialcontrol,2,3,SM,&serial),
+    ikarashiMDC(&serialcontrol,3,3,SM,&serial)
 };
 PwmOut pwm(LED1);
 
@@ -24,122 +26,111 @@
     float i = -1;
     ikarashi[0].braking = true;
     float pwm = 0;
-    while(1) {
-
-        int b[12], stick[4],X,Y,M;
-        double SPe[4];
-      
-        /*ボタンスイッチ*/
-        for(int i = 0; i < 12; i++) {
-        b[i] = ps3.getButton(i);
-        pc.printf("%2d", b[i] );
-        }
-        /*ジョイスティック*/
-        for(int i = 0; i < 4; i++) {
-        stick[i] = ps3.getStick(i);
-        pc.printf("%4d", stick[i] );
-        }
+    float meas;
+    
+    printf("\nAnalogIn example\n");
+    
+    int button[11];
+    double SPe[4];
+    float stickRadian[2], stickNorn[2];
+    
+    serial.baud(115200);
+    ikarashi[0].braking = true;
         
-        //ベルト機構
-        if(b[6] == 0 || b[7] == 0){ 
-            ikarashi[5].setSpeed(0);
-        }  
-        if(b[6] == 1){   
-            ikarashi[4].setSpeed(0.08);        
-            ikarashi[5].setSpeed(-0.45);
-        }
-        if(b[7] == 1){
-            ikarashi[4].setSpeed(-0.08); 
-            ikarashi[5].setSpeed(0.45);
-        }
-            
+    while(1) {
+        if(pad.receiveState()){
+            for(int i = 0; i < 13; i++){
+                button[i] = pad.getButton1(i);
+                pc.printf("%d ", button[i]);
+            }
+            for(int i = 0; i < 2; i++){
+                stickRadian[i] = pad.getRadian(i);
+                stickNorn[i] = pad.getNorm(i);
+                pc.printf("%f %f\t", stickRadian[i], stickNorn[i]);
+            }
+            pc.printf("\n\r");
         
-        //バケット機構
-        if(b[0] == 0 || b[1] == 0){ 
-            ikarashi[4].setSpeed(0);
-        }  
-        if(b[0] == 1){           
-            ikarashi[4].setSpeed(0.08);
-        }
-        if(b[1] == 1){
-            ikarashi[4].setSpeed(-0.08);
+        //足回り
+        if(stickNorn[0] != 0){
+            SPe[0] = sin(stickRadian[0] - PI * 3/4);
+            SPe[1] = sin(stickRadian[0] - PI * (-3/4));
+            SPe[2] = sin(stickRadian[0] - PI * (-1/4));
+            SPe[3] = sin(stickRadian[0] - PI * 1/4);
         }
         
-        
-        //足回り   
-        X = stick[0];
-        Y = stick[1];
-        M = stick[2];
-        
-        if(X > 100 && X < 155 && Y > 100 && Y < 155) { //停止
-            SPe[0] = 0;
-            SPe[1] = 0;
-            SPe[2] = 0;
-            SPe[3] = 0;
-            
-            pc.printf("  停止  ");
+        //微調整
+        if(button[3] == 0){        //前
+            SPe[0] = 0.4;
+            SPe[1] = 0.4;
+            SPe[2] = -0.4;
+            SPe[3] = -0.4;
         }
-        if(X > 100 && Y <= 100) { //右前方向
-            SPe[0] = -0.45;
-            SPe[1] = ((127.5 - Y) - (X - 127.5)) * 0.004;
-            SPe[2] = 0.45;
-            SPe[3] = ((X - 127.5) - (127.5 - Y)) * 0.004;
-            
-            pc.printf("  右前方向  ");
+        if(button[5] == 0){        //後ろ
+            SPe[0] = -0.4;
+            SPe[1] = -0.4;
+            SPe[2] = 0.4;
+            SPe[3] = 0.4;
         }
-        if(X <= 100 && Y < 155) { //左前方向
-            SPe[0] = ((127.5 - X) - (127.5 - Y)) * 0.004;
-            SPe[1] = 0.45;
-            SPe[2] = ((127.5 - X) - (127.5 - Y)) * -0.004;
-            SPe[3] = -0.45;
-            
-            pc.printf("  左前方向  ");
+        if(button[4] == 0){        //右
+            SPe[0] = -0.4;
+            SPe[1] = 0.4;
+            SPe[2] = -0.4;
+            SPe[3] = 0.4;
         }
-        if(X >= 155 && Y > 100) { //右後ろ方向
-            SPe[0] = ((X - 127.5) - (Y - 127.5)) * -0.004;
-            SPe[1] = -0.45;
-            SPe[2] = ((X - 127.5) - (Y - 127.5)) * 0.004;
-            SPe[3] = 0.45;
-            
-            pc.printf("  右後ろ方向  ");
+        if(button[2] == 0){         //左
+            SPe[0] = 0.4;
+            SPe[1] = -0.4;
+            SPe[2] = 0.4;
+            SPe[3] = -0.4;
         }
-        if(X < 155 && Y >= 155) { //左後ろ方向
-            SPe[0] = 0.45;
-            SPe[1] = ((X - 127.5) + (127.5 - Y)) * 0.004;
-            SPe[2] = -0.45;
-            SPe[3] = ((X - 127.5) - (127.5 - Y)) * 0.004;
-            
-            pc.printf("  左後ろ方向  ");
-        }   
-        if(M < 10) {  //左回転
+        
+        //右回転
+        if(button[7] == 0){
+            SPe[0] = -0.4;
+            SPe[1] = -0.4;
+            SPe[2] = -0.4;
+            SPe[3] = -0.4;
+        }
+        //左回転
+        if(button[8] == 0){
             SPe[0] = 0.4;
             SPe[1] = 0.4;
             SPe[2] = 0.4;
             SPe[3] = 0.4;
-            
-            pc.printf("  左回転  ");
         }
-        if(M > 245) {  //右回転
-            SPe[0] = -0.4;
-            SPe[1] = -0.4;
-            SPe[2] = -0.4;
-            SPe[3] = -0.4;
-            
-            pc.printf("  右回転  ");
-
+        
+        //機構
+        if(button[1] == 0){
+            ikarashi[4].setSpeed(-0.3);    //閉じる
+        }
+        
+        if(button[0] == 0){                     //開く
+            ikarashi[4].setSpeed(0.3);
         }
-           
-
-            ikarashi[0].setSpeed(SPe[0]);
-            ikarashi[1].setSpeed(SPe[1]);
-            ikarashi[2].setSpeed(SPe[2]);
-            ikarashi[3].setSpeed(SPe[3]);
+        
+        
+        ikarashi[0].setSpeed(SPe[0]);
+        ikarashi[1].setSpeed(SPe[1]);
+        ikarashi[2].setSpeed(SPe[2]);
+        ikarashi[3].setSpeed(SPe[3]);
+        
+        pc.printf("%.2f  ",SPe[0]);
+        pc.printf("%.2f  ",SPe[1]);
+        pc.printf("%.2f  ",SPe[2]);
+        pc.printf("%.2f  ",SPe[3]);
             
-            pc.printf("%.2f  ",SPe[0]);
-            pc.printf("%.2f  ",SPe[1]);
-            pc.printf("%.2f  ",SPe[2]);
-            pc.printf("%.2f  ",SPe[3]);
+        pc.printf("\r\n");
+        
+         }else{
+            pc.printf("error\n\r");
             
-             pc.printf("\r\n");
+            ikarashi[0].setSpeed(0);
+            ikarashi[1].setSpeed(0);
+            ikarashi[2].setSpeed(0);
+            ikarashi[3].setSpeed(0);
+        }
     }
-}
+}        
+        
+        
+  
\ No newline at end of file