Curtis Sellier / Mbed 2 deprecated Project_Car_Curtis_Non_Tested

Dependencies:   Servo mbed

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?

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