2 losse EMG signalen van de biceps en deltoid
Dependencies: HIDScope MODSERIAL mbed-dsp mbed Encoder
Fork of Lampje_EMG_Gr6 by
Diff: main.cpp
- Revision:
- 1:099b19376f16
- Parent:
- 0:db396b9f4b4c
- Child:
- 2:39e1bde54e73
--- a/main.cpp Wed Oct 15 14:07:03 2014 +0000 +++ b/main.cpp Wed Oct 15 14:11:33 2014 +0000 @@ -7,7 +7,7 @@ DigitalOut myled1(LED_RED); DigitalOut myled2(LED_GREEN); DigitalOut myled3(LED_BLUE); -PwmOut filtered_emg(PTD4); +PwmOut motorsignal(PTD4); //Define objects AnalogIn emg0(PTB1); //Analog input @@ -23,6 +23,7 @@ float highpass_const[] = {0.956542835577484, -1.913085671154968, 0.956542835577484, 1.911196288237583, -0.914975054072353}; //state values float highpass_states[4]; +float filtered_emg; /** Looper function @@ -38,11 +39,13 @@ * in the example below, the variable is not re-used in the main function, and is thus declared * local in the looper function only. **/ + + void looper() { - /*variable to store value in*/ + /*variable to store value in*/ uint16_t emg_value; - float filtered_emg; + float emg_value_f32; /*put raw emg value both in red and in emg_value*/ emg_value = emg0.read_u16(); // read direct ADC result, converted to 16 bit integer (0..2^16 = 0..65536 = 0..3.3V) @@ -52,7 +55,7 @@ arm_biquad_cascade_df1_f32(&highpass, &emg_value_f32, &filtered_emg, 1 ); filtered_emg = fabs(filtered_emg); arm_biquad_cascade_df1_f32(&lowpass, &filtered_emg, &filtered_emg, 1 ); - + /*send value to PC. */ scope.set(0,emg_value); //uint value scope.set(1,filtered_emg); //processed float @@ -75,11 +78,11 @@ } int main() -{ +{ pc.baud(115200); - + Ticker log_timer; - //set up filters. Use external array for constants + //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); @@ -88,53 +91,49 @@ * Please mind that the parentheses after looper are omitted when using attach. */ log_timer.attach(looper, 0.001); - while(1) //Loop - { - /*Empty!*/ - /*Everything is handled by the interrupt routine now!*/ - { - char c = '0'; - while(1) { - pc.printf("Het programma blijft knipperen totdat er op '1' wordt gedrukt.\n"); - do { - myled1 = 1; - myled2 = 1; - myled3 = 1; - wait(1); - myled1 = 1; - myled2 = 0; - myled3 = 1; - wait(1); - if(pc.readable()) { - c = pc.getc(); + while(1) { //Loop + /*Empty!*/ + /*Everything is handled by the interrupt routine now!*/ + { + char c = '0'; + while(1) { + pc.printf("Het programma blijft knipperen totdat er op '1' wordt gedrukt.\n"); + do { + myled1 = 1; + myled2 = 0; + myled3 = 1; + + + } } - } while(filtered_emg < 0.04); - //c = pc.getc(); - while(filtered_emg.read() > 0.04) { //Wanneer er op 1 wordt gedrukt gaat het lampje rood knipperen - c = '0'; - BlinkRed(2); - - if (pc.readable()) { //Wanneer er binnen de vastgestelde tijd weer op 1 wordt gedrukt, gaat het lampje blauw knipperen, anders reset. - c = pc.getc(); + while(filtered_emg < 0.04); + //c = pc.getc(); + while(filtered_emg > 0.04) { //Wanneer het EMG signaal een piek geeft wordt het volgende uitgevoerd. c = '0'; - myled1 = 1; - myled2 = 1; - myled3 = 1; - wait(1); - myled1 = 1; - myled2 = 1; - myled3 = 0; - wait(1); - myled1 = 1; - myled2 = 1; - myled3 = 1; - wait(1); - myled1 = 1; - myled2 = 1; - myled3 = 0; - wait(1);} - else if (c != '1') { - break; } + BlinkRed(2); + + if (pc.readable()) { //Wanneer er binnen de vastgestelde tijd weer op 1 wordt gedrukt, gaat het lampje blauw knipperen, anders reset. + c = pc.getc(); + c = '0'; + myled1 = 1; + myled2 = 1; + myled3 = 1; + wait(1); + myled1 = 1; + myled2 = 1; + myled3 = 0; + wait(1); + myled1 = 1; + myled2 = 1; + myled3 = 1; + wait(1); + myled1 = 1; + myled2 = 1; + myled3 = 0; + wait(1); + } else if (c != '1') { + break; + } if(pc.readable()) { c = pc.getc(); @@ -147,7 +146,7 @@ } } } - } +} } int i; @@ -161,11 +160,10 @@ void b (void) { int i; - + i=66; int j = a(); pc.print(i); - } +} b(); - \ No newline at end of file