Werkcollege opgave 23 september BMT K9
Dependencies: Encoder HIDScope MODSERIAL mbed QEI biquadFilter
main.cpp@26:1090acf98efc, 2015-10-09 (annotated)
- Committer:
- bscheltinga
- Date:
- Fri Oct 09 11:05:05 2015 +0000
- Revision:
- 26:1090acf98efc
- Parent:
- 25:38ab6dd19d9b
- Child:
- 27:85e5d36bb6c5
Low- and Highpassfilter van A0 printen in HIDScope. MOVAV lijkt niet te werken. //Indeling verandert
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bscheltinga | 0:fe3896c6eeb0 | 1 | #include "mbed.h" |
bscheltinga | 12:0a079e86348e | 2 | #include "HIDScope.h" |
bscheltinga | 0:fe3896c6eeb0 | 3 | #include "MODSERIAL.h" |
bscheltinga | 13:04e10692e239 | 4 | #include "biquadFilter.h" //Filter direct form II |
bscheltinga | 0:fe3896c6eeb0 | 5 | |
bscheltinga | 26:1090acf98efc | 6 | // [DEFINE INPUTS] // |
bscheltinga | 20:d5f5c60adc43 | 7 | AnalogIn emgL(A0); //Analog input left arm |
bscheltinga | 18:68067ffd169e | 8 | //AnalogIn emgR(PTB1); //Analog input right arm |
bscheltinga | 19:bd453bee03f6 | 9 | DigitalOut led1(LED_GREEN); |
bscheltinga | 21:594915ba2bf9 | 10 | |
bscheltinga | 26:1090acf98efc | 11 | // [DEFINE CONSTANTS] // |
bscheltinga | 26:1090acf98efc | 12 | float emgL_L, emgL_LH, emgLeft, emgL_H, emgL_Notch; |
bscheltinga | 26:1090acf98efc | 13 | double B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, MOVAVG; |
bscheltinga | 26:1090acf98efc | 14 | HIDScope scope(4); // Aantal HIDScope kanalen |
bscheltinga | 18:68067ffd169e | 15 | MODSERIAL pc(USBTX,USBRX); |
bscheltinga | 20:d5f5c60adc43 | 16 | volatile bool control_go = false; |
bscheltinga | 20:d5f5c60adc43 | 17 | Ticker control_tick; |
bscheltinga | 15:7870f7912904 | 18 | |
bscheltinga | 26:1090acf98efc | 19 | // [BIQUAD FILTERS] // |
bscheltinga | 24:a1ce6a87103c | 20 | const float la1 = 0.29358435979; |
bscheltinga | 24:a1ce6a87103c | 21 | const float la2 = 0.71930322156; |
bscheltinga | 24:a1ce6a87103c | 22 | const float lb0 = 1.00000000000; |
bscheltinga | 24:a1ce6a87103c | 23 | const float lb1 = 0.01516472727; |
bscheltinga | 24:a1ce6a87103c | 24 | const float lb2 = 1.00000000000; // Waarde van biquads via groep 1 2014 |
bscheltinga | 26:1090acf98efc | 25 | biquadFilter Lowpassfilter1 (la1, la2, lb0, lb1, lb2); |
bscheltinga | 15:7870f7912904 | 26 | |
bscheltinga | 24:a1ce6a87103c | 27 | const float ha1 = -0.29358436761; |
bscheltinga | 24:a1ce6a87103c | 28 | const float ha2 = 0.71930322175; |
bscheltinga | 24:a1ce6a87103c | 29 | const float hb0 = 1.000000000000; |
bscheltinga | 24:a1ce6a87103c | 30 | const float hb1 = -0.01516473660; |
bscheltinga | 24:a1ce6a87103c | 31 | const float hb2 = 1.000000000000; // Waarde van biquads via groep 1 2014 |
bscheltinga | 22:14abcfdd1554 | 32 | biquadFilter Highpassfilter (ha1, ha2, hb0, hb1, hb2); |
bscheltinga | 22:14abcfdd1554 | 33 | |
bscheltinga | 26:1090acf98efc | 34 | // [FUNCTIONS] // |
bscheltinga | 21:594915ba2bf9 | 35 | void ControlGo() //Control flag |
bscheltinga | 21:594915ba2bf9 | 36 | { |
bscheltinga | 21:594915ba2bf9 | 37 | control_go = true; |
bscheltinga | 21:594915ba2bf9 | 38 | led1 = 0; |
bscheltinga | 21:594915ba2bf9 | 39 | } |
bscheltinga | 0:fe3896c6eeb0 | 40 | |
bscheltinga | 26:1090acf98efc | 41 | |
bscheltinga | 26:1090acf98efc | 42 | // [MAIN FUNCTION] // |
bscheltinga | 13:04e10692e239 | 43 | int main() |
bscheltinga | 13:04e10692e239 | 44 | { |
bscheltinga | 25:38ab6dd19d9b | 45 | control_tick.attach(&ControlGo, 0.005); |
bscheltinga | 20:d5f5c60adc43 | 46 | pc.baud(9600); |
bscheltinga | 20:d5f5c60adc43 | 47 | |
bscheltinga | 15:7870f7912904 | 48 | while(true) { |
bscheltinga | 20:d5f5c60adc43 | 49 | |
bscheltinga | 20:d5f5c60adc43 | 50 | if(control_go) |
bscheltinga | 23:c9c9c1d7864a | 51 | |
bscheltinga | 23:c9c9c1d7864a | 52 | // [EMG FILTEREN MET HIGH- EN LOWPASSFILTER] // |
bscheltinga | 23:c9c9c1d7864a | 53 | emgLeft = emgL.read(); |
bscheltinga | 23:c9c9c1d7864a | 54 | emgLeft = fabs(emgLeft); |
bscheltinga | 23:c9c9c1d7864a | 55 | emgL_L = Lowpassfilter.step(emgLeft); //emgL_L Linker bicep met lowpass filter |
bscheltinga | 24:a1ce6a87103c | 56 | emgL_H = Highpassfilter.step(emgLeft); //emgL_L met Highpassfilter |
bscheltinga | 25:38ab6dd19d9b | 57 | emgL_Notch = Highpassfilter.step(emgL_L); //Highpass filter over de lowpass filter = Notch |
bscheltinga | 23:c9c9c1d7864a | 58 | |
bscheltinga | 26:1090acf98efc | 59 | // [MOVING AVERAGE] // Mov avg van lowpass filter |
bscheltinga | 25:38ab6dd19d9b | 60 | B0 = emgL_L; |
bscheltinga | 25:38ab6dd19d9b | 61 | 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; |
bscheltinga | 24:a1ce6a87103c | 62 | B9=B8; |
bscheltinga | 24:a1ce6a87103c | 63 | B8=B7; |
bscheltinga | 24:a1ce6a87103c | 64 | B7=B6; |
bscheltinga | 24:a1ce6a87103c | 65 | B6=B5; |
bscheltinga | 24:a1ce6a87103c | 66 | B5=B4; |
bscheltinga | 24:a1ce6a87103c | 67 | B4=B3; |
bscheltinga | 24:a1ce6a87103c | 68 | B3=B2; |
bscheltinga | 24:a1ce6a87103c | 69 | B2=B1; |
bscheltinga | 24:a1ce6a87103c | 70 | B1=B0; |
bscheltinga | 23:c9c9c1d7864a | 71 | |
bscheltinga | 25:38ab6dd19d9b | 72 | scope.set(0,emgLeft); |
bscheltinga | 22:14abcfdd1554 | 73 | scope.set(1,emgL_L); |
bscheltinga | 24:a1ce6a87103c | 74 | scope.set(2,emgL_H); |
bscheltinga | 25:38ab6dd19d9b | 75 | scope.set(3,MOVAVG); |
bscheltinga | 20:d5f5c60adc43 | 76 | scope.send(); |
bscheltinga | 21:594915ba2bf9 | 77 | led1 = 1; //De led gaat flikkeren wanneer deze loop uitgevoerd wordt |
bscheltinga | 20:d5f5c60adc43 | 78 | |
bscheltinga | 14:57d38789bff2 | 79 | } |
bscheltinga | 14:57d38789bff2 | 80 | } |