Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@6:550027985c6c, 2016-10-13 (annotated)
- Committer:
- csellier
- Date:
- Thu Oct 13 22:01:56 2016 +0000
- Revision:
- 6:550027985c6c
- Parent:
- 5:40033f403d50
- Child:
- 7:5da0ff9752d5
Update Collision Avoidance program only
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kmarangi | 0:65fd20a989e9 | 1 | #include "mbed.h" |
kmarangi | 0:65fd20a989e9 | 2 | #include "Servo.h" |
csellier | 3:581d391d248c | 3 | |
csellier | 3:581d391d248c | 4 | #define DISTANCE 0.45 |
csellier | 3:581d391d248c | 5 | |
csellier | 3:581d391d248c | 6 | |
csellier | 2:0b86e6482e4b | 7 | Serial pc (USBTX, USBRX); // USB serial interface |
csellier | 3:581d391d248c | 8 | |
csellier | 1:8c1e3382b4d7 | 9 | Servo ServoRight(p21); // continuous rotation hobby servo right |
csellier | 1:8c1e3382b4d7 | 10 | Servo ServoLeft(p22); // continuous rotation hobby servo left |
csellier | 3:581d391d248c | 11 | |
csellier | 2:0b86e6482e4b | 12 | PwmOut LEDleft(p23); |
csellier | 2:0b86e6482e4b | 13 | PwmOut LEDright(p24); |
csellier | 3:581d391d248c | 14 | |
csellier | 2:0b86e6482e4b | 15 | AnalogIn IRfront(p15); |
csellier | 2:0b86e6482e4b | 16 | AnalogIn IRleft(p16); |
csellier | 2:0b86e6482e4b | 17 | AnalogIn IRright(p17); |
csellier | 2:0b86e6482e4b | 18 | AnalogIn LDRleft(p18); |
csellier | 2:0b86e6482e4b | 19 | AnalogIn LDRright(p19); |
kmarangi | 0:65fd20a989e9 | 20 | |
kmarangi | 0:65fd20a989e9 | 21 | void init_servo() { |
csellier | 3:581d391d248c | 22 | // calibrate the servos for +/-5ms over +/-45deg |
csellier | 3:581d391d248c | 23 | ServoRight.calibrate(0.0005,45); |
csellier | 3:581d391d248c | 24 | ServoLeft.calibrate(0.0005,45); |
kmarangi | 0:65fd20a989e9 | 25 | } |
kmarangi | 0:65fd20a989e9 | 26 | |
csellier | 3:581d391d248c | 27 | int main() { |
csellier | 3:581d391d248c | 28 | float front; |
csellier | 3:581d391d248c | 29 | float left; |
csellier | 3:581d391d248c | 30 | float right; |
kmarangi | 0:65fd20a989e9 | 31 | |
csellier | 3:581d391d248c | 32 | // set the USB serial interface baud rate |
csellier | 3:581d391d248c | 33 | pc.baud(921600); |
csellier | 3:581d391d248c | 34 | init_servo(); |
kmarangi | 0:65fd20a989e9 | 35 | |
kmarangi | 0:65fd20a989e9 | 36 | while(1) { |
csellier | 3:581d391d248c | 37 | |
csellier | 3:581d391d248c | 38 | // Auto drive |
csellier | 3:581d391d248c | 39 | front = IRfront.read(); |
csellier | 3:581d391d248c | 40 | left = IRleft.read(); |
csellier | 3:581d391d248c | 41 | right = IRright.read(); |
csellier | 3:581d391d248c | 42 | |
csellier | 3:581d391d248c | 43 | if (front > DISTANCE) { |
csellier | 3:581d391d248c | 44 | if (left > DISTANCE) { |
csellier | 5:40033f403d50 | 45 | ServoRight.write(0.5); //turn right |
csellier | 4:c1f9aaf55e8b | 46 | ServoLeft.write(0.4); |
csellier | 3:581d391d248c | 47 | } else { |
csellier | 6:550027985c6c | 48 | ServoRight.write(0.6) // turn left |
csellier | 6:550027985c6c | 49 | ServoLeft.write(0.5) |
csellier | 3:581d391d248c | 50 | } |
csellier | 3:581d391d248c | 51 | } else if (left > DISTANCE) { |
csellier | 3:581d391d248c | 52 | if (right < DISTANCE) { |
csellier | 6:550027985c6c | 53 | ServoRight.write(0.5) // right |
csellier | 6:550027985c6c | 54 | ServoLeft.write(0.4) |
csellier | 3:581d391d248c | 55 | } else { |
csellier | 6:550027985c6c | 56 | ServoRight.write(0.6) // forward |
csellier | 6:550027985c6c | 57 | ServoLeft.write(0.4) |
csellier | 3:581d391d248c | 58 | } |
csellier | 3:581d391d248c | 59 | } |
csellier | 3:581d391d248c | 60 | |
csellier | 3:581d391d248c | 61 | //Turn both LED's on for the line following feature |
csellier | 3:581d391d248c | 62 | LEDleft=1; |
csellier | 3:581d391d248c | 63 | LEDright=1; |
csellier | 3:581d391d248c | 64 | |
csellier | 6:550027985c6c | 65 | // send the servo command to the servos themselves |
csellier | 3:581d391d248c | 66 | ServoRight.write(0.6); // write to the continuous rotation servo1 |
csellier | 3:581d391d248c | 67 | ServoLeft.write(0.4); // write to the continous servo2 |
kmarangi | 0:65fd20a989e9 | 68 | |
csellier | 3:581d391d248c | 69 | } |
kmarangi | 0:65fd20a989e9 | 70 | } |
kmarangi | 0:65fd20a989e9 | 71 | |
kmarangi | 0:65fd20a989e9 | 72 |