Gerhard Berman / Mbed 2 deprecated frdm_calibratie_maximum2

Dependencies:   HIDScope biquadFilter mbed

Fork of frdm_calibratie_maximum by Marieke M

Revision:
0:4d69864f1002
Child:
1:278677bb6b99
diff -r 000000000000 -r 4d69864f1002 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Oct 20 20:44:51 2016 +0000
@@ -0,0 +1,229 @@
+#include "mbed.h"
+#include <stdio.h>
+#define SERIAL_BAUD 115200
+
+AnalogIn    emg0( A0 );
+AnalogIn    emg1( A1 );
+Serial pc(USBTX,USBRX);
+
+//HIDScope    scope( 6 );
+
+ 
+/*int main() {
+  pc.baud(115200);
+  int array[10], maximum, size, c, location = 1;
+  
+  for (int i=0;i<10;i++)
+    {
+    double EMGright = emg0.read();
+    EMGright = array[i];
+    }
+ 
+  printf("Enter the number of elements in array\n");
+  scanf("%d", &size);
+ 
+  printf("Enter %d integers\n", size);
+ 
+  for (c = 0; c < size; c++)
+    scanf("%d", &array[c]);
+ 
+  maximum = array[0];
+ 
+  for (c = 1; c < size; c++)
+  {
+    if (array[c] > maximum)
+    {
+       maximum  = array[c];
+       location = c+1;
+    }
+  }
+ 
+  printf("Maximum element is present at location %d and it's value is %d.\n", location, maximum);
+  return 0;
+}*/
+/*
+#include "mbed.h"
+#include "HIDScope.h"
+#include "BiQuad.h"
+#include <stdio.h>
+
+//Define objects
+AnalogIn    emg0( A0 );
+AnalogIn    emg1( A1 );*/
+
+Ticker      sample_timer, average_timer, filter_timer, t;
+//HIDScope    scope( 6 );
+DigitalOut  led1(LED_RED);
+DigitalOut  led2(LED_BLUE);
+
+volatile int time_passed = 0;
+volatile bool filter_timer_go=false;
+//average_timer_go=false,
+ // Activates go-flags
+//void average_timer_act(){average_timer_go=true;};
+/*void filter_timer_act(){filter_timer_go=true;};
+
+BiQuadChain bcq;
+// Notch filter wo=50; bw=wo/35
+BiQuad bq1(9.7805e-01,-1.1978e-16,9.7805e-01,1.0000e+00,-1.1978e-16,9.5610e-01);
+// High pass Butterworth filter 2nd order, Fc=10;
+BiQuad bq2(9.8239e-01,-1.9648e+00,9.8239e-01,1.0000e+00,-1.9645e+00,9.6508e-01);
+// Low pass Butterworth filter 2nd order, Fc = 8;
+BiQuad bq3(5.6248e-05,1.1250e-04,5.6248e-05,1.0000e+00,-1.9787e+00,9.7890e-01);
+// Low pass Butterworth filter 4th order, Fc = 450; plited up in 2x2nd order
+BiQuad bq4(1.0000e+00,2.0000e+00,1.0000e+00,1.0000e+00,-4.6382e-01,8.9354e-02);
+BiQuad bq5(1.0000e+00,2.0000e+00,1.0000e+00,1.0000e+00,-6.3254e-01,4.8559e-01);*/
+
+void KeepTrackOfTime()
+{
+    time_passed++;
+}
+
+/*void sample()
+{
+    scope.set(0, emg0.read() );
+    scope.set(1, emg1.read() );
+    
+    scope.send();
+    
+    led1 = 0;
+    wait(0.5f);
+    led1 = 1;
+    wait(0.5f);
+}*/
+
+// In the following: R is used for right arm, L is used for left arm!
+/*void FilteredSample()
+{   
+    double inR = emg0.read();
+    double inL = emg1.read();
+    //double inLcal = inL-averageL(sumL,size);
+    double outRnotch = bq1.step(inR);
+    double outRhigh = bq2.step(outRnotch);
+    double outRrect = fabs(outRhigh);
+    double outRlow = bcq.step(outRrect);
+    double outLnotch = bq1.step(inL);
+    double outLhigh = bq2.step(outLnotch);
+    double outLrect = fabs(outLhigh);
+    double outLlow = bcq.step(outLrect);
+    
+    scope.set(0, inR);
+    scope.set(1, inL);
+    scope.set(2, outRlow);
+    scope.set(3, outLlow);
+    
+    
+    scope.send();
+    // To indicate that the function is working, the LED is toggled
+    led2 = !led2;
+}*/
+
+    
+/*
+void average(double averageR, double averageL)
+{
+    int averageR(int,int);
+    int averageL(int,int);
+    int size = 5000; //10/0.002
+    int arrayR[size]; //declaring array
+    int arrayL[size];
+    int sumR = 0;
+    int sumL = 0;
+    
+    for (int i=0;i<size;i++)
+    {
+        double EMGright = emg0.read();
+        double EMGleft = emg1.read();
+        EMGright = arrayR[i];
+        EMGleft = arrayL[i];
+        sumL = sumL+arrayR[i];
+        sumR=sumR+arrayR[i];
+        //double averageR = sumR/arrayR;
+        //double averageL = sumL/arrayL;
+    }
+    return averageR=sumR/sizeR;
+    return averageL(sumL,sizeL);*/
+    
+double averageR(int sumR, int size)
+{
+    return (double) sumR/size;
+}
+
+double averageL(int sumL, int size)
+{
+    return (double) sumL/size;
+}
+
+
+int main()
+{   
+    pc.baud(115200);
+    led1=1;
+    led2=1;
+    t.attach(&KeepTrackOfTime,1.0); //taking the time in seconds
+
+    for (;;) {
+        if (time_passed<=30) 
+        {
+        led1 =!led1;
+        wait(0.5f);//sample_timer.attach(&sample, 0.002); //500Hz
+        
+        double averageR(int,int);
+        double averageL(int,int);
+        int size = 500; //10/0.002
+        int arrayR[size]; //declaring array
+        int arrayL[size];
+        int sumR = 0;
+        int sumL = 0;
+        double EMGright = emg0.read();
+        double EMGleft = emg1.read();
+        
+            for (int i=0;i<size;i++)
+            {
+            EMGright = arrayR[i];
+            EMGleft = arrayL[i];
+            sumL = sumL+arrayR[i];
+            sumR = sumR+arrayR[i];
+            }
+            // Calibration step with the gained averages
+            //double CalibrationFactorR = 0.5/averageR(sumR,size);
+            //double CalibrationFactorL = 0.5/averageL(sumL,size);
+        double averageEMGr = sumR/size;
+        double averageEMGl = sumL/size;
+        double InRcal = emg0.read()-averageR(sumR,size);
+        double InLcal = emg1.read()-averageL(sumL,size);
+        
+        /*scope.set(0, emg0.read() );
+        scope.set(1, 1 );
+        scope.set(2, averageEMGr);
+        scope.set(3, averageL(sumL,size));
+        scope.set(5, InRcal );
+        scope.set(6, InLcal );
+        
+        scope.send();*/
+        pc.printf("EMG-signal = %f\n\r",emg0.read());
+        pc.printf("averageR = %f\n\r",averageEMGr);
+        pc.printf("averageRvoid = %f\n\r",averageR(sumR,size));
+        pc.printf("Detrend EMG = %f\n\r",InRcal);
+        }
+        
+        else
+        {
+                   
+        led1 = 1; 
+        led2=!led2;
+        
+        /*bcq.add(&bq3).add(&bq4).add(&bq5);
+      
+        filter_timer.attach(&filter_timer_act, 0.0004); //2500Hz (same as with filter coefficients on matlab!!! Thus adjust!)
+        
+            while(1)
+            {
+            if (filter_timer_go){
+                filter_timer_go=false;
+                FilteredSample();}
+            }*/
+        
+        }
+}
+}
\ No newline at end of file