Werkcollege opgave 23 september BMT K9

Dependencies:   Encoder HIDScope MODSERIAL mbed QEI biquadFilter

main.cpp

Committer:
bscheltinga
Date:
2015-10-09
Revision:
26:1090acf98efc
Parent:
25:38ab6dd19d9b
Child:
27:85e5d36bb6c5

File content as of revision 26:1090acf98efc:

#include "mbed.h"
#include "HIDScope.h"
#include "MODSERIAL.h"
#include "biquadFilter.h" //Filter direct form II

//      [DEFINE INPUTS]       //
AnalogIn    emgL(A0); //Analog input left arm
//AnalogIn    emgR(PTB1); //Analog input right arm
DigitalOut  led1(LED_GREEN);

//      [DEFINE CONSTANTS]      //
float emgL_L, emgL_LH, emgLeft, emgL_H, emgL_Notch;
double B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, MOVAVG;
HIDScope scope(4); // Aantal HIDScope kanalen
MODSERIAL pc(USBTX,USBRX);
volatile bool control_go = false;
Ticker control_tick;

//      [BIQUAD FILTERS]        //
const float la1 = 0.29358435979;
const float la2 = 0.71930322156;
const float lb0 = 1.00000000000;
const float lb1 = 0.01516472727;
const float lb2 = 1.00000000000; // Waarde van biquads via groep 1 2014
biquadFilter Lowpassfilter1 (la1, la2, lb0, lb1, lb2);

const float ha1 = -0.29358436761;
const float ha2 = 0.71930322175;
const float hb0 = 1.000000000000;
const float hb1 = -0.01516473660;
const float hb2 = 1.000000000000; // Waarde van biquads via groep 1 2014
biquadFilter Highpassfilter (ha1, ha2, hb0, hb1, hb2);

//      [FUNCTIONS]        //
void ControlGo() //Control flag
{
    control_go = true;
    led1 = 0;
}


//      [MAIN FUNCTION]     //
int main()
{
    control_tick.attach(&ControlGo, 0.005);
    pc.baud(9600);

    while(true) {
        
        if(control_go)
        
        // [EMG FILTEREN MET HIGH- EN LOWPASSFILTER] //
        emgLeft = emgL.read();
        emgLeft = fabs(emgLeft);
        emgL_L = Lowpassfilter.step(emgLeft); //emgL_L Linker bicep met lowpass filter
        emgL_H = Highpassfilter.step(emgLeft); //emgL_L met Highpassfilter
        emgL_Notch = Highpassfilter.step(emgL_L); //Highpass filter over de lowpass filter = Notch
        
        //      [MOVING AVERAGE]     // Mov avg van lowpass filter
        B0 = emgL_L;
        MOVAVG=B0*0.1+B1*0.1+B2*0.1+B3*0.1+B4*0.1+B5*0.1+B6*0.1+B7*0.1+B8*0.1+B9*0.1;
        B9=B8;
        B8=B7;
        B7=B6;
        B6=B5;
        B5=B4;
        B4=B3;
        B3=B2;
        B2=B1;
        B1=B0;
        
        scope.set(0,emgLeft);
        scope.set(1,emgL_L);
        scope.set(2,emgL_H);
        scope.set(3,MOVAVG);
        scope.send();
        led1 = 1; //De led gaat flikkeren wanneer deze loop uitgevoerd wordt

    }
}