Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed HIDScope biquadFilter
Diff: main.cpp
- Revision:
- 1:278677bb6b99
- Parent:
- 0:4d69864f1002
- Child:
- 2:27081b83a58e
diff -r 4d69864f1002 -r 278677bb6b99 main.cpp
--- a/main.cpp Thu Oct 20 20:44:51 2016 +0000
+++ b/main.cpp Fri Oct 21 10:15:43 2016 +0000
@@ -58,11 +58,16 @@
volatile int time_passed = 0;
volatile bool filter_timer_go=false;
+
+double EMGright;
+double EMGleft;
//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);
@@ -79,9 +84,11 @@
time_passed++;
}
-/*void sample()
+void sample()
{
- scope.set(0, emg0.read() );
+ double EMGright = emg0;
+ double EMGleft = emg1;
+ /*.set(0, emg0.read() );
scope.set(1, emg1.read() );
scope.send();
@@ -89,8 +96,8 @@
led1 = 0;
wait(0.5f);
led1 = 1;
- wait(0.5f);
-}*/
+ wait(0.5f);*/
+}
// In the following: R is used for right arm, L is used for left arm!
/*void FilteredSample()
@@ -144,14 +151,14 @@
return averageR=sumR/sizeR;
return averageL(sumL,sizeL);*/
-double averageR(int sumR, int size)
+float averageR(int sumR, int size)
{
- return (double) sumR/size;
+ return (float) sumR/size;
}
-double averageL(int sumL, int size)
+float averageL(int sumL, int size)
{
- return (double) sumL/size;
+ return (float) sumL/size;
}
@@ -162,36 +169,52 @@
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
+ //for (;;) {
+ //if (time_passed<=10)
+ //{
+ //sample_timer.attach(&sample, 0.002); //500Hz
- double averageR(int,int);
- double averageL(int,int);
+ /*float averageR(float,int);
+ float averageL(float,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();
+ float EMGright = emg0.read();
+ float EMGleft = emg1.read();
for (int i=0;i<size;i++)
{
- EMGright = arrayR[i];
- EMGleft = arrayL[i];
- sumL = sumL+arrayR[i];
+ emg0.read() = arrayR[i];
+ arrayL[i]= emg1.read();
+ sumL = sumL+arrayL[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);
+ */
+ int size = 12500;
+ int i;
+ double EMGsumR;
+ double EMGsumL;
+
+ while(i<size){
+ sample();
+ EMGsumR = emg0.read()+EMGsumR;
+ EMGsumL = EMGleft+EMGsumL;
+ i++;
+ wait(0.0004);
+ }
+
+ double averageEMGr = (double) EMGsumR/size;
+ double averageEMGl = (double) EMGsumL/size;
+ double InRcal = emg0.read()-averageEMGr;
+ double InLcal = emg1.read()-averageEMGl;
+
+ led1 =!led1;
+ //wait(0.5f);
/*scope.set(0, emg0.read() );
scope.set(1, 1 );
@@ -201,19 +224,23 @@
scope.set(6, InLcal );
scope.send();*/
- pc.printf("EMG-signal = %f\n\r",emg0.read());
+ //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);
- }
+ pc.printf("averageR = %f\n\r",averageEMGl);
+ //pc.printf("averageRvoid = %f\n\r",averageR(sumR,size));
+ //pc.printf("Detrend EMG = %f\n\r",InRcal);
+ //pc.printf("array value = %f\n\r",arrayR[3]);
+ pc.printf("test\n\r");
+ pc.printf("EMG sum = %f\n\r",EMGsumR);
+ pc.printf("EMG signal = %f\n\r",EMGright);
- else
+ /*else
{
led1 = 1;
led2=!led2;
- /*bcq.add(&bq3).add(&bq4).add(&bq5);
+ 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!)
@@ -222,8 +249,8 @@
if (filter_timer_go){
filter_timer_go=false;
FilteredSample();}
- }*/
+ }
- }
-}
+ }*/
+
}
\ No newline at end of file