Working, Clean

Dependents:   ShowItv2 ShowIt_robot_control

Fork of SignalNumber by Dustin Berendsen

Revision:
5:f3ddc3a7b292
Parent:
4:a79f9f3a9e40
Child:
6:7f6e2d293154
diff -r a79f9f3a9e40 -r f3ddc3a7b292 signalnumber.cpp
--- a/signalnumber.cpp	Wed Nov 01 22:23:10 2017 +0000
+++ b/signalnumber.cpp	Wed Nov 01 22:46:29 2017 +0000
@@ -5,28 +5,14 @@
 //Constants for mean value
 const int n = 1500;                   //Window size for the mean value
 float emg0_filtered[n] = {}, emg2_filtered[n] = {}, emg4_filtered[n]={}; 
-int count1 = 0, count2 = 0, count3 = 0;
-int countx = 0, county = 0.0, countz = 0.0;
-float meanL = 0.0, meanR = 0.0, meanM = 0.0;
-float sum = 0.0;
-
+int count1 = 0, count2 = 0, count3 = 0;  //Counters for the mean values
+int countx = 0, county = 0.0, countz = 0.0;     //Counters for the signalnumbers
+float meanL = 0.0, meanR = 0.0, meanM = 0.0;    //Internal function calculation variables
 
 //Constants EMG switch
 const float LeftMin = 0.20;
 const float LeftMax = 0.50;
-/*
-
-
-const float LeftFastmin=0.075;
-const float LeftFastmax=0.15;
-const float LeftSlowmin=0.2;
-const float LeftSlowmax=0.35;
-const float RightSlowmin=0.4;
-const float RightSlowmax=0.65;
-const float RightFastmin=0.7;
-const float RightFastmax=10.5;*/
 int NumberL = 0, NumberR =0;
-//const int action =50;
 
 
 SignalNumber::SignalNumber(void)
@@ -34,24 +20,9 @@
 
 }
 
-
-/*
-// Determine the mean value of the last "n" amount of numbers.
-float SignalNumber::getmean(const int n, float input){
-    emg_filtered[count] = input;
-    count++;
-    if (count == n){
-        count = 0;
-    }
-    float sum_math = 0.0;
-    for (int m=0 ; m<n ; m++ ){
-        sum_math = sum_math + emg_filtered[m];
-    }
-    float mean_math = sum_math/n;
-    return mean_math;
-}*/
-
-
+//Determine the Left mean value
+//"n" is the amount off samples over which the mean value is calculated
+//"ipnut" is the inputsignal (filtered analog in)
 float SignalNumber::getmeanLeft(const int n, float input){
     emg0_filtered[count1] = input;
     count1++;
@@ -65,6 +36,10 @@
     float mean_math = sum_math/n;
     return mean_math;
 }
+
+//Determine the Right mean value
+//"n" is the amount off samples over which the mean value is calculated
+//"ipnut" is the inputsignal (filtered analog in)
 float SignalNumber::getmeanRight(const int n, float input){
     emg2_filtered[count2] = input;
     count2++;
@@ -78,6 +53,11 @@
     float mean_math = sum_math/n;
     return mean_math;
 }
+
+/*
+//Determine the Mode mean value
+//"n" is the amount off samples over which the mean value is calculated
+//"ipnut" is the inputsignal (filtered analog in)
 float SignalNumber::getmeanMode(const int n, float input){
     emg4_filtered[count3] = input;
     count3++;
@@ -91,35 +71,34 @@
     float mean_math = sum_math/n;
     return mean_math;
 }
+*/
+
+// Determine the offset by calculating the mean value for "n" samples
 float SignalNumber::calibrate(const int n, float input){
     float offset = getmeanLeft(n, input);
     return offset; 
 } 
 
