Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 0:b7d3adaffc0a, committed 2018-05-07
- Comitter:
- himarsmty
- Date:
- Mon May 07 06:57:22 2018 +0000
- Commit message:
- a
Changed in this revision
diff -r 000000000000 -r b7d3adaffc0a Motor_3/Motor_3.cpp
--- /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);
+ }
+
+}
diff -r 000000000000 -r b7d3adaffc0a Motor_3/Motor_3.h
--- /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
diff -r 000000000000 -r b7d3adaffc0a main.cpp
--- /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
diff -r 000000000000 -r b7d3adaffc0a mbed.bld --- /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
diff -r 000000000000 -r b7d3adaffc0a mecanum_4.cpp
--- /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&°ree<=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&°ree<=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&°ree<=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&°ree<=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
diff -r 000000000000 -r b7d3adaffc0a mecanum_4.h
--- /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