Prototyp V2
Dependencies: PM2_Libary
Diff: mapping.cpp
- Revision:
- 49:c2ebc11520f9
- Child:
- 54:86a90ce4e412
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mapping.cpp Wed Apr 20 08:33:31 2022 +0200 @@ -0,0 +1,32 @@ +//pow function is here so we dont have to use the math.h library +//it takes 2 arguments the base can be any negative or positive floating point number the power has to be a hos to be an "integer" defined as a double +double powerx(double base, double pow2){ + double result = -1; + double power = pow2; + double basis = base; + result = 1; + //handling negative exponents + if(power<0){ + for(double i=1; i<=(power*(-1.0)); i++) { + result *= basis; + } + result = 1.0/result; + } + //handling positive exponents + else{ + for(double i=1; i<=power; i++){ + result *= basis;}} + + return result; + } + +double mapping(float adc_value_mV){ + double distance = 0.0f; //distance in mm + double infY =360 , supY = 2360; //Window for sensor values + double voltage_mV = adc_value_mV; + double p1 = -1.127*powerx(10,-14), p2 = 8.881*powerx(10,-11), p3 = -2.76*powerx(10,-7), p4 = 0.0004262, p5 = -0.3363, p6 = 120.1 ; //faktoren für polynomkurve -> von matlab exportiert + if(voltage_mV > infY && voltage_mV < supY){ + distance = p1*powerx(voltage_mV,5) + p2*powerx(voltage_mV,4) + p3*powerx(voltage_mV,3) + p4*powerx(voltage_mV,2) + p5*voltage_mV + p6; + } + return (distance); +}