-
-
-
-
 int SignalNumber::getnumberLeft(const int n, const int action, float input){
-    meanL= getmeanLeft(n, input);
-    //Check first case
-    if( meanL< LeftMin ) {
-        if (county <action){
-            meanL= getmeanLeft(n, input);
-            if(meanL< LeftMin){
+    meanL = getmeanLeft(n, input);
+    //Check first case, standstill
+    if( meanL < LeftMin ) {
+        if (county < action){
+            meanL = getmeanLeft(n, input);
+            if(meanL < LeftMin){
                 county++;
             }
             else{
-                county=0;
-                NumberL=0;
+                county = 0;
+                NumberL = 0;
             } 
         }
         else{
             NumberL = 0;
-            county=0;
+            county = 0;
         }
     }
-     //Check second case  
+     //Check second case, move slow  
      else if(meanL >= LeftMin and meanL < LeftMax){
         if (county <action){
             meanL= getmeanLeft(n, input);
@@ -136,6 +115,7 @@
             county=0;
         }
     }
+    //Check third case, move fast
      else if( meanL>=LeftMax) {
         if (county <action){
             meanL= getmeanLeft(n, input);
@@ -152,6 +132,7 @@
             county=0;
         }
     }
+    //If not working output zero
     else{
         county=0;
         NumberL =0;
@@ -161,7 +142,7 @@
 
 int SignalNumber::getnumberRight(const int n, const int action, float input){
     meanR= getmeanRight(n, input);
-    //Check first case
+    //Check first case, standstill
     if( meanR< LeftMin ) {
         if (countx <action){
             meanR= getmeanRight(n, input);
@@ -178,7 +159,7 @@
             countx=0;
         }
     }
-     //Check second case  
+     //Check second case, move slow 
      else if(meanR >= LeftMin and meanR < LeftMax){
         if (countx <action){
             meanR= getmeanRight(n, input);
@@ -195,6 +176,7 @@
             countx=0;
         }
     }
+    //Check third case, move fast
      else if( meanR >=LeftMax ) {
         if (countx <action){
             meanR= getmeanRight(n, input);
@@ -211,6 +193,7 @@
             countx=0;
         }
     }
+    //If not working output zero
     else{
         countx=0;
         NumberR =0;
@@ -219,137 +202,3 @@
 }       
 
 
-
-
-
-
-
-
-
-
-//Determine the right signal number
-/*
-There will be checked in which range the mean value lies. If the value lies 
-within this range for "action" samples the switch will be changed to the right
-mode. If the mean value changes outside of the region the switch will be set to 
-0, this is the resting state. Also the counter will be reset.
-n is the amount of samples in the window
-action is the amount of same mean values 
-*/
-/*int SignalNumber::getnumber(const int n, const int action, float input){
-    mean = getmean(n, input);
-    //Check first case
-    if( mean < LeftFastmin ) {
-        if (countx <action){
-            mean = getmean(n, input);
-            if(mean < LeftFastmin){
-                countx++;
-            }
-            else{
-                countx=0;
-                Number=0;
-            } 
-        }
-        else{
-            Number = 0;
-            countx=0;
-        }
-    }
-     //Check second case  
-     else if(mean <= LeftFastmax and mean > LeftFastmin){
-        if (countx <action){
-            mean = getmean(n, input);
-            if(mean <=LeftFastmax and mean>LeftFastmin){
-                countx++;
-            }
-            else{
-                countx=0;
-                Number=0;
-            } 
-        }
-        else{
-            Number = 1;
-            countx=0;
-        }
-    }
-     else if( mean <=LeftSlowmax and mean>LeftSlowmin) {
-        if (countx <action){
-            mean = getmean(n, input);
-            if(mean <=LeftSlowmax and mean>LeftSlowmin){
-                countx++;
-            }
-            else{
-                countx=0;
-                Number=0;
-            } 
-        }
-        else{
-            Number = 2;
-            countx=0;
-        }
-     }
-     else if( mean <=RightSlowmax and mean>RightSlowmin) {
-        if (countx <action){
-            mean = getmean(n, input);
-            if(mean <=RightSlowmax and mean>RightSlowmin){
-                countx++;
-            }
-            else{
-                countx=0;
-                Number=0;
-            } 
-        }
-        else{
-            Number = 3;
-            countx=0;
-        }
-     }
-     else if( mean <=RightFastmax and mean>RightFastmin ) {
-        if (countx <action){
-            mean = getmean(n, input);
-            if(mean <=RightFastmax and mean>RightFastmin){
-                countx++;
-            }
-            else{
-                countx=0;
-                Number=0;
-            } 
-        }
-        else{
-            Number = 4;
-            countx=0;
-        }
-    }
-    else{
-        countx=0;
-        Number =0;
-    }
-    return Number;
-}       */
-
-
-// In progress
-/*int SignalNumber::getmode(const int n, const int action, float input){
-    int mode;
-    mean = getmean(n, input);
-    //Check first case
-    if( mean < LeftFastmin ) {
-        if (countx <action){
-            mean = getmean(n, input);
-            if(mean < LeftFastmin){
-                countx++;
-            }
-            else{
-                countx=0;
-                Number=0;
-            } 
-        }
-        else{
-            Number = 0;
-            countx=0;
-        }
-    }
-    return mode;
-}*/
-
-