Dependencies:   mbed SpeedController2_25 ros_lib_kinetic

Revision:
0:6db935b161f8
Child:
1:0e8ec231cb2f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Oct 09 11:19:20 2019 +0000
@@ -0,0 +1,54 @@
+//CAN通信で受け取った(double)rotate‗1~rotate‗3に対し、実際に回転数制御を行う
+#include "mbed.h"
+#include "EC.h" //Encoderライブラリをインクルード
+#include "SpeedController.h"    //SpeedControlライブラリをインクルード
+#define RESOLUTION 512  //分解能
+//#define BASIC_SPEED 1   //動確用
+//#define TEST_DUTY 0.3   //動確用
+
+
+Ec4multi EC_1(p15,p16,RESOLUTION);
+Ec4multi EC_2(p17,p18,RESOLUTION);
+Ec4multi EC_3(p19,p20,RESOLUTION);
+
+SpeedControl motor_1(p21,p22,50,EC_1);
+SpeedControl motor_2(p23,p24,50,EC_2);
+SpeedControl motor_3(p25,p26,50,EC_3);
+
+Ticker motor_tick;  //角速度計算用ticker
+Serial pc(USBTX,USBRX);
+
+
+int main()
+{
+    motor_1.period_us(50);
+    motor_2.period_us(50);
+    motor_3.period_us(50);
+
+    motor_1.setEquation(0.322,0.08,0,0.0100);    //求めたC,Dの値を設定
+    motor_2.setEquation(0.0302,0.0755,-0.0241,0.1301);    //求めたC,Dの値を設定
+    motor_3.setEquation(0.0302,0.1500,-0.0301,0.2000);    //求めたC,Dの値を設定
+
+    motor_1.setPDparam(0,0.0);  //PIDの係数を設定
+    motor_2.setPDparam(0,0.0);  //PIDの係数を設定
+    motor_3.setPDparam(0,0.0);  //PIDの係数を設定
+
+    int kai=0;
+    double rotate_1=0,rotate_2=0,rotate_3=0;
+
+    while(1) {
+        if(rotate_1==0) motor_1.stop();
+        else motor_1.Sc(rotate_1);
+        if(rotate_2==0) motor_2.stop();
+        else motor_2.Sc(rotate_2);
+        if(rotate_3==0) motor_3.stop();
+        else motor_3.Sc(rotate_3);
+
+        if(kai>=4) {
+            //printf("\r\n");
+            printf("target:%.2f,%.2f.%.2f  ",rotate_1,rotate_2,rotate_3);
+            printf("omega_=%.2f,%.2f,%.2f \r\n",EC_1.getOmega(),EC_2.getOmega(),EC_3.getOmega());
+            kai=0;
+        }
+    }
+}
\ No newline at end of file