Control an H-Bridge using a PwmOut (enable) and two DigitalOuts (direction select)
Fork of Motor by
Diff: MotorR.cpp
- Revision:
- 9:9b00a28bc790
diff -r d192b38e0d5c -r 9b00a28bc790 MotorR.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MotorR.cpp Fri May 15 13:44:38 2015 +0000 @@ -0,0 +1,43 @@ +#include "MotorR.h" +#include "mbed.h" + +MotorR::MotorR(PinName pwm, PinName fwd, PinName rev, PinName stby) : +_pwm(pwm), _fwd(fwd), _rev(rev), _stdby(stby)//, speedControl(K, Ti, Td, itv)//, encoder(CH_A, CH_B, NC, pPerRev) +{ + + // Set initial condition of PWM + _pwm.period(0.001); + _pwm = 0; + _stdby = 1; + // Initial condition of output enables + _fwd = 0; + _rev = 0; + + //PID config + //speedControl.setInputLimits(0, 1); + //speedControl.setOutputLimits(0, 1); + //speedControl.setMode(AUTO); + +} + +void MotorR::speed(float speed) { + +/*PID do enkoderow i utrzymywania stalej predkosci*/ +/* + if (speed != set_speed){ + speedControl.setSetPoint(speed); + set_speed = speed; + } + + pulses = encoder.getPulses(); + curr_speed = (pulses-prev_pulses) / max_pulse_rate; + prev_pulses = pulses; + + speedControl.setProcessValue(curr_speed); + speed = speedControl.compute(); +*/ + + _fwd = (speed > 0.0); + _rev = (speed < 0.0); + _pwm = abs(speed); +}