Ultrasonic Sensor

Dependencies:   HCSR04

Committer:
TzuChingChen
Date:
Sat Aug 14 13:54:28 2021 +0000
Revision:
0:a35b696aeb52
Ultrasonic Sensor;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TzuChingChen 0:a35b696aeb52 1 #include "mbed.h"
TzuChingChen 0:a35b696aeb52 2 #include "hcsr04.h"
TzuChingChen 0:a35b696aeb52 3
TzuChingChen 0:a35b696aeb52 4 Serial pc(PA_2, PA_15, 115200);
TzuChingChen 0:a35b696aeb52 5
TzuChingChen 0:a35b696aeb52 6 HCSR04 usensor(PA_8,PA_11);
TzuChingChen 0:a35b696aeb52 7 AnalogOut Distance_out(A3);
TzuChingChen 0:a35b696aeb52 8
TzuChingChen 0:a35b696aeb52 9 unsigned int dist;
TzuChingChen 0:a35b696aeb52 10 unsigned int time_us;
TzuChingChen 0:a35b696aeb52 11 float dist_mm;
TzuChingChen 0:a35b696aeb52 12 float dist_ratio;
TzuChingChen 0:a35b696aeb52 13 float dist_ratio_last;
TzuChingChen 0:a35b696aeb52 14 float dist_ratio_fil;
TzuChingChen 0:a35b696aeb52 15 const float height_max = 300; //unit: mm
TzuChingChen 0:a35b696aeb52 16 const float height_min = 50; //unit: mm
TzuChingChen 0:a35b696aeb52 17
TzuChingChen 0:a35b696aeb52 18 int main()
TzuChingChen 0:a35b696aeb52 19 {
TzuChingChen 0:a35b696aeb52 20 while(1) {
TzuChingChen 0:a35b696aeb52 21 usensor.start();
TzuChingChen 0:a35b696aeb52 22 dist=usensor.get_dist_cm();
TzuChingChen 0:a35b696aeb52 23 time_us=usensor.get_pulse_us();
TzuChingChen 0:a35b696aeb52 24 dist_mm = 346.0f*time_us/2000.0f;
TzuChingChen 0:a35b696aeb52 25
TzuChingChen 0:a35b696aeb52 26 // pc.printf("cm:%d\n",dist );
TzuChingChen 0:a35b696aeb52 27 // pc.printf("us:%d\n",time_us );
TzuChingChen 0:a35b696aeb52 28 pc.printf("%.3f\n\r",dist_mm );
TzuChingChen 0:a35b696aeb52 29
TzuChingChen 0:a35b696aeb52 30 dist_ratio = (dist_mm - height_min)/(height_max - height_min);
TzuChingChen 0:a35b696aeb52 31 if (dist_ratio > 2.0f) {dist_ratio = dist_ratio_last;}
TzuChingChen 0:a35b696aeb52 32 dist_ratio_fil = (1.0f-0.03f)*dist_ratio_fil + 0.03f*dist_ratio;
TzuChingChen 0:a35b696aeb52 33
TzuChingChen 0:a35b696aeb52 34 if (dist_ratio < 1.0f && dist_ratio > 0.0f) {
TzuChingChen 0:a35b696aeb52 35 Distance_out = dist_ratio;
TzuChingChen 0:a35b696aeb52 36 } else if (dist_ratio > 1.0f) {
TzuChingChen 0:a35b696aeb52 37 Distance_out = 1.0f;
TzuChingChen 0:a35b696aeb52 38 } else {
TzuChingChen 0:a35b696aeb52 39 Distance_out = 0.0f;
TzuChingChen 0:a35b696aeb52 40 }
TzuChingChen 0:a35b696aeb52 41 dist_ratio_last = dist_ratio;
TzuChingChen 0:a35b696aeb52 42 // pc.printf("%3.3f,%3.3f\n\r", dist_ratio, dist_ratio_fil );
TzuChingChen 0:a35b696aeb52 43 }
TzuChingChen 0:a35b696aeb52 44 }