Lu-Hsuan Chen
/
autocar_3sensor_mbed
An auto car with 3 IR sensors.
Diff: main.cpp
- Revision:
- 18:d7509436e9ef
- Parent:
- 16:3202c73881a3
- Child:
- 19:d06f5a3ed0bc
diff -r 440e348cdcb4 -r d7509436e9ef main.cpp --- a/main.cpp Wed Jul 18 09:17:11 2018 +0000 +++ b/main.cpp Wed Jul 18 12:38:54 2018 +0000 @@ -1,5 +1,6 @@ #include "mbed.h" +#include "Ping.h" #include "autocar.h" DigitalOut led1(LED1); // LED indicating the car is running @@ -20,8 +21,11 @@ AnalogIn middleIR(A3); // middle sensor AnalogIn rightIR(A5); // right sensor +// input used for ultrasonic sensors +Ping ultrasonic(D13); + // PID control params -int values = 0; +float values = 0; float Kp = 0.2, Ki = 0.0001, Kd = 1; // main() runs in its own thread in the OS @@ -30,9 +34,10 @@ bool left = false; bool middle = false; bool right = false; + bool hasObstacle = false; - // here I use 500 as threshold - int threshold = 500; + int threshold = 500; // here I use 500 as threshold of IR sensor + int range = 30; // range of obstacle (cm) // set two motors to stop init(); @@ -59,10 +64,12 @@ if(ledState) { // not on track: > 500 // on track (black): < 500 - readIR(&left, &middle, &right, threshold); + //readIR(&left, &middle, &right, threshold); + readSensor(&left, &middle, &right, &hasObstacle, threshold, range); //values = readIRValues(); // read IR values - driveMotor(left, middle, right); + //driveMotor(left, middle, right); + driveMotor(left, middle, right, hasObstacle); //driveMotorPID(values, Kp, Ki, Kd); } }