Control of motors
Dependencies: MODSERIAL QEI mbed
Diff: main.cpp
- Revision:
- 0:2d34e3627dae
- Child:
- 1:941f4059c0de
diff -r 000000000000 -r 2d34e3627dae main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Sep 28 09:08:18 2018 +0000 @@ -0,0 +1,44 @@ +#include "mbed.h" +#include "QEI.h" +#include "math.h" + +DigitalOut DirectionPin1(D4); +DigitalOut DirectionPin2(D6); +PwmOut PwmPin1(D5); +PwmOut PwmPin2(D7); +AnalogIn potmeter1(A0); +AnalogIn potmeter2(A1); +Ticker TickerReadPots; + +volatile float Duty1; +volatile float Duty2; +volatile float MotorSignal1; +volatile float MotorSignal2; + +void ReadPots(void) +{ + Duty1 = potmeter1.read(); // read value potentiometer 1 + Duty2 = potmeter2.read(); // read value potentiometer 2 + + MotorSignal1 = 2*Duty1 - 1; //scaling potmeter to motor control signal [0 - 1] --> [(-1) - 1] + MotorSignal2 = 2*Duty2 - 1; +} + +int main() +{ + PwmPin1.period_us(60); // 16.66667 kHz (default period is too slow!) + TickerReadPots.attach(&ReadPots,0.05); // every 50 milli seconds. + + while (true) + { + // motor 1 + DirectionPin1 = MotorSignal1 > 0.0f; //either true or false, CW or CCW + PwmPin1 = fabs(MotorSignal1); //pwm duty cycle can only be positive, floating point absolute value + + // motor 2 + DirectionPin2 = MotorSignal2 > 0.0f; + PwmPin2 = fabs(MotorSignal2); + + wait(0.01); //Do while loop a hundred times per second. + } +} \ No newline at end of file