taiyou komazawa / CtrlMD

Dependencies:   MotorDriver

Committer:
Komazawa_sun
Date:
Fri Sep 08 03:31:18 2017 +0000
Revision:
0:0f4170f7118a
????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Komazawa_sun 0:0f4170f7118a 1 #include "CtrlMD.h"
Komazawa_sun 0:0f4170f7118a 2
Komazawa_sun 0:0f4170f7118a 3 CtrlMD::CtrlMD(MotorDriver *_MD, double _inval, double _err)
Komazawa_sun 0:0f4170f7118a 4 : inval(_inval), err(_err), current_pwm(0.0)
Komazawa_sun 0:0f4170f7118a 5 {
Komazawa_sun 0:0f4170f7118a 6 MD = _MD;
Komazawa_sun 0:0f4170f7118a 7 driving_interval.attach(this, &CtrlMD::driving, inval);
Komazawa_sun 0:0f4170f7118a 8 }
Komazawa_sun 0:0f4170f7118a 9
Komazawa_sun 0:0f4170f7118a 10 void CtrlMD::reform_inval(double _inval)
Komazawa_sun 0:0f4170f7118a 11 {
Komazawa_sun 0:0f4170f7118a 12 inval = _inval;
Komazawa_sun 0:0f4170f7118a 13 }
Komazawa_sun 0:0f4170f7118a 14
Komazawa_sun 0:0f4170f7118a 15 void CtrlMD::drive(double _pwm)
Komazawa_sun 0:0f4170f7118a 16 {
Komazawa_sun 0:0f4170f7118a 17 target_pwm = _pwm;
Komazawa_sun 0:0f4170f7118a 18 //printf("%f,",current_pwm);
Komazawa_sun 0:0f4170f7118a 19 }
Komazawa_sun 0:0f4170f7118a 20
Komazawa_sun 0:0f4170f7118a 21
Komazawa_sun 0:0f4170f7118a 22
Komazawa_sun 0:0f4170f7118a 23 void CtrlMD::driving(){
Komazawa_sun 0:0f4170f7118a 24 if(fabs(target_pwm - current_pwm) > err){
Komazawa_sun 0:0f4170f7118a 25 if(target_pwm < current_pwm){
Komazawa_sun 0:0f4170f7118a 26 current_pwm -= err;
Komazawa_sun 0:0f4170f7118a 27 } else {
Komazawa_sun 0:0f4170f7118a 28 current_pwm += err;
Komazawa_sun 0:0f4170f7118a 29 }
Komazawa_sun 0:0f4170f7118a 30 }
Komazawa_sun 0:0f4170f7118a 31 MD->drive(current_pwm);
Komazawa_sun 0:0f4170f7118a 32 driving_interval.attach(this, &CtrlMD::driving, inval);
Komazawa_sun 0:0f4170f7118a 33 }