fep199 198

Dependencies:   Controller ikarashiMDC

Files at this revision

API Documentation at this revision

Comitter:
THtakahiro702286
Date:
Thu Mar 07 07:49:11 2019 +0000
Commit message:
fep199 198

Changed in this revision

.gitignore Show annotated file Show diff for this revision Revisions of this file
Controller.lib Show annotated file Show diff for this revision Revisions of this file
ikarashiMDC.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-os.lib Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.gitignore	Thu Mar 07 07:49:11 2019 +0000
@@ -0,0 +1,4 @@
+.build
+.mbed
+projectfiles
+*.py*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Controller.lib	Thu Mar 07 07:49:11 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/teams/NHK-Robocon2016_Nagaoka_B_Team/code/Controller/#875532e626ee
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ikarashiMDC.lib	Thu Mar 07 07:49:11 2019 +0000
@@ -0,0 +1,1 @@
+https://developer.mbed.org/teams/NHK-Robocon2016_Nagaoka_B_Team/code/ikarashiMDC/#ea34af94e90c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Mar 07 07:49:11 2019 +0000
@@ -0,0 +1,107 @@
+#include "mbed.h"
+#include "ikarashiMDC.h"
+#include "controller.h"
+Controller pad(PC_10, PC_11, 198);
+Serial pc(USBTX, USBRX, 115200);
+Serial serial(PC_6,PC_7);
+DigitalOut serialcontrol(D2);
+DigitalOut stop(PB_12,PB_2);
+
+ikarashiMDC ikarashi[] {
+    ikarashiMDC(&serialcontrol,2,0,SM,&serial),
+    ikarashiMDC(&serialcontrol,2,1,SM,&serial),
+    ikarashiMDC(&serialcontrol,2,2,SM,&serial),
+    ikarashiMDC(&serialcontrol,2,3,SM,&serial)
+};
+
+int main()
+{
+    serial.baud(115200);
+    ikarashi[0].braking = true;
+    int button[11];
+    float stickRadian[2],stickNorn[2];
+    double acc[4];
+    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(button[2] == 1 && button[3] == 0 && button[4] == 1 && button[5] == 1){
+                stickNorn[0] = 1;
+                stickRadian[0] = 1.570796;
+            }else if(button[2] == 0 && button[3] == 1 && button[4] == 1 && button[5] == 1){
+                stickNorn[0] = 1;
+                stickRadian[0] = 0;
+            }else if(button[2] == 1 && button[3] == 1 && button[4] == 0 && button[5] == 1){
+                stickNorn[0] = 1;
+                stickRadian[0] = 3.141593;
+            }else if(button[2] == 1 && button[3] == 1 && button[4] == 1 && button[5] == 0){
+                stickNorn[0] = 1;
+                stickRadian[0] = -1.570796;
+            }else if(stickNorn[0] == 0 && button[7] == 1 && button[9] == 1) {
+                acc[0] = 0;
+                acc[1] = 0;
+                acc[2] = 0;
+            }
+        //全方位移動
+            if(stickNorn[0] != 0){
+                acc[0] = sin(stickRadian[0] - PI * 11 / 6);
+                acc[1] = sin(stickRadian[0] - PI * 1 / 2);
+                acc[2] = sin(stickRadian[0] - PI * 7 / 6);
+            }
+        //左右旋回
+            if(button[9] == 0 && button[7] == 1 && stickNorn[0] == 0) {
+                acc[0] = -0.5;
+                acc[1] = -0.5;
+                acc[2] = -0.5;
+            }
+            if(button[7] == 0 && button[9] == 1 && stickNorn[0] == 0) {
+                acc[0] = 0.5;
+                acc[1] = 0.5;
+                acc[2] = 0.5;
+            }
+        //機構制御
+            if(button[10] == 0 && button[8] == 1){
+                acc[3] = -0.4;
+            }
+            if(button[8] == 0 && button[10] == 1){
+                acc[3] = 0.4;
+            }
+            if(button[8] == button[10]) {
+                acc[3] = 0;
+            }
+        //減速
+            if(button[0] == 0) {
+                for(int i = 0;i < 4;i++) {
+                    if(acc[i] >= 0.5){
+                        acc[i] = 0.5;
+                    }
+                    if(acc[i] <= -0.5) {
+                        acc[i] = -0.5;
+                    }
+                }
+            }
+            pc.printf("%f %f %f %f",acc[0],acc[1],acc[2],acc[3]);
+            ikarashi[0].setSpeed(acc[0]);
+            ikarashi[1].setSpeed(acc[1]);
+            ikarashi[2].setSpeed(acc[2]);
+            ikarashi[3].setSpeed(acc[3]);
+        }else{
+            pc.printf("error\n\r");
+                    ikarashi[0].setSpeed(acc[0]);
+        ikarashi[1].setSpeed(0);
+        ikarashi[2].setSpeed(0);
+        ikarashi[3].setSpeed(0);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-os.lib	Thu Mar 07 07:49:11 2019 +0000
@@ -0,0 +1,1 @@
+https://github.com/ARMmbed/mbed-os/#c9e63f14085f5751ff5ead79a7c0382d50a813a2