An auto car with 3 IR sensors.

Dependencies:   Ping

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);
         }
     }