An auto car with 3 IR sensors.

Dependencies:   Ping

Committer:
cudaChen
Date:
Sat Jun 30 13:08:00 2018 +0000
Revision:
12:e95ed962be7a
Parent:
11:3e9d4c345ebd
Child:
13:87cd0ae37e06
create library-like feature (unfinished)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cudaChen 0:190c4784b6f4 1 #include "mbed.h"
cudaChen 0:190c4784b6f4 2
cudaChen 12:e95ed962be7a 3 #include "autocar.h"
cudaChen 12:e95ed962be7a 4
cudaChen 7:4edd049209a6 5 // trigger button and triggered LED
cudaChen 0:190c4784b6f4 6 DigitalOut led1(LED1);
cudaChen 7:4edd049209a6 7 DigitalIn pb(PC_13);
cudaChen 7:4edd049209a6 8 int lastButtonState = 0;
cudaChen 7:4edd049209a6 9 bool ledState = false;
cudaChen 0:190c4784b6f4 10
cudaChen 0:190c4784b6f4 11 // main() runs in its own thread in the OS
cudaChen 0:190c4784b6f4 12 int main()
cudaChen 0:190c4784b6f4 13 {
cudaChen 0:190c4784b6f4 14 bool left = false;
cudaChen 0:190c4784b6f4 15 bool middle = false;
cudaChen 0:190c4784b6f4 16 bool right = false;
cudaChen 4:76b9213714cc 17
cudaChen 2:e0a553b64315 18 // here I use 500 as threshold
cudaChen 2:e0a553b64315 19 int threshold = 500;
cudaChen 0:190c4784b6f4 20
cudaChen 10:a14380381d86 21 // set two motors to stop
cudaChen 10:a14380381d86 22 init();
cudaChen 10:a14380381d86 23
cudaChen 4:76b9213714cc 24 while (true) {
cudaChen 7:4edd049209a6 25 int reading1 = pb.read();
cudaChen 10:a14380381d86 26
cudaChen 7:4edd049209a6 27 if(reading1 != lastButtonState) {
cudaChen 7:4edd049209a6 28 wait_ms(20);
cudaChen 10:a14380381d86 29
cudaChen 7:4edd049209a6 30 int reading2 = pb.read();
cudaChen 10:a14380381d86 31
cudaChen 7:4edd049209a6 32 if(reading2 == reading1) {
cudaChen 7:4edd049209a6 33 lastButtonState = reading2;
cudaChen 7:4edd049209a6 34 }
cudaChen 10:a14380381d86 35
cudaChen 7:4edd049209a6 36 if(lastButtonState == 1) {
cudaChen 7:4edd049209a6 37 ledState = !ledState;
cudaChen 7:4edd049209a6 38 }
cudaChen 7:4edd049209a6 39 }
cudaChen 10:a14380381d86 40
cudaChen 7:4edd049209a6 41 led1.write(ledState);
cudaChen 10:a14380381d86 42
cudaChen 7:4edd049209a6 43 if(ledState) {
cudaChen 10:a14380381d86 44 // not on track: > 500
cudaChen 10:a14380381d86 45 // on track (black): < 500
cudaChen 11:3e9d4c345ebd 46 readIR(&left, &middle, &right, threshold);
cudaChen 0:190c4784b6f4 47
cudaChen 10:a14380381d86 48 driveMotor(left, middle, right);
cudaChen 7:4edd049209a6 49 }
cudaChen 0:190c4784b6f4 50 }
cudaChen 0:190c4784b6f4 51 }