mbed Car

Dependencies:   mbed

Committer:
malcolmlear
Date:
Thu Oct 27 13:26:41 2016 +0000
Revision:
0:6cfc4ab23aac
Test

Who changed what in which revision?

UserRevisionLine numberNew 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 }