Prototyp V2

Dependencies:   PM2_Libary

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);
+}