Abhishek Deokar
/
Obstacle_Avoidance
example code
main.cpp@95:a82ac1cd5f6a, 2019-11-18 (annotated)
- Committer:
- abdeokar23
- Date:
- Mon Nov 18 17:24:39 2019 +0000
- Revision:
- 95:a82ac1cd5f6a
- Parent:
- 88:bea4f2daa48c
example code
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
abdeokar23 | 95:a82ac1cd5f6a | 1 | #include "mbed.h" |
abdeokar23 | 95:a82ac1cd5f6a | 2 | #include "hcsr04.h" |
abdeokar23 | 95:a82ac1cd5f6a | 3 | |
abdeokar23 | 95:a82ac1cd5f6a | 4 | Serial pc(USBTX,USBRX); |
abdeokar23 | 95:a82ac1cd5f6a | 5 | |
abdeokar23 | 95:a82ac1cd5f6a | 6 | HCSR04 csensor(A0, A1); //Trigger, Echo |
abdeokar23 | 95:a82ac1cd5f6a | 7 | HCSR04 lsensor(A2, A3); //Trigger, Echo |
abdeokar23 | 95:a82ac1cd5f6a | 8 | HCSR04 rsensor(A4, A5); //Trigger, Echo |
abdeokar23 | 95:a82ac1cd5f6a | 9 | |
abdeokar23 | 95:a82ac1cd5f6a | 10 | PwmOut motor_l1(D13); |
abdeokar23 | 95:a82ac1cd5f6a | 11 | PwmOut motor_l2(D12); |
abdeokar23 | 95:a82ac1cd5f6a | 12 | PwmOut motor_r1(D11); |
abdeokar23 | 95:a82ac1cd5f6a | 13 | PwmOut motor_r2(D10); |
abdeokar23 | 95:a82ac1cd5f6a | 14 | |
abdeokar23 | 95:a82ac1cd5f6a | 15 | unsigned int dist; |
abdeokar23 | 95:a82ac1cd5f6a | 16 | |
abdeokar23 | 95:a82ac1cd5f6a | 17 | void initialise() |
abdeokar23 | 95:a82ac1cd5f6a | 18 | { |
abdeokar23 | 95:a82ac1cd5f6a | 19 | motor_l1.write(0); |
abdeokar23 | 95:a82ac1cd5f6a | 20 | motor_r1.write(0); |
abdeokar23 | 95:a82ac1cd5f6a | 21 | } |
mbed_official | 82:abf1b1785bd7 | 22 | |
abdeokar23 | 95:a82ac1cd5f6a | 23 | void forward() |
abdeokar23 | 95:a82ac1cd5f6a | 24 | { |
abdeokar23 | 95:a82ac1cd5f6a | 25 | motor_l1.period_ms(50); |
abdeokar23 | 95:a82ac1cd5f6a | 26 | motor_l1.write(0.75f); |
abdeokar23 | 95:a82ac1cd5f6a | 27 | motor_l2.write(0); |
abdeokar23 | 95:a82ac1cd5f6a | 28 | motor_l2.period_ms(50); |
abdeokar23 | 95:a82ac1cd5f6a | 29 | motor_r1.write(0.75f); |
abdeokar23 | 95:a82ac1cd5f6a | 30 | motor_r2.write(0); |
abdeokar23 | 95:a82ac1cd5f6a | 31 | } |
abdeokar23 | 95:a82ac1cd5f6a | 32 | void stop() |
abdeokar23 | 95:a82ac1cd5f6a | 33 | { |
abdeokar23 | 95:a82ac1cd5f6a | 34 | motor_l1.write(0); |
abdeokar23 | 95:a82ac1cd5f6a | 35 | motor_l2.write(0); |
abdeokar23 | 95:a82ac1cd5f6a | 36 | motor_r1.write(0); |
abdeokar23 | 95:a82ac1cd5f6a | 37 | motor_r2.write(0); |
abdeokar23 | 95:a82ac1cd5f6a | 38 | } |
Jonathan Austin |
0:2757d7abb7d9 | 39 | |
abdeokar23 | 95:a82ac1cd5f6a | 40 | int cping() |
abdeokar23 | 95:a82ac1cd5f6a | 41 | { |
abdeokar23 | 95:a82ac1cd5f6a | 42 | csensor.start(); |
abdeokar23 | 95:a82ac1cd5f6a | 43 | wait_ms(200); |
abdeokar23 | 95:a82ac1cd5f6a | 44 | return(csensor.get_dist_cm()); |
abdeokar23 | 95:a82ac1cd5f6a | 45 | } |
abdeokar23 | 95:a82ac1cd5f6a | 46 | int lping() |
abdeokar23 | 95:a82ac1cd5f6a | 47 | { |
abdeokar23 | 95:a82ac1cd5f6a | 48 | lsensor.start(); |
abdeokar23 | 95:a82ac1cd5f6a | 49 | wait_ms(200); |
abdeokar23 | 95:a82ac1cd5f6a | 50 | return(lsensor.get_dist_cm()); |
abdeokar23 | 95:a82ac1cd5f6a | 51 | } |
abdeokar23 | 95:a82ac1cd5f6a | 52 | int rping() |
abdeokar23 | 95:a82ac1cd5f6a | 53 | { |
abdeokar23 | 95:a82ac1cd5f6a | 54 | rsensor.start(); |
abdeokar23 | 95:a82ac1cd5f6a | 55 | wait_ms(200); |
abdeokar23 | 95:a82ac1cd5f6a | 56 | return(rsensor.get_dist_cm()); |
abdeokar23 | 95:a82ac1cd5f6a | 57 | } |
mbed_official | 88:bea4f2daa48c | 58 | |
Jonathan Austin |
1:846c97078558 | 59 | // main() runs in its own thread in the OS |
mbed_official | 82:abf1b1785bd7 | 60 | int main() |
mbed_official | 82:abf1b1785bd7 | 61 | { |
abdeokar23 | 95:a82ac1cd5f6a | 62 | int cdistance, ldistance, rdistance; //Variable to store distance from an object |
abdeokar23 | 95:a82ac1cd5f6a | 63 | initialise(); |
abdeokar23 | 95:a82ac1cd5f6a | 64 | while (true) |
abdeokar23 | 95:a82ac1cd5f6a | 65 | { |
abdeokar23 | 95:a82ac1cd5f6a | 66 | cdistance = cping(); // ping function |
abdeokar23 | 95:a82ac1cd5f6a | 67 | ldistance = lping(); // ping function |
abdeokar23 | 95:a82ac1cd5f6a | 68 | rdistance = rping(); // ping function |
abdeokar23 | 95:a82ac1cd5f6a | 69 | if (cdistance <20 || ldistance <20 || rdistance <20) |
abdeokar23 | 95:a82ac1cd5f6a | 70 | { |
abdeokar23 | 95:a82ac1cd5f6a | 71 | pc.printf("\n c-cm:%ld, l-cm:%ld, r-cm:%ld\n halting",cdistance, ldistance, rdistance); |
abdeokar23 | 95:a82ac1cd5f6a | 72 | wait_ms(100); |
abdeokar23 | 95:a82ac1cd5f6a | 73 | stop(); |
mbed_official | 88:bea4f2daa48c | 74 | } |
abdeokar23 | 95:a82ac1cd5f6a | 75 | else |
abdeokar23 | 95:a82ac1cd5f6a | 76 | { |
abdeokar23 | 95:a82ac1cd5f6a | 77 | pc.printf("\n no object"); |
abdeokar23 | 95:a82ac1cd5f6a | 78 | forward(); |
abdeokar23 | 95:a82ac1cd5f6a | 79 | wait_ms(100); |
abdeokar23 | 95:a82ac1cd5f6a | 80 | } |
Jonathan Austin |
0:2757d7abb7d9 | 81 | } |
abdeokar23 | 95:a82ac1cd5f6a | 82 | } |