A simple robot that drives forward a set number of pulses at a set PWM speed.

Dependencies:   mbed Motor QEI

Committer:
aberk
Date:
Fri Sep 10 13:22:56 2010 +0000
Revision:
0:7f8bf6df6c7b
Version 1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
aberk 0:7f8bf6df6c7b 1 /**
aberk 0:7f8bf6df6c7b 2 * Drive a robot forwards or backwards by supplying a PWM signal to
aberk 0:7f8bf6df6c7b 3 * H-bridges connected to the motors.
aberk 0:7f8bf6df6c7b 4 */
aberk 0:7f8bf6df6c7b 5
aberk 0:7f8bf6df6c7b 6 #include "Motor.h"
aberk 0:7f8bf6df6c7b 7 #include "QEI.h"
aberk 0:7f8bf6df6c7b 8
aberk 0:7f8bf6df6c7b 9 #define PULSES_PER_REVOLUTION 624
aberk 0:7f8bf6df6c7b 10
aberk 0:7f8bf6df6c7b 11 Motor leftMotor(p21, p20, p19); //pwm, inB, inA
aberk 0:7f8bf6df6c7b 12 Motor rightMotor(p22, p17, p18); //pwm, inA, inB
aberk 0:7f8bf6df6c7b 13 QEI leftQei(p29, p30, NC, 624); //chanA, chanB, index, ppr
aberk 0:7f8bf6df6c7b 14 QEI rightQei(p27, p28, NC, 624); //chanB, chanA, index, ppr
aberk 0:7f8bf6df6c7b 15
aberk 0:7f8bf6df6c7b 16 int main() {
aberk 0:7f8bf6df6c7b 17
aberk 0:7f8bf6df6c7b 18 leftMotor.period(0.00005); //Set motor PWM periods to 20KHz.
aberk 0:7f8bf6df6c7b 19 rightMotor.period(0.00005);
aberk 0:7f8bf6df6c7b 20
aberk 0:7f8bf6df6c7b 21 int leftPulses = 0; //How far the left wheel has travelled.
aberk 0:7f8bf6df6c7b 22 int rightPulses = 0; //How far the right wheel has travelled.
aberk 0:7f8bf6df6c7b 23 int distance = 6000; //Number of pulses to travel.
aberk 0:7f8bf6df6c7b 24
aberk 0:7f8bf6df6c7b 25 wait(5); //Wait a few seconds before we start moving.
aberk 0:7f8bf6df6c7b 26
aberk 0:7f8bf6df6c7b 27 leftMotor.speed(0.4);
aberk 0:7f8bf6df6c7b 28 rightMotor.speed(0.4);
aberk 0:7f8bf6df6c7b 29
aberk 0:7f8bf6df6c7b 30 while((leftPulses < distance) || (rightPulses < distance)){
aberk 0:7f8bf6df6c7b 31
aberk 0:7f8bf6df6c7b 32 leftPulses = leftQei.getPulses();
aberk 0:7f8bf6df6c7b 33 rightPulses = rightQei.getPulses();
aberk 0:7f8bf6df6c7b 34
aberk 0:7f8bf6df6c7b 35 }
aberk 0:7f8bf6df6c7b 36
aberk 0:7f8bf6df6c7b 37 leftMotor.brake();
aberk 0:7f8bf6df6c7b 38 rightMotor.brake();
aberk 0:7f8bf6df6c7b 39
aberk 0:7f8bf6df6c7b 40 }