Wouter Schuttert / Mbed 2 deprecated Derp

Dependencies:   HIDScope mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "Biquad.h"
00003 #include "filtervalues.h"
00004 #include "HIDScope.h"
00005 
00006 
00007 DigitalOut led_red(LED_RED);
00008 
00009 Serial pc(USBTX,USBRX);// serial connection to pc
00010 
00011 Ticker      sample_timer;
00012 HIDScope    scope( 2 );
00013 
00014 
00015 Biquad myfilter1;// make filter for signal 1
00016 Biquad myfilter2;//make filter for signal 2
00017 
00018 AnalogIn emg1_input(A0);//input for first emg signal 1
00019 AnalogIn emg2_input(A1);//input for first emg signal 2
00020 
00021 volatile double filteredsignal1=0;//the first filtered emg signal 1
00022 volatile double filteredsignal2=0;//the first filtered emg signal 2
00023 
00024 
00025 void filtereverything(bool makeempty)
00026 {
00027     //highpass  
00028     double pass1_emg1 = myfilter1.filter(emg1_input.read(), v1_f1_emg1 , v2_f1_emg1 , a1_f1 , a2_f1 , b0_f1 , b1_f1 , b2_f1);
00029     double pass1_emg2 = myfilter1.filter(emg2_input.read(), v1_f2_emg2 , v2_f1_emg2 , a1_f1 , a2_f1 , b0_f1 , b1_f1 , b2_f1);
00030     // take aboslute values    
00031     double pass2_emg1 = fabs(pass1_emg1);
00032     double pass2_emg2 = fabs(pass1_emg2);
00033     //lowpass   
00034     double pass3_emg1 = myfilter1.filter(pass2_emg1, v1_f2_emg1 , v2_f2_emg1 , a1_f2 , a2_f2 , b0_f2 , b1_f2 , b2_f2);
00035     double pass3_emg2 = myfilter1.filter(pass2_emg2, v1_f2_emg2 , v2_f2_emg2 , a1_f2 , a2_f2 , b0_f2 , b1_f2 , b2_f2);
00036     
00037     filteredsignal1 = pass1_emg1;
00038     filteredsignal2 = pass3_emg2;
00039     
00040     if (makeempty==true) {//this is needed so the filtered value is not high after shooting basically it resets the filter
00041         pass1_emg1 = pass2_emg1 = pass3_emg1 = 0;
00042         v1_f1_emg1 = v2_f1_emg1 = v1_f2_emg1 = v2_f2_emg1 = 0;
00043         pass1_emg2 = pass2_emg2 = pass3_emg2 = 0;
00044         v1_f1_emg2 = v2_f1_emg2 = v1_f2_emg2 = v2_f2_emg2 = 0;
00045     }
00046 }
00047 
00048 void scopedata()
00049 {
00050     scope.set(0,emg1_input.read()); // 
00051     scope.set(1,filteredsignal1); // 
00052    
00053     scope.send(); // send info to HIDScope server
00054 }
00055 
00056 int main()
00057 {
00058     sample_timer.attach(&scopedata, 0.002);
00059     pc.baud(115200);
00060     
00061     while (true) {
00062       
00063       filtereverything(false);
00064       
00065        if(filteredsignal1 > 0.8){
00066            led_red = 0;
00067            }
00068         else{
00069             led_red = 1;            
00070             }
00071             
00072        
00073     }
00074 }