Soma Takahashi / Mbed OS kourobo2019

Dependencies:   Controller ikarashiMDC

Files at this revision

API Documentation at this revision

Comitter:
ec30109b
Date:
Thu Mar 07 09:42:59 2019 +0000
Parent:
0:9beba3a67526
Child:
2:a583ad08d3d6
Commit message:
kourobo; handmade controller;

Changed in this revision

Controller.lib Show annotated file Show diff for this revision Revisions of this file
PS3.lib Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Controller.lib	Thu Mar 07 09:42:59 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/teams/NHK-Robocon2016_Nagaoka_B_Team/code/Controller/#875532e626ee
--- a/PS3.lib	Thu Mar 07 02:29:03 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-https://os.mbed.com/teams/NHK-Robocon2016_Nagaoka_B_Team/code/PS3/#78827486d24f
--- 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