Lu-Hsuan Chen
/
autocar_3sensor_mbed
An auto car with 3 IR sensors.
Diff: main.cpp
- Revision:
- 15:1d440beb24d3
- Parent:
- 13:87cd0ae37e06
- Child:
- 16:3202c73881a3
--- a/main.cpp Sun Jul 01 13:12:37 2018 +0000 +++ b/main.cpp Thu Jul 05 09:33:33 2018 +0000 @@ -2,12 +2,24 @@ #include "autocar.h" -// trigger button and triggered LED -DigitalOut led1(LED1); -DigitalIn pb(PC_13); +DigitalOut led1(LED1); // LED indicating the car is running +DigitalIn pb(PC_13); // triggter button int lastButtonState = 0; bool ledState = false; +// output used for controlling motors +DigitalOut M1_enable(D6); +DigitalOut M2_enable(D5); +DigitalOut M1_in1(D3); // connected to left wheel +DigitalOut M1_in2(D2); // connected to left wheel +DigitalOut M2_in3(D1); // connected to right wheel +DigitalOut M2_in4(D0); // connected to right wheel + +// input used for IR sensors +extern AnalogIn leftIR(A1); // left sensor +extern AnalogIn middleIR(A3); // middle sensor +extern AnalogIn rightIR(A5); // right sensor + // PID control params int values = 0; float Kp = 0.2, Ki = 0.0001, Kd = 1; @@ -15,9 +27,9 @@ // main() runs in its own thread in the OS int main() { - /*bool left = false; + bool left = false; bool middle = false; - bool right = false;*/ + bool right = false; // here I use 500 as threshold int threshold = 500; @@ -47,11 +59,11 @@ if(ledState) { // not on track: > 500 // on track (black): < 500 - //readIR(&left, &middle, &right, threshold); - values = readIRValues(); // read IR values + readIR(&left, &middle, &right, threshold); + //values = readIRValues(); // read IR values - //driveMotor(left, middle, right); - driveMotorPID(values, Kp, Ki, Kd); + driveMotor(left, middle, right); + //driveMotorPID(values, Kp, Ki, Kd); } } }