:)
Dependencies: HIDScope MODSERIAL mbed-dsp mbed
Fork of emg_filter by
Diff: EMGfilter.cpp
- Revision:
- 45:7950fa411107
- Parent:
- 44:b47f559826ba
- Child:
- 46:d090e41fb61f
--- a/EMGfilter.cpp Mon Oct 20 08:16:25 2014 +0000 +++ b/EMGfilter.cpp Mon Oct 20 08:33:41 2014 +0000 @@ -99,7 +99,7 @@ scope.set(0,emg_valueB); //uint value scope.set(1,filtered_emgB); //processed float scope.send(); - + // Moving Average Filter Biceps float B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, MOVAVG_B; @@ -117,126 +117,130 @@ B1=B0; } +} // Triceps EMG lezen - void looperT() { - /*variable to store value in*/ - uint16_t emg_valueT; +void looperT() +{ + /*variable to store value in*/ + uint16_t emg_valueT; - float emg_value_f32T; - /*put raw emg value both in red and in emg_value*/ - emg_valueT = emgT.read_u16(); // read direct ADC result, converted to 16 bit integer (0..2^16 = 0..65536 = 0..3.3V) - emg_value_f32T = emgT.read(); + float emg_value_f32T; + /*put raw emg value both in red and in emg_value*/ + emg_valueT = emgT.read_u16(); // read direct ADC result, converted to 16 bit integer (0..2^16 = 0..65536 = 0..3.3V) + emg_value_f32T = emgT.read(); - //process emg - arm_biquad_cascade_df1_f32(&highpass, &emg_value_f32T, &filtered_emgT, 1 ); - filtered_emgT = fabs(filtered_emgT); - arm_biquad_cascade_df1_f32(&lowpass, &filtered_emgT, &filtered_emgT, 1 ); + //process emg + arm_biquad_cascade_df1_f32(&highpass, &emg_value_f32T, &filtered_emgT, 1 ); + filtered_emgT = fabs(filtered_emgT); + arm_biquad_cascade_df1_f32(&lowpass, &filtered_emgT, &filtered_emgT, 1 ); - /*send value to PC. */ - scope.set(2,emg_valueT); //uint value - scope.set(3,filtered_emgT); //processed float - scope.send(); - - // Moving Average Filter Triceps + /*send value to PC. */ + scope.set(2,emg_valueT); //uint value + scope.set(3,filtered_emgT); //processed float + scope.send(); - float T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, MOVAVG_T; + // Moving Average Filter Triceps - T0=filtered_emgT; - MOVAVG_T=T0*0.1+T1*0.1+T2*0.1+T3*0.1+T4*0.1+T5*0.1+T6*0.1+T7*0.1+T8*0.1+T9*0.1; + float T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, MOVAVG_T; + + T0=filtered_emgT; + MOVAVG_T=T0*0.1+T1*0.1+T2*0.1+T3*0.1+T4*0.1+T5*0.1+T6*0.1+T7*0.1+T8*0.1+T9*0.1; - T9=T8; - T8=T7; - T7=T6; - T6=T5; - T5=T4; - T4=T3; - T3=T2; - T2=T1; - T1=T0; + T9=T8; + T8=T7; + T7=T6; + T6=T5; + T5=T4; + T4=T3; + T3=T2; + T2=T1; + T1=T0; - - } +} +} - int main() { - Ticker log_timer; - //set up filters. Use external array for constants - arm_biquad_cascade_df1_init_f32(&lowpass,1 , lowpass_const, lowpass_states); - arm_biquad_cascade_df1_init_f32(&highpass,1 ,highpass_const, highpass_states); +int main() +{ + Ticker log_timer; + //set up filters. Use external array for constants + arm_biquad_cascade_df1_init_f32(&lowpass,1 , lowpass_const, lowpass_states); + arm_biquad_cascade_df1_init_f32(&highpass,1 ,highpass_const, highpass_states); - /**Here you attach the 'void looper(void)' function to the Ticker object - * The looper() function will be called every 0.01 seconds. - * Please mind that the parentheses after looper are omitted when using attach. - */ - log_timer.attach(looperB, 0.005);//?? - log_timer.attach(looperT, 0.005);//?? - while(1) { //Loop - /*Empty!*/ - /*Everything is handled by the interrupt routine now!*/ - } + /**Here you attach the 'void looper(void)' function to the Ticker object + * The looper() function will be called every 0.01 seconds. + * Please mind that the parentheses after looper are omitted when using attach. + */ + log_timer.attach(looperB, 0.005);//?? + log_timer.attach(looperT, 0.005);//?? + while(1) { //Loop + /*Empty!*/ + /*Everything is handled by the interrupt routine now!*/ } +} //filtered_emgB //filtered_emgT - void Antwoord() { - float drempelwaardeT=4.99; - int y; +void Antwoord() +{ + float drempelwaardeT=4.99; + int y; - if (MOVAVG_Tf > drempelwaardeT) { - y=1; - } else { - y=0; - } + if (MOVAVG_T > drempelwaardeT) { + y=1; + } else { + y=0; + } - if (y==1) { - pc.printf("Motor 2 beweegt\n"); - } else { - pc.printf("Motor 2 beweegt niet\n"); - } + if (y==1) { + pc.printf("Motor 2 beweegt\n"); + } else { + pc.printf("Motor 2 beweegt niet\n"); + } - void Antwoord() { - float drempelwaardeB1=4.99; - float drempelwaardeB2=6 - float drempelwaardeB3=10 - int yB1; - int yB2; - int yB3; + void Antwoord() { + float drempelwaardeB1=4.99; + float drempelwaardeB2=6; + float drempelwaardeB3=10; + int yB1; + int yB2; + int yB3; - if (MOVAVG_B > drempelwaarde1) { - yB1=1; - if MOVAVG_B > drempelwaarde2 { - yB2=1; - if MOVAVG_B > drempeldwaarde3{ - yB3=1; - } else { - yB3=0 - } + if (MOVAVG_B > drempelwaarde1) { + yB1=1; + if MOVAVG_B > drempelwaarde2 { + yB2=1; + if MOVAVG_B > drempeldwaarde3{ + yB3=1; } else { - yB2=0 + yB3=0 + } + } else { + yB2=0 - } - else { - yB1=0; + } + else { + yB1=0; + } + int snelheidsstand; + int yB1, yB2, yB3; + snelheidsstand=yB1+yB2+yB3; + if (snelheidsstand==1) { + pc.printf("Motor 1 beweegt met snelheid 1\n"); + } else { + pc.printf("Motor 2 beweegt niet\n"); } -int snelheidsstand; -int yB1, yB2, yB3; -snelheidsstand=yB1+yB2+yB3; - if (snelheidsstand==1) { - pc.printf("Motor 1 beweegt met snelheid 1\n"); - } else { - pc.printf("Motor 2 beweegt niet\n"); - } - if (snelheidsstand==2) { - pc.printf("Motor 1 beweegt met snelheid 2\n"); - } else { - pc.printf("\n"); - } - if (snelheidsstand==3) { - pc.printf("Motor 1 beweegt met snelheid 3\n"); - } else { - pc.printf("\n"); + if (snelheidsstand==2) { + pc.printf("Motor 1 beweegt met snelheid 2\n"); + } else { + pc.printf("\n"); } + if (snelheidsstand==3) { + pc.printf("Motor 1 beweegt met snelheid 3\n"); + } else { + pc.printf("\n"); } + }