Serafeim Perdikis
/
RCCar7
Simple car driving program
main.cpp@0:febb419f633a, 2019-11-08 (annotated)
- Committer:
- serafperd
- Date:
- Fri Nov 08 14:32:06 2019 +0000
- Revision:
- 0:febb419f633a
First
Who changed what in which revision?
User | Revision | Line number | New 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 | } |