Ultrasonic Sensor

Dependencies:   HCSR04

main.cpp

Committer:
TzuChingChen
Date:
2021-08-14
Revision:
0:a35b696aeb52

File content as of revision 0:a35b696aeb52:

#include "mbed.h"
#include "hcsr04.h"

Serial pc(PA_2, PA_15, 115200);

HCSR04  usensor(PA_8,PA_11);
AnalogOut Distance_out(A3);

unsigned int dist;
unsigned int time_us;
float dist_mm;
float dist_ratio;
float dist_ratio_last;
float dist_ratio_fil;
const float height_max = 300; //unit: mm
const float height_min = 50; //unit: mm

int main()
{
    while(1) {
        usensor.start();
        dist=usensor.get_dist_cm();
        time_us=usensor.get_pulse_us();
        dist_mm = 346.0f*time_us/2000.0f;
        
//        pc.printf("cm:%d\n",dist );
//        pc.printf("us:%d\n",time_us );
        pc.printf("%.3f\n\r",dist_mm );

        dist_ratio = (dist_mm - height_min)/(height_max - height_min);
        if (dist_ratio > 2.0f) {dist_ratio = dist_ratio_last;}
        dist_ratio_fil = (1.0f-0.03f)*dist_ratio_fil + 0.03f*dist_ratio;
        
        if (dist_ratio < 1.0f && dist_ratio > 0.0f) {
            Distance_out = dist_ratio;
        } else if (dist_ratio > 1.0f) {
            Distance_out = 1.0f;
        } else {
            Distance_out = 0.0f;
        }
        dist_ratio_last = dist_ratio;
//        pc.printf("%3.3f,%3.3f\n\r", dist_ratio, dist_ratio_fil );
    }
}