Sensor library

Sensor.cpp

Committer:
noamnahum
Date:
2021-06-29
Revision:
0:eb491ad3a263

File content as of revision 0:eb491ad3a263:

#include "mbed.h"
#include "Sensor.h"
 
Sensor::Sensor(float* Sensor_1, float* Sensor_2, float* lastscope, float* bias, float weight){
    _Sensor_1 = Sensor_1; 
    _Sensor_2 = Sensor_2;
    _bias = bias;
    _Sensor_1_max = 0.337;
    _Sensor_2_max = 0.72;
    _Sensor_1_min = 0.245;
    _Sensor_2_min = 0.619;
    _Error = 0;
    Sensor_sub = -1;
    Sensor_sum = -1;
    
    _lastscope = lastscope;
    _weight = weight;
    
}

    
int Sensor::ErrorCheck() { // if there is error for more than 100ms Sensor_Value_1 is -1
    Sensor_sum = *_Sensor_1 + *_Sensor_2;
    Sensor_sub = abs(Sensor_sum-1);
    if (Sensor_sub<0.1){
        _Error = 0;
        timer.stop();
        timer.reset();
        }
    if (Sensor_sub>0.1){
        if (_Error == 0){
            //_Error = 1;
            timer.start();
            }
        if (timer.read() > 0.1){
            timer.stop();
            _Error = 1;
            }  
        }
        return _Error;
    }
    
void Sensor::ApplyFilter(float newscope)
{
    newscope = (_weight*newscope) + ((1-_weight)*(*_lastscope));
    *_lastscope = *_bias + newscope; 
}

void Sensor::ChangeWeight(float new_weight)
{
    _weight=  new_weight;
} 
float Sensor::Sensor_Value_1() {
    /*if (*_Sensor_1 > _Sensor_1_max){
        _Sensor_1_max = *_Sensor_1;
        }
    if (*_Sensor_1 < _Sensor_1_min){
        _Sensor_1_min = *_Sensor_1;
        }*/
    _Sensor_Value_1 = ((*_Sensor_1 - _Sensor_1_min)*(255 - 0))/((_Sensor_1_max - _Sensor_1_min) + 0 );
    if (_Sensor_Value_1<0){
        return 0;
        }
    if (_Sensor_Value_1>255){
        return 255;
        }
    else{
        return _Sensor_Value_1;
        }
    }
float Sensor::Sensor_Value_2() {
    /*if (*_Sensor_2 > _Sensor_2_max){
        _Sensor_2_max = *_Sensor_2;
        }
    if (*_Sensor_2 < _Sensor_2_min){
        _Sensor_2_min = *_Sensor_2;
        }*/
    _Sensor_Value_2 = ((*_Sensor_2 - _Sensor_2_min)*(255 - 0))/((_Sensor_2_max - _Sensor_2_min) + 0 );
    if (_Sensor_Value_2<0){
        return 0;
        }
    if (_Sensor_Value_2>255){
        return 255;
        }
    else{
        return _Sensor_Value_2;
        }
    } 
float Sensor::Sensor_Sum(){
    return Sensor_sum;
    }
float Sensor::Sensor_Sub(){
    return Sensor_sub;
    }
float Sensor::Sensor_timer(){
    return timer.read();
    }