Simple car driving program

Dependencies:   mbed

Committer:
serafperd
Date:
Fri Nov 08 14:32:06 2019 +0000
Revision:
0:febb419f633a
First

Who changed what in which revision?

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