for distance sensor

Dependencies:   mbed HCSR04

Committer:
mlosa010
Date:
Fri Nov 15 18:26:05 2019 +0000
Revision:
0:47ec319db65c
working Distance sensor;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mlosa010 0:47ec319db65c 1 #define LENOFBOT 2.5
mlosa010 0:47ec319db65c 2 #define LENOFSENSOR 0.394
mlosa010 0:47ec319db65c 3 HCSR04 mySensor(p26,p13);
mlosa010 0:47ec319db65c 4 Serial pc(USBTX, USBRX);
mlosa010 0:47ec319db65c 5 PwmOut trigger(p24);
mlosa010 0:47ec319db65c 6 PwmOut trigger_b(p23);
mlosa010 0:47ec319db65c 7 InterruptIn echoStart(p13,PullDown);
mlosa010 0:47ec319db65c 8 InterruptIn echoStop(p14,PullDown);
mlosa010 0:47ec319db65c 9 Timer timer;
mlosa010 0:47ec319db65c 10 Timer timer_b;
mlosa010 0:47ec319db65c 11 volatile float front_reading;
mlosa010 0:47ec319db65c 12 volatile float back_sensor;
mlosa010 0:47ec319db65c 13 void start(void){
mlosa010 0:47ec319db65c 14 timer.start();
mlosa010 0:47ec319db65c 15 }
mlosa010 0:47ec319db65c 16 void stop (void){
mlosa010 0:47ec319db65c 17 timer.stop();
mlosa010 0:47ec319db65c 18 front_reading = (float)timer.read()*13504;
mlosa010 0:47ec319db65c 19 timer.reset();
mlosa010 0:47ec319db65c 20 }
mlosa010 0:47ec319db65c 21 void start_back(void){
mlosa010 0:47ec319db65c 22 timer_b.start();
mlosa010 0:47ec319db65c 23
mlosa010 0:47ec319db65c 24 }
mlosa010 0:47ec319db65c 25 void stop_back (void){
mlosa010 0:47ec319db65c 26 timer_b.stop();
mlosa010 0:47ec319db65c 27 back_sensor = (float)timer_b.read()*13480;
mlosa010 0:47ec319db65c 28 timer_b.reset();
mlosa010 0:47ec319db65c 29 }
mlosa010 0:47ec319db65c 30 int main() {
mlosa010 0:47ec319db65c 31 echoStart.rise(&start);
mlosa010 0:47ec319db65c 32 echoStart.fall(&stop);
mlosa010 0:47ec319db65c 33 echoStop.rise(&start_back);
mlosa010 0:47ec319db65c 34 echoStop.fall(&stop_back);
mlosa010 0:47ec319db65c 35 trigger.period(0.06);
mlosa010 0:47ec319db65c 36 int pi[]= {3,1,4,2};
mlosa010 0:47ec319db65c 37 int currentdigit =0;
mlosa010 0:47ec319db65c 38 int front_distance;
mlosa010 0:47ec319db65c 39 int back_distance;
mlosa010 0:47ec319db65c 40 while(1) {
mlosa010 0:47ec319db65c 41 trigger.pulsewidth_us(10);
mlosa010 0:47ec319db65c 42 front_distance = (3*pi[currentdigit])+9;
mlosa010 0:47ec319db65c 43 back_distance= 27-front_distance;
mlosa010 0:47ec319db65c 44
mlosa010 0:47ec319db65c 45 if((front_reading/2)+LENOFBOT+LENOFSENSOR>front_distance){
mlosa010 0:47ec319db65c 46 pc.printf("moving back distance read: %.3f digit: %d\n\r",(front_reading/2)+LENOFBOT+LENOFSENSOR,pi[1]);
mlosa010 0:47ec319db65c 47 if(((back_sensor/2)+LENOFBOT+LENOFSENSOR <= back_distance-0.1||(back_sensor/2)+LENOFBOT+LENOFSENSOR <= back_distance+0.1))
mlosa010 0:47ec319db65c 48 int r =1;
mlosa010 0:47ec319db65c 49 //currentdigit++;
mlosa010 0:47ec319db65c 50 }else if((front_reading/2)+LENOFBOT+LENOFSENSOR<=front_distance){
mlosa010 0:47ec319db65c 51 pc.printf("moving forward distance read: %.3f should be %d\n\r",(front_reading/2)+LENOFBOT+LENOFSENSOR, pi[0]);
mlosa010 0:47ec319db65c 52 if((back_sensor/2)+LENOFBOT+LENOFSENSOR <= back_distance-0.1||(back_sensor/2)+LENOFBOT+LENOFSENSOR <= back_distance+0.1)
mlosa010 0:47ec319db65c 53 int i=1;
mlosa010 0:47ec319db65c 54 //currentdigit++;
mlosa010 0:47ec319db65c 55 }
mlosa010 0:47ec319db65c 56 }
mlosa010 0:47ec319db65c 57 }