script zover

Dependencies:   HIDScope MODSERIAL mbed

main.cpp

Committer:
wiesdat
Date:
2014-10-15
Revision:
2:620ff9f02d62
Parent:
1:bc2db3bff4bb
Child:
3:9a7ed524bb30
Child:
5:9415e5be8235

File content as of revision 2:620ff9f02d62:

#include "mbed.h"
#include "MODSERIAL.h"
#include "HIDScope.h"

#define A1LP    0.181269246922018
#define B1LP    -0.818730753077982

#define A1HP -1.999214978283642
#define A0HP   0.999214978283642
#define B1HP -1.943446330323158
#define B0HP 0.945001709500376

#define TSAMP 0.0001

AnalogIn    emg0(PTB1);
MODSERIAL pc(USBTX,USBRX);
HIDScope scope(5);
Ticker timer;
float filter(float);
float emg_value;
volatile bool looptimerflag;
float ysum = 0, yave=0 ;

uint16_t readEMG()
{

    return emg0.read_u16();
}

float hpfilter(float emg0_value)
{
    static float y,x1=0,y1=0,x2=0,y2=0;
    y = y1*B1HP-y2*B0HP-x1*A1HP+x2*A0HP;
    x2 = x1;
    x1 = emg0_value;
    y2 = y1;
    y1 = y;
    return yhp1;
}

float lpfilter(float yhp1)
{
    static float y,x1=0,y1=0,x=0;
    y = A1LP*x1lp+y1lp*B1LP;
    y1 = y;
    x1 = x;
    x = y;
    return ylp1;
}

void viewer()
{
    scope.set(0,emg_value);
    scope.set(1,yhp);
    scope.set(2,ylp);
    scope.set(3,ysum);
    scope.set(4,yave);
    scope.send();
}

void setlooptimerflag(void)
{
    looptimerflag = true;
}

int main()
{
    pc.baud(115200);
    timer.attach(setlooptimerflag,TSAMP);
    int n;
    while(1) {

        while(!looptimerflag) /* do nothing */;
        looptimerflag = false;
        //read();                     //waardes inladen
        emg_value =  readEMG();
        yhp1 = hpfilter(emg_value);  //functie hpfilter
        ylp1 = lpfilter(yhp1);         //functie filter
        ysum = ysum+abs(ylp);
        n++;

        if(n==1000) {
            yave = ysum/1000;
            yave = yave;
            ysum = 0;
            n = 0;
        }


        viewer();                  //functie hidscope

    }
}