tianyun ma / Mbed 2 deprecated mecanum_4

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
himarsmty
Date:
Mon May 07 06:57:22 2018 +0000
Commit message:
a

Changed in this revision

Motor_3/Motor_3.cpp Show annotated file Show diff for this revision Revisions of this file
Motor_3/Motor_3.h 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.bld Show annotated file Show diff for this revision Revisions of this file
mecanum_4.cpp Show annotated file Show diff for this revision Revisions of this file
mecanum_4.h Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Motor_3/Motor_3.cpp	Mon May 07 06:57:22 2018 +0000
@@ -0,0 +1,60 @@
+#include "Motor_3.h"
+#include "mbed.h"
+#define HIGH 1
+#define LOW 0
+
+//extern Serial pc;
+Motor_3::Motor_3(PinName dia1,PinName dia2,PinName pwa):
+    _dia1(dia1),_dia2(dia2),_pwa(pwa),_pwmout(0)
+{
+    //init
+    DigitalOut pda1(_dia1,LOW);
+    DigitalOut pda2(_dia2,LOW);
+}
+
+void Motor_3::mv(double speed)
+{
+//    speed=speed/100*20/1000;
+//    pc.printf("speed=%lf\n",speed);
+
+    if(speed>0)
+    {
+         double temp_pwmout=6*pow(10.0,-10.0)*pow(speed,4.0)-4*pow(10.0,-7.0)*pow(speed,3.0)+3*pow(10.0,-5.0)*pow(speed,2.0)+0.0241*speed+0.0794;//拟合
+//         pc.printf("&&&temp_pwmout:%lf\n",temp_pwmout);
+        int pwmout=(int)temp_pwmout;
+         DigitalOut mydia1(_dia1,HIGH);
+         DigitalOut mydia2(_dia2,LOW);
+//        _pwmout=pwmout;
+        _pwmout=20;
+        PwmOut mypwa(_pwa);
+        mypwa.period_ms(20);
+        mypwa.pulsewidth_ms(_pwmout);
+    }
+    else if (speed<0)
+    {
+       
+        double temp_pwmout=6*pow(10.0,-10.0)*pow(speed,4.0)-4*pow(10.0,-7.0)*pow(speed,3.0)+3*pow(10.0,-5.0)*pow(speed,2.0)+0.0241*speed+0.0794;//拟合
+//        pc.printf("temp_pwmout:%lf\n",temp_pwmout);
+        int pwmout=(int)temp_pwmout;        
+        speed=abs(speed);
+        DigitalOut mydia1(_dia1,LOW);
+        DigitalOut mydia2(_dia2,HIGH);
+//        _pwmout=pwmout;
+        _pwmout=10;
+//        pc.printf("%d\n",_pwmout);
+        PwmOut mypwa(_pwa);
+        mypwa.period_ms(20);
+        mypwa.pulsewidth_ms(_pwmout); 
+    }
+    else 
+    {
+        speed=abs(speed);
+        DigitalOut mydia1(_dia1,LOW);
+        DigitalOut mydia2(_dia2,LOW);
+        _pwmout=0.0;
+        PwmOut mypwa(_pwa);
+        mypwa.period_ms(20);
+        mypwa.pulsewidth(_pwmout); 
+    }
+        
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Motor_3/Motor_3.h	Mon May 07 06:57:22 2018 +0000
@@ -0,0 +1,20 @@
+#ifndef MOTOR_3_H_
+#define MOTOR_3_H_
+#include "mbed.h"
+
+DigitalOut mydia1(PinName a1,int b1);
+DigitalOut mydia2(PinName a2,int b2);
+PwmOut mypwa(PinName pa);
+
+
+class Motor_3{
+public:
+    Motor_3(PinName dia1,PinName dia2,PinName pwa);
+    void mv(double speed);
+    int _pwmout;
+protected:
+    PinName _dia1;
+    PinName _dia2;
+    PinName _pwa;
+};
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon May 07 06:57:22 2018 +0000
@@ -0,0 +1,33 @@
+#include "mbed.h"
+#include "mecanum_4.h"
+
+int main() {
+    mecanum_4 mecanum;
+
+//    mecanum.mv_x(100);
+//    wait(5);
+//    mecanum.mv_x(-100);
+//    wait(5);
+//    mecanum.mv_y(100);
+//    wait(5);
+//    mecanum.mv_y(-100);
+//    wait(5);
+//    mecanum.rotate(100);
+//    wait(5);
+//    mecanum.rotate(-100);
+//    wait(5);
+//    mecanum.r_ob(100);
+//    wait(5);
+//    mecanum.r_ob(-100);
+//    wait(5);
+//    mecanum.r_ob(100);
+//    wait(5);
+//    mecanum.i_ob(-100);
+//    wait(5);
+    mecanum.any_degree(45,5);
+    mecanum.any_degree(135,5);
+    mecanum.any_degree(180,5);
+    mecanum.any_degree(225,5);
+    mecanum.any_degree(315,5);
+}
+ 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Mon May 07 06:57:22 2018 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/5aab5a7997ee
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mecanum_4.cpp	Mon May 07 06:57:22 2018 +0000
@@ -0,0 +1,67 @@
+#include "mecanum_4.h"
+
+//four motors
+Motor_3 front_left(PB_3,PB_4,PB_1);
+Motor_3 front_right(PA_12,PA_15,PB_0);
+Motor_3 back_left(PB_13,PB_12,PA_6);
+Motor_3 back_right(PB_15,PB_14,PA_7); 
+
+void mecanum_4::mv_x(float speed)
+{
+    front_left.mv(speed);   front_right.mv(speed);
+    back_left.mv(speed);    back_right.mv(speed);
+}
+void mecanum_4::mv_y(float speed)
+{
+    float speed1=-speed; 
+    front_left.mv(speed1);   front_right.mv(speed);
+    back_left.mv(speed);    back_right.mv(speed1);
+}
+void mecanum_4::rotate(float speed)
+{
+    float speed1=-speed;
+    front_left.mv(speed1);   front_right.mv(speed);
+    back_left.mv(speed1);    back_right.mv(speed);
+}
+void mecanum_4::r_ob(float speed)
+{
+    front_left.mv(speed);   front_right.mv(0);
+    back_left.mv(0);    back_right.mv(speed);        
+}
+void mecanum_4::i_ob(float speed)
+{
+    front_left.mv(0);   front_right.mv(speed);
+    back_left.mv(speed);    back_right.mv(0);        
+}
+void mecanum_4::any_degree(float degree,float time)
+{
+    if(degree>=0&&degree<=90)
+    {
+            float degree1=(-degree)/90*200+100;
+            front_left.mv(100);   front_right.mv(degree1);
+            back_left.mv(degree1);    back_right.mv(100);     
+    }   
+    else if(degree>=90&&degree<=180)
+    {
+            float degree1=(-degree)/90*200+300;
+            front_left.mv(degree1);   front_right.mv(-100);
+            back_left.mv(-100);    back_right.mv(degree1);  
+    }
+    else if(degree>=180&&degree<=270)
+    {
+            float degree1=degree/90*200-500;
+            front_left.mv(-100);   front_right.mv(degree1);
+            back_left.mv(degree1);    back_right.mv(-100);  
+    }
+    else if(degree>=270&&degree<=360)
+    {
+            float degree1=degree/90*200-700;
+            front_left.mv(degree1);   front_right.mv(100);
+            back_left.mv(100);    back_right.mv(degree1);  
+    }
+    wait(time);
+    front_left.stop();
+    front_right.stop();
+    back_left.stop();
+    back_right.stop();
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mecanum_4.h	Mon May 07 06:57:22 2018 +0000
@@ -0,0 +1,23 @@
+#ifndef MECANUM_4_H_
+#define MECANUM_4_H_
+#include "Motor_3.h"
+#include "mbed.h"
+
+
+class mecanum_4
+{
+public:
+//    mecanum_4:Motor_3 front_left(PB_3,PB_4,PB_1) {}
+//    mecanum_4:Motor_3 front_right(PA_12,PA_15,PB_0) {}
+//    mecanum_4:Motor_3 back_left(PB_13,PB_12,PA_6) {}
+//    mecanum_4:Motor_3 back_right(PB_15,PB_14,PA_7) {} 
+    void mv_x(float speed);//x
+    void mv_y(float speed);//y
+    void rotate(float speed);//rotate
+    void r_ob(float speed);//正斜向
+    void i_ob(float speed);//反斜向
+    void any_degree(float degree,float time);
+private:
+
+};
+#endif