malcolm lear
/
RCCar7
mbed Car
main.cpp@0:6cfc4ab23aac, 2016-10-27 (annotated)
- Committer:
- malcolmlear
- Date:
- Thu Oct 27 13:26:41 2016 +0000
- Revision:
- 0:6cfc4ab23aac
Test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
malcolmlear | 0:6cfc4ab23aac | 1 | #include "mbed.h" |
malcolmlear | 0:6cfc4ab23aac | 2 | |
malcolmlear | 0:6cfc4ab23aac | 3 | PwmOut steering(p21); |
malcolmlear | 0:6cfc4ab23aac | 4 | PwmOut velocity(p22); |
malcolmlear | 0:6cfc4ab23aac | 5 | |
malcolmlear | 0:6cfc4ab23aac | 6 | float vo=0; |
malcolmlear | 0:6cfc4ab23aac | 7 | |
malcolmlear | 0:6cfc4ab23aac | 8 | // Velocity expects -1 (reverse) to +1 (forward) |
malcolmlear | 0:6cfc4ab23aac | 9 | void Velocity(float v) { |
malcolmlear | 0:6cfc4ab23aac | 10 | v=v+1; |
malcolmlear | 0:6cfc4ab23aac | 11 | if (v>=0 && v<=2) { |
malcolmlear | 0:6cfc4ab23aac | 12 | if (vo>=1 && v<1) { // |
malcolmlear | 0:6cfc4ab23aac | 13 | velocity.pulsewidth(0.0014); // this is required to |
malcolmlear | 0:6cfc4ab23aac | 14 | wait(0.1); // |
malcolmlear | 0:6cfc4ab23aac | 15 | velocity.pulsewidth(0.0015); // move into reverse |
malcolmlear | 0:6cfc4ab23aac | 16 | wait(0.1); // |
malcolmlear | 0:6cfc4ab23aac | 17 | } // |
malcolmlear | 0:6cfc4ab23aac | 18 | velocity.pulsewidth(v/2000+0.001); |
malcolmlear | 0:6cfc4ab23aac | 19 | vo=v; |
malcolmlear | 0:6cfc4ab23aac | 20 | } |
malcolmlear | 0:6cfc4ab23aac | 21 | } |
malcolmlear | 0:6cfc4ab23aac | 22 | // Steering expects -1 (left) to +1 (right) |
malcolmlear | 0:6cfc4ab23aac | 23 | void Steering(float s) { |
malcolmlear | 0:6cfc4ab23aac | 24 | s=s+1; |
malcolmlear | 0:6cfc4ab23aac | 25 | if (s>=0 && s<=2) { |
malcolmlear | 0:6cfc4ab23aac | 26 | steering.pulsewidth(s/2000+0.001); |
malcolmlear | 0:6cfc4ab23aac | 27 | } |
malcolmlear | 0:6cfc4ab23aac | 28 | } |
malcolmlear | 0:6cfc4ab23aac | 29 | |
malcolmlear | 0:6cfc4ab23aac | 30 | int main() { |
malcolmlear | 0:6cfc4ab23aac | 31 | velocity.period(0.02); |
malcolmlear | 0:6cfc4ab23aac | 32 | steering.period(0.02); |
malcolmlear | 0:6cfc4ab23aac | 33 | Velocity(0); // initiate the drive motor (this must be done) |
malcolmlear | 0:6cfc4ab23aac | 34 | Steering(0); // centre steering |
malcolmlear | 0:6cfc4ab23aac | 35 | wait(0.5); |
malcolmlear | 0:6cfc4ab23aac | 36 | while(1) { |
malcolmlear | 0:6cfc4ab23aac | 37 | for(int i=0; i<100; i++) { // stop to full forward |
malcolmlear | 0:6cfc4ab23aac | 38 | Velocity(i/100.0); |
malcolmlear | 0:6cfc4ab23aac | 39 | wait(0.1); |
malcolmlear | 0:6cfc4ab23aac | 40 | } |
malcolmlear | 0:6cfc4ab23aac | 41 | for(int i=100; i>-100; i--) { // full forward to full reverse |
malcolmlear | 0:6cfc4ab23aac | 42 | Velocity(i/100.0); |
malcolmlear | 0:6cfc4ab23aac | 43 | wait(0.1); |
malcolmlear | 0:6cfc4ab23aac | 44 | } |
malcolmlear | 0:6cfc4ab23aac | 45 | for(int i=-100; i<0; i++) { // full reverse to stop |
malcolmlear | 0:6cfc4ab23aac | 46 | Velocity(i/100.0); |
malcolmlear | 0:6cfc4ab23aac | 47 | wait(0.1); |
malcolmlear | 0:6cfc4ab23aac | 48 | } |
malcolmlear | 0:6cfc4ab23aac | 49 | for(int i=0; i<100; i++) { // centre to full right |
malcolmlear | 0:6cfc4ab23aac | 50 | Steering(i/100.0); |
malcolmlear | 0:6cfc4ab23aac | 51 | wait(0.1); |
malcolmlear | 0:6cfc4ab23aac | 52 | } |
malcolmlear | 0:6cfc4ab23aac | 53 | for(int i=100; i>-100; i--) { // full right to full left |
malcolmlear | 0:6cfc4ab23aac | 54 | Steering(i/100.0); |
malcolmlear | 0:6cfc4ab23aac | 55 | wait(0.1); |
malcolmlear | 0:6cfc4ab23aac | 56 | } |
malcolmlear | 0:6cfc4ab23aac | 57 | for(int i=-100; i<0; i++) { // full left to centre |
malcolmlear | 0:6cfc4ab23aac | 58 | Steering(i/100.0); |
malcolmlear | 0:6cfc4ab23aac | 59 | wait(0.1); |
malcolmlear | 0:6cfc4ab23aac | 60 | } |
malcolmlear | 0:6cfc4ab23aac | 61 | } |
malcolmlear | 0:6cfc4ab23aac | 62 | } |