Remco Dasselaar / Mbed 2 deprecated TotalControlEmg2

Dependencies:   HIDScope MODSERIAL QEI TextLCD mbed

Fork of TotalControlEmg2 by Remco Dasselaar

main.cpp

Committer:
Bartvaart
Date:
2015-10-12
Revision:
18:eec0880fcded
Parent:
17:cfe44346645c
Child:
19:6c0245063b96

File content as of revision 18:eec0880fcded:

#include "mbed.h"
#include "HIDScope.h"
#include "Filterdesigns.h"
#include "Kalibratie.h"
#include "MODSERIAL.h" //bugfix
#include "Mode.h"

AnalogIn    emg(A0); //Analog input van emg kabels
HIDScope    scope(3); //3 scopes
Ticker      EMGticker;
MODSERIAL   pc(USBTX, USBRX); //bugfix
DigitalOut  LedBlue(LED3);

//Sample frequentie
double Fs = 500; //Hz
double t = 1/ Fs; // voor EMGticker

bool readymax = 0;
bool readymin = 0;
double ymin;
double ymax;
double thresholdlow;
double thresholdmid;
double thresholdhigh;

void EMGkalibratie(){
    LedBlue = 1;
    Init();
    ymax = KalibratieMax(readymax);
    ymin = KalibratieMin(readymin);
    
    // bepalen van thresholds voor aan/uit
    thresholdlow = 0.2; // standaardwaarde
    thresholdmid = 0.5 * ymax; // afhankelijk van max output gebruiker
    thresholdhigh = 0.8 * ymax;
    }

void EMGfilter(){
    //uitlezen emg signaal
    double u = emg.read();
    double y = Filterdesigns(u, ymin);
    //pc.printf("%f \n",y); //bugfix
    // Plotten in HIDscope
    int mode = Mode(y, ymax, thresholdlow, thresholdmid, thresholdhigh); //bepaald welk signaal de motor krijgt (aan, uit, middel)
    scope.set(0,u); //ongefilterde waarde naar scope 1
    scope.set(1,y); //gefilterde waarde naar scope 2
    scope.set(2,mode); 
    scope.send(); //stuur de waardes naar HIDscope
    }
    

int main(){
    
    EMGkalibratie();
    //pc.printf("ymax = %f en ymin = %f \n",ymax, ymin); //bugfix
    
    while(readymax == 1 && readymin == 1){
        LedBlue = 0;
        EMGticker.attach(&EMGfilter, t); //500H
            while(1){}
        }
    }