![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Laagdoorlaatfilter MBED + HIDscope + optionele LCD
Dependencies: HIDScope MODSERIAL TextLCD mbed
main.cpp@0:8405998d18d6, 2014-10-16 (annotated)
- Committer:
- phgbartels
- Date:
- Thu Oct 16 14:42:43 2014 +0000
- Revision:
- 0:8405998d18d6
Laagdoorlaatfilter + HID-scope + optionele LCD
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
phgbartels | 0:8405998d18d6 | 1 | #include "mbed.h" |
phgbartels | 0:8405998d18d6 | 2 | #include "MODSERIAL.h" |
phgbartels | 0:8405998d18d6 | 3 | #include "HIDScope.h" |
phgbartels | 0:8405998d18d6 | 4 | #include "TextLCD.h" |
phgbartels | 0:8405998d18d6 | 5 | |
phgbartels | 0:8405998d18d6 | 6 | /*definieren van de filtercoëfficienten, waarbij A. de y-componenten(output) geven en B. de x-componenten(input)*/ |
phgbartels | 0:8405998d18d6 | 7 | #define A1 -1.3490 |
phgbartels | 0:8405998d18d6 | 8 | #define A2 0.5140 |
phgbartels | 0:8405998d18d6 | 9 | #define B0 0.7157 |
phgbartels | 0:8405998d18d6 | 10 | #define B1 -1.4315 |
phgbartels | 0:8405998d18d6 | 11 | #define B2 0.7157 |
phgbartels | 0:8405998d18d6 | 12 | |
phgbartels | 0:8405998d18d6 | 13 | /*aantal kanalen die naar de HIDscope */ |
phgbartels | 0:8405998d18d6 | 14 | HIDScope scope(2); /*Definieren dat we 2 kanalen naar de HID-scope willen sturen*/ |
phgbartels | 0:8405998d18d6 | 15 | AnalogIn emg(PTB1); /*Analog input pin definieren*/ |
phgbartels | 0:8405998d18d6 | 16 | TextLCD lcd(PTD2, PTA12, PTB2, PTB3, PTC2, PTA13, TextLCD::LCD16x2); /*pinnen voor textLCD toeschrijven naar de library tekstLCD, zodat de functies uit die bibliotheek gebruikt kunnen worden*/ |
phgbartels | 0:8405998d18d6 | 17 | float(y); /*y moet een floating point worden(type definieren)*/ |
phgbartels | 0:8405998d18d6 | 18 | float filter(float); /*naar de functie filter willen we een float toeschrijven, welke later gedefinieerd mag worden*/ |
phgbartels | 0:8405998d18d6 | 19 | int main() { |
phgbartels | 0:8405998d18d6 | 20 | float x; /*x moet een floating point worden*/ |
phgbartels | 0:8405998d18d6 | 21 | while(true) { |
phgbartels | 0:8405998d18d6 | 22 | x = emg.read(); /*het EMG signaal vanaf de pin wordt opgeslagen in x*/ |
phgbartels | 0:8405998d18d6 | 23 | y = filter(x); /*x gaat in de filter*/ |
phgbartels | 0:8405998d18d6 | 24 | scope.set(0, y); /*het bewerkte signaal wordt op kanaal 1 getoont*/ |
phgbartels | 0:8405998d18d6 | 25 | scope.set(1,emg); /*het ruwe signaal wordt op kanaal 2 getoont*/ |
phgbartels | 0:8405998d18d6 | 26 | scope.send(); /*Hiermee stuur je de data daadwerkelijk naar je pc*/ |
phgbartels | 0:8405998d18d6 | 27 | lcd.cls(); /*schoonmaken LCD scherm*/ |
phgbartels | 0:8405998d18d6 | 28 | /*hieronder een leuke if functie zodat onze display aangeeft of iemand een lage, middel of hoge aanspanning heeft.*/ |
phgbartels | 0:8405998d18d6 | 29 | if (abs(y) <= 0.05){ |
phgbartels | 0:8405998d18d6 | 30 | lcd.printf("Lage\naanspanning"); |
phgbartels | 0:8405998d18d6 | 31 | wait(0.2); |
phgbartels | 0:8405998d18d6 | 32 | } |
phgbartels | 0:8405998d18d6 | 33 | |
phgbartels | 0:8405998d18d6 | 34 | else if (abs(y) >= 0.05 && abs(y) <= 0.10){ |
phgbartels | 0:8405998d18d6 | 35 | lcd.printf("Middel\naanspanning"); |
phgbartels | 0:8405998d18d6 | 36 | wait(0.2); |
phgbartels | 0:8405998d18d6 | 37 | } |
phgbartels | 0:8405998d18d6 | 38 | |
phgbartels | 0:8405998d18d6 | 39 | else{ |
phgbartels | 0:8405998d18d6 | 40 | lcd.printf("Hoge\naanspanning"); |
phgbartels | 0:8405998d18d6 | 41 | wait(0.2); |
phgbartels | 0:8405998d18d6 | 42 | } |
phgbartels | 0:8405998d18d6 | 43 | wait(0.005); /*wacht 0.005s, omdat we meten met 200Hz*/ |
phgbartels | 0:8405998d18d6 | 44 | } |
phgbartels | 0:8405998d18d6 | 45 | } |
phgbartels | 0:8405998d18d6 | 46 | |
phgbartels | 0:8405998d18d6 | 47 | float filter(float x) { /*de filter functie! Waarbij de x de input is en y de output!*/ |
phgbartels | 0:8405998d18d6 | 48 | static float y, x1, y1, x2, y2; |
phgbartels | 0:8405998d18d6 | 49 | y = -A1*y1-A2*y2+B0*x+B1*x1+B2*x2; |
phgbartels | 0:8405998d18d6 | 50 | x2 = x1; |
phgbartels | 0:8405998d18d6 | 51 | x1 = x; |
phgbartels | 0:8405998d18d6 | 52 | y2 = y1; |
phgbartels | 0:8405998d18d6 | 53 | y1 = y; |
phgbartels | 0:8405998d18d6 | 54 | return y; |
phgbartels | 0:8405998d18d6 | 55 | } |