no thread

Dependents:   200_yotuba_21_uiChange

IRsensor.cpp

Committer:
skouki
Date:
2019-06-25
Revision:
1:fe97d826508d
Parent:
0:d0a252247fec
Child:
2:35b3dd6f7f17

File content as of revision 1:fe97d826508d:

#include "IRsensor.h"

IRsensor::IRsensor(PinName pin):a_in(pin)
{
}

float IRsensor::getInputvoltage(){
    float voltage = a_in.read()*3.3;
    return voltage;
}

float IRsensor::getDistance(int n){
    float distance_sum=0;
    for(int i=0;i<n;i++){
        distance_sum += changeVtoD(getInputvoltage());
    }  
    return distance_sum / n;    
}

float IRsensor::changeVtoD(float voltage)
{
    float distance;
    if (voltage > 2.285f) {
        distance = 0.0f;
    } else if (voltage > 1.645f) {
        distance = -7.8125f * voltage + 27.8515f;
    } else if (voltage > 1.305f) {
        distance = -14.7058f * voltage + 39.1911f;
    } else if (voltage > 1.08f) {
        distance = -22.222f * voltage + 49.0f;
    } else if (voltage > 0.928f) {
        distance = -32.89473f * voltage + 60.526f;
    } else if (voltage > 0.835f) {
        distance = -53.7634f * voltage + 79.89247f;
    } else if (voltage > 0.737f) {
        distance = -51.02040f * voltage + 77.60204f;
    } else if (voltage > 0.673f) {
        distance = -78.12500f * voltage + 97.57812f;
    } else if (voltage > 0.608f) {
        distance = -76.92307f * voltage + 96.76923f;
    } else if (voltage > 0.562f) {
        distance = -108.6956f * voltage + 116.0869f;
    } else if (voltage > 0.515f) {
        distance = -106.3829f * voltage + 114.7872f;
    } else if (voltage > 0.474f) {
        distance = -121.9512f * voltage + 122.8048f;
    } else if (voltage > 0.447f) {
        distance = -185.1851f * voltage + 152.7777f;
    } else if (voltage > 0.432f) {
        distance = -333.333f * voltage + 219.0f;
    } else {
        distance = 9999.9f;
    }
 
    return distance;
}