Remco Dasselaar / Mbed 2 deprecated TotalControlEmg2

Dependencies:   HIDScope MODSERIAL QEI TextLCD mbed

Fork of TotalControlEmg2 by Remco Dasselaar

Committer:
Bartvaart
Date:
Mon Oct 12 10:14:18 2015 +0000
Revision:
18:eec0880fcded
Parent:
17:cfe44346645c
Child:
19:6c0245063b96
Lijkt te werken, moet nog getest worden met echte metingen

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Bartvaart 0:557b1ff83a8a 1 #include "mbed.h"
Bartvaart 7:040591b3f019 2 #include "HIDScope.h"
Bartvaart 5:b400209df739 3 #include "Filterdesigns.h"
Bartvaart 17:cfe44346645c 4 #include "Kalibratie.h"
Bartvaart 17:cfe44346645c 5 #include "MODSERIAL.h" //bugfix
Bartvaart 18:eec0880fcded 6 #include "Mode.h"
Bartvaart 0:557b1ff83a8a 7
Bartvaart 7:040591b3f019 8 AnalogIn emg(A0); //Analog input van emg kabels
Bartvaart 18:eec0880fcded 9 HIDScope scope(3); //3 scopes
Bartvaart 0:557b1ff83a8a 10 Ticker EMGticker;
Bartvaart 17:cfe44346645c 11 MODSERIAL pc(USBTX, USBRX); //bugfix
Bartvaart 17:cfe44346645c 12 DigitalOut LedBlue(LED3);
Bartvaart 0:557b1ff83a8a 13
Bartvaart 0:557b1ff83a8a 14 //Sample frequentie
Bartvaart 15:c1a8f28d6583 15 double Fs = 500; //Hz
Bartvaart 1:98be4152a539 16 double t = 1/ Fs; // voor EMGticker
Bartvaart 5:b400209df739 17
Bartvaart 17:cfe44346645c 18 bool readymax = 0;
Bartvaart 17:cfe44346645c 19 bool readymin = 0;
Bartvaart 18:eec0880fcded 20 double ymin;
Bartvaart 18:eec0880fcded 21 double ymax;
Bartvaart 18:eec0880fcded 22 double thresholdlow;
Bartvaart 18:eec0880fcded 23 double thresholdmid;
Bartvaart 18:eec0880fcded 24 double thresholdhigh;
Bartvaart 18:eec0880fcded 25
Bartvaart 18:eec0880fcded 26 void EMGkalibratie(){
Bartvaart 18:eec0880fcded 27 LedBlue = 1;
Bartvaart 18:eec0880fcded 28 Init();
Bartvaart 18:eec0880fcded 29 ymax = KalibratieMax(readymax);
Bartvaart 18:eec0880fcded 30 ymin = KalibratieMin(readymin);
Bartvaart 18:eec0880fcded 31
Bartvaart 18:eec0880fcded 32 // bepalen van thresholds voor aan/uit
Bartvaart 18:eec0880fcded 33 thresholdlow = 0.2; // standaardwaarde
Bartvaart 18:eec0880fcded 34 thresholdmid = 0.5 * ymax; // afhankelijk van max output gebruiker
Bartvaart 18:eec0880fcded 35 thresholdhigh = 0.8 * ymax;
Bartvaart 18:eec0880fcded 36 }
Bartvaart 7:040591b3f019 37
Bartvaart 6:8197f9446daf 38 void EMGfilter(){
Bartvaart 7:040591b3f019 39 //uitlezen emg signaal
Bartvaart 7:040591b3f019 40 double u = emg.read();
Bartvaart 18:eec0880fcded 41 double y = Filterdesigns(u, ymin);
Bartvaart 18:eec0880fcded 42 //pc.printf("%f \n",y); //bugfix
Bartvaart 7:040591b3f019 43 // Plotten in HIDscope
Bartvaart 18:eec0880fcded 44 int mode = Mode(y, ymax, thresholdlow, thresholdmid, thresholdhigh); //bepaald welk signaal de motor krijgt (aan, uit, middel)
Bartvaart 15:c1a8f28d6583 45 scope.set(0,u); //ongefilterde waarde naar scope 1
Bartvaart 15:c1a8f28d6583 46 scope.set(1,y); //gefilterde waarde naar scope 2
Bartvaart 18:eec0880fcded 47 scope.set(2,mode);
Bartvaart 7:040591b3f019 48 scope.send(); //stuur de waardes naar HIDscope
Bartvaart 6:8197f9446daf 49 }
Bartvaart 0:557b1ff83a8a 50
Bartvaart 0:557b1ff83a8a 51
Bartvaart 0:557b1ff83a8a 52 int main(){
Bartvaart 17:cfe44346645c 53
Bartvaart 18:eec0880fcded 54 EMGkalibratie();
Bartvaart 18:eec0880fcded 55 //pc.printf("ymax = %f en ymin = %f \n",ymax, ymin); //bugfix
Bartvaart 17:cfe44346645c 56
Bartvaart 17:cfe44346645c 57 while(readymax == 1 && readymin == 1){
Bartvaart 17:cfe44346645c 58 LedBlue = 0;
Bartvaart 17:cfe44346645c 59 EMGticker.attach(&EMGfilter, t); //500H
Bartvaart 17:cfe44346645c 60 while(1){}
Bartvaart 17:cfe44346645c 61 }
Bartvaart 0:557b1ff83a8a 62 }
Bartvaart 0:557b1ff83a8a 63