Aaron Berk
/
SimpleRover
A simple robot that drives forward a set number of pulses at a set PWM speed.
main.cpp@0:7f8bf6df6c7b, 2010-09-10 (annotated)
- Committer:
- aberk
- Date:
- Fri Sep 10 13:22:56 2010 +0000
- Revision:
- 0:7f8bf6df6c7b
Version 1.0
Who changed what in which revision?
User | Revision | Line number | New 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 | } |