Dependents:   NHK2020-main NHK2020-main1 NHK2020_main_ros1_2_25

uw.cpp

Committer:
yuki0701
Date:
2019-12-11
Revision:
10:c5ad8660c8fd
Parent:
7:9380ae04df1b

File content as of revision 10:c5ad8660c8fd:

#include "uw.h"
#include "mbed.h"

Uw::Uw(PinName uw)   :   uw_(uw) {
    dist = 0;
}

double Uw::get_dist(int rank){
    double res;  
    
    uw_.output();
    uw_=0;
    wait_us(10);
    uw_=1;
    wait_us(5);
    uw_=0;
    
    uw_.input();    
    t.start();
    int flag = 0;
    while(!uw_){
        t.reset();
        t.start();
        //printf("uw fail\n\r");
        flag++;
        if(flag>2000){
            flag = 0;
            return -1;   
        }
        }
    do{
        res=t.read_us();        
    }while(uw_);
    t.reset();
    t.stop();
    
    
    dist=(res/2)/29.1;  //[cm]=[m/us]/[1/(us*100)]
    //  =       *343.6  //[cm]=[m/us]*[us*100]
    
    switch(rank){
        case 1:
        return dist*10;
        case 2:
        return dist*0.01;
        default:
        return dist;
    }
}