emg values for left and right

Dependencies:   HIDScope biquadFilter mbed

main.cpp

Committer:
Roytsg
Date:
2017-11-02
Revision:
0:4fd672acf3f6

File content as of revision 0:4fd672acf3f6:

#include "mbed.h"
#include "HIDScope.h"
#include "BiQuad.h"
#include "math.h" 

//Define objects
AnalogIn    emg( A0 );
AnalogIn    emg1( A1 );
//AnalogIn    emg2( A2 );
//AnalogIn    emg3( A3 );

Ticker      sample_timer;
HIDScope    scope( 2 );
DigitalOut  led(LED1);

int P= 200;
int Q = 200;
double A[200];
double B[200];

BiQuadChain bqcR;
BiQuad bq1R( 0.6844323315947305,1.368864663189461, 0.6844323315947305,1.2243497755555954,0.5133795508233265);
BiQuad bq2R( 0.6844323315947306, -1.3688646631894612,  0.6844323315947306,   -1.2243497755555959, 0.5133795508233266);
BiQuad bq3R(  0.7566897754116633, -1.2243497755555959,  0.7566897754116633,   -1.2243497755555959, 0.5133795508233266);
BiQuadChain bqcL;
BiQuad bq1L( 0.6844323315947305,1.368864663189461, 0.6844323315947305,1.2243497755555954,0.5133795508233265);
BiQuad bq2L( 0.6844323315947306, -1.3688646631894612,  0.6844323315947306,   -1.2243497755555959, 0.5133795508233266);
BiQuad bq3L(  0.7566897754116633, -1.2243497755555959,  0.7566897754116633,   -1.2243497755555959, 0.5133795508233266);

void emgSample() {
    
    double emgFilteredR = bqcR.step( emg.read() );
    double emgabsR = abs(emgFilteredR);
    //scope.set(0, emgFiltered );
    //scope.set(1, emgabs );
    
    for(int i = P-1; i >= 0; i--){
        if (i == 0) {
            A[i] = emgabsR;
            }
         else {
             A[i] = A[i-1];
             }   
        }
    
     double sumR = 0;
    for (int n = 0; n < P-1; n++) {
    sumR = sumR + A[n];
    }
    
    double movmeanR = sumR/P;
    
    scope.set(0, movmeanR);
    
    double emgFilteredL = bqcL.step( emg1.read() );
    double emgabsL = abs(emgFilteredL);
       
    for(int i = Q-1; i >= 0; i--){
        if (i == 0) {
            B[i] = emgabsL;
            }
         else {
             B[i] = B[i-1];
             }   
        }
    
     double sumL = 0;
    for (int n = 0; n < Q-1; n++) {
    sumL = sumL + B[n];
    }
    
    double movmeanL = sumL/Q;
    
    scope.set(1, movmeanL);
    
    scope.send();
    
}
int main()
{
    bqcR.add( &bq1R ).add( &bq2R ).add( &bq3R );
    bqcL.add( &bq1L ).add( &bq2L ).add( &bq3L );
    sample_timer.attach( &emgSample, 0.002 );
    while(1) {}
}