Lu-Hsuan Chen
/
autocar_3sensor_mbed
An auto car with 3 IR sensors.
main.cpp@12:e95ed962be7a, 2018-06-30 (annotated)
- 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?
User | Revision | Line number | New 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 | } |