example code

Dependencies:   mbed HCSR04

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?

UserRevisionLine numberNew 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 }