Dominique Clevers / Mbed 2 deprecated TEST

Dependencies:   Encoder HIDScope MODSERIAL mbed

Fork of TEST by Daan

Files at this revision

API Documentation at this revision

Comitter:
Daanmk
Date:
Wed Oct 08 15:16:17 2014 +0000
Parent:
1:c66edcd91108
Child:
3:ef4d1423db92
Commit message:
filterhighpass;

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Wed Oct 01 13:05:49 2014 +0000
+++ b/main.cpp	Wed Oct 08 15:16:17 2014 +0000
@@ -14,11 +14,12 @@
 #include "encoder.h"
 #include "HIDScope.h"
 //Define objects
-Ticker log_timer;
-HIDScope scope(6);
-PwmOut      red(LED_RED);
-PwmOut      green(LED_GREEN);
-PwmOut      blue(LED_BLUE);
+#define A1 0.807313721035803
+#define A2 -0.263720649619515
+#define B1 -1.721118336253692
+#define B2 0.721118336253692
+HIDScope scope(2);
+
 AnalogIn    emgbc(PTB0); //Onderste bordje biceps meting
 AnalogIn    emgtr(PTB1); //Tweede bordje triceps meting
 //DigitalOut motordirA(PTD3);
@@ -27,43 +28,26 @@
 //Encoder motor2(PTD5,PTC8);
 
 MODSERIAL   pc(USBTX,USBRX);
-//float emg1,emg2,emg1_high,emg2_high,emg1filtered,emg2filtered;
+
+float filter(float);
 
-//void meten()
-//{
-//    //int i=0;
-//    //emg signaal verwerken en offset verwijderen:
-//    emg1 = (emgbc.read()-0.5)*2;           /* BICEPS */
-//    emg2 = (emgtr.read()-0.5)*2;          /* TRICEPS */
-//}
-void looper()
-{
-    /*variable to store value in*/    
-    uint16_t emg_value0;
-    uint16_t emg_value1;
-    /*put raw emg value both in red and in emg_value*/
-    red.write(emgbc.read());      // read float value (0..1 = 0..3.3V)
-    blue.write(emgtr.read());
-    emg_value0 = emgbc.read_u16();
-    emg_value1 = emgtr.read_u16();  // read direct ADC result (0..4096 = 0..3.3V)
-    /*send value to PC. Line below is used to prevent buffer overrun */
-    scope.set(0,emg_value0);
-    scope.set(1,red.read());
-    scope.set(2,emg_value1);
-    scope.set(3,blue.read());
-    scope.set(4,emg_value1);
-    scope.set(5,blue.read());
-    scope.send();
+int main() {
+    float x,y;
+    while(true) {
+        x = (emgbc.read()-0.5)*2;
+        y=filter(x);
+        scope.set(0,x);
+        scope.set(1,y);
+        scope.send();
+        }
 }
 
-int main()
-{
-    /*setup baudrate. Choose the same in your program on PC side*/
-    pc.baud(115200);
-    /*set the period for the PWM to the red LED*/
-    red.period_ms(2);
-    log_timer.attach(looper, 0.005);
-    while(1) //Loop
-    {
-    }
-}
\ No newline at end of file
+float filter(float x) {
+    static float y,x1,y1,x2,y2;
+    y = A1*y1+A2*y2+x+B1*x1+B2*x2;
+    x2=x1;
+    x1=x;
+    y2=y1;
+    y1=y;
+    return y;
+}