Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: HIDScope MODSERIAL mbed-dsp mbed
Fork of emg_filter2 by
Revision 60:7b5ca1a4d7c3, committed 2014-10-20
- Comitter:
- s1340735
- Date:
- Mon Oct 20 17:59:08 2014 +0000
- Parent:
- 59:fa8d6909d8ac
- Commit message:
- test
Changed in this revision
| EMGfilter.cpp | Show annotated file Show diff for this revision Revisions of this file |
| emg_mk.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/EMGfilter.cpp Mon Oct 20 13:07:38 2014 +0000
+++ b/EMGfilter.cpp Mon Oct 20 17:59:08 2014 +0000
@@ -3,9 +3,6 @@
#include "MODSERIAL.h"
#include "arm_math.h"
-
-// ****** emg filter shizzle ******
-
//Define objects
AnalogIn emgB(PTB0); //Analog input bicep
AnalogIn emgT(PTB1); //Analog input tricep
@@ -20,7 +17,7 @@
MODSERIAL pc(USBTX,USBRX);
-HIDScope scope(4);//uitgang scherm
+HIDScope scope(2);//uitgang scherm
arm_biquad_casd_df1_inst_f32 lowpass;
//constants for 50Hz lowpass
@@ -51,35 +48,38 @@
// Calibratie
-pc.printf("Calibratie drempelwaarde Triceps stand 1\n");
-wait(0.5);
+void Calibratie()
{
- int i;
- int j=19;
-
- for (i = 0, i<=j; i ++) {
- /*variable to store value in*/
- uint16_t emg_valueT1i_C;
+ pc.printf("Calibratie drempelwaarde Triceps stand 1\n");
+ wait(0.5);
+ {
+ int i;
+ int j=19;
- float emg_value_f32T1i_C;
- /*put raw emg value both in red and in emg_value*/
- emg_valueT1i_C = emgT1i_C.read_u16(); // read direct ADC result, converted to 16 bit integer (0..2^16 = 0..65536 = 0..3.3V)
- emg_value_f32T1i_C = emgT1i_C.read();
+ for (i=0, i<=j; i++) {
+ /*variable to store value in*/
+ uint16_t emg_valueT1i_C;
- //process emg
- arm_biquad_cascade_df1_f32(&highpass, &emg_value_f32T1i_C, &filtered_emgT1i_C, 1 );
- filtered_emgT1i_C = fabs(filtered_emgT1i_C);
- arm_biquad_cascade_df1_f32(&lowpass, &filtered_emgT1i_C, &filtered_emgT1i_C, 1 );
+ float emg_value_f32T1i_C;
+ /*put raw emg value both in red and in emg_value*/
+ emg_valueT1i_C = emgT1i_C.read_u16(); // read direct ADC result, converted to 16 bit integer (0..2^16 = 0..65536 = 0..3.3V)
+ emg_value_f32T1i_C = emgT1i_C.read();
+
+ //process emg
+ arm_biquad_cascade_df1_f32(&highpass, &emg_value_f32T1i_C, &filtered_emgT1i_C, 1 );
+ filtered_emgT1i_C = fabs(filtered_emgT1i_C);
+ arm_biquad_cascade_df1_f32(&lowpass, &filtered_emgT1i_C, &filtered_emgT1i_C, 1 );
+ }
}
}
-// Mean Triceps stand 1
-
-float MeanT1=filtered_emgT10_C*0.05+filtered_emgT11_C*0.05+filtered_emgT12_C*0.05+filtered_emgT13_C*0.05+filtered_emgT14_C*0.05+filtered_emgT15_C*0.05+filtered_emgT16_C*0.05+filtered_emgT17_C*0.05+filtered_emgT18_C*0.05+filtered_emgT19_C*0.05+filtered_emgT110_C*0.05+filtered_emgT111_C*0.05+filtered_emgT112_C*0.05+filtered_emgT113_C*0.05+filtered_emgT114_C*0.05+filtered_emgT115_C*0.05+filtered_emgT116_C*0.05+filtered_emgT117_C*0.05+filtered_emgT118_C*0.05+filtered_emgT119_C*0.05;
-
+// Mean Triceps stand 1
+void MeanTriceps()
+{
+ float MeanT1=filtered_emgT10_C*0.05+filtered_emgT11_C*0.05+filtered_emgT12_C*0.05+filtered_emgT13_C*0.05+filtered_emgT14_C*0.05+filtered_emgT15_C*0.05+filtered_emgT16_C*0.05+filtered_emgT17_C*0.05+filtered_emgT18_C*0.05+filtered_emgT19_C*0.05+filtered_emgT110_C*0.05+filtered_emgT111_C*0.05+filtered_emgT112_C*0.05+filtered_emgT113_C*0.05+filtered_emgT114_C*0.05+filtered_emgT115_C*0.05+filtered_emgT116_C*0.05+filtered_emgT117_C*0.05+filtered_emgT118_C*0.05+filtered_emgT119_C*0.05;
-
+}
//BICEP EMG LEZEN
void looperB()
@@ -118,6 +118,7 @@
B1=B0;
}
}
+
// Triceps EMG lezen
void looperT()
{
@@ -158,7 +159,7 @@
int main()
{
- Ticker log_timer,;
+ Ticker log_timer,; //bicep logtimer
//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);
@@ -168,16 +169,28 @@
* Please mind that the parentheses after looper are omitted when using attach.
*/
log_timer.attach(looperB, 0.005);//??
+ while(1) { //Loop
+ /*Empty!*/
+ /*Everything is handled by the interrupt routine now!*/
+ }
+
+ Ticker log_timer,; //bicep logtimer
+ //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(looperT, 0.005);//??
while(1) { //Loop
/*Empty!*/
/*Everything is handled by the interrupt routine now!*/
}
+
}
-//filtered_emgB
-//filtered_emgT
-
void AntwoordT()
{
drempelwaardeT1=4.99;
@@ -215,46 +228,47 @@
}
}
- void AntwoordB() {
- drempelwaardeB1=4.99;
- drempelwaardeB2=6;
- drempelwaardeB3=10;
- int yB1;
- int yB2;
- int yB3;
+void AntwoordB()
+{
+ drempelwaardeB1=4.99;
+ drempelwaardeB2=6;
+ drempelwaardeB3=10;
+ int yB1;
+ int yB2;
+ int yB3;
- if (MOVAVG_B > drempelwaardeB1) {
- yB1=1;
- if (MOVAVG_B > drempelwaardeB2) {
- yB2=1;
- if (MOVAVG_B > drempelwaardeB3) {
- yB3=1;
- } else {
- yB3=0;
- }
+ if (MOVAVG_B > drempelwaardeB1) {
+ yB1=1;
+ if (MOVAVG_B > drempelwaardeB2) {
+ yB2=1;
+ if (MOVAVG_B > drempelwaardeB3) {
+ yB3=1;
} else {
- yB2=0;
+ yB3=0;
}
} else {
- yB1=0;
- }
-
- int snelheidsstand;
-
- snelheidsstand=yB1+yB2+yB3;
- if (snelheidsstand==1) {
- pc.printf("Motor 1 beweegt met snelheid 1\n");
- } else {
- pc.printf("Motor 1 beweegt niet met snelheid 1\n");
+ yB2=0;
}
- if (snelheidsstand==2) {
- pc.printf("Motor 1 beweegt met snelheid 2\n");
- } else {
- pc.printf("Motor 1 beweegt niet met snelheid 2\n");
- }
- if (snelheidsstand==3) {
- pc.printf("Motor 1 beweegt met snelheid 3\n");
- } else {
- pc.printf("Motor 1 beweegt niet met snelheid 3\n");
- }
+ } else {
+ yB1=0;
+ }
+
+ int snelheidsstand;
+
+ snelheidsstand=yB1+yB2+yB3;
+ if (snelheidsstand==1) {
+ pc.printf("Motor 1 beweegt met snelheid 1\n");
+ } else {
+ pc.printf("Motor 1 beweegt niet met snelheid 1\n");
}
+ if (snelheidsstand==2) {
+ pc.printf("Motor 1 beweegt met snelheid 2\n");
+ } else {
+ pc.printf("Motor 1 beweegt niet met snelheid 2\n");
+ }
+ if (snelheidsstand==3) {
+ pc.printf("Motor 1 beweegt met snelheid 3\n");
+ } else {
+ pc.printf("Motor 1 beweegt niet met snelheid 3\n");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/emg_mk.cpp Mon Oct 20 17:59:08 2014 +0000
@@ -0,0 +1,28 @@
+#include "mbed.h"
+#include "HIDScope.h"
+#include "MODSERIAL.h"
+#include "arm_math.h"
+
+
+HIDScope scope(2);
+
+AnalogIn emgB(PTB0);
+
+float (filtered_emgB);
+float drempelwaardeB1, drempelwaardeB2, drempelwaardeB3;
+int yB1, yB2, yB3;
+
+int main()
+{
+ float ruw_emgB;
+ while (true) {
+ ruw_emgB = emgB.read();
+ filtered_emgB = filter(ruw_emgB);
+
+ scope.set(0,ruw_emgB);
+ scope.set(1,filtered_emgB);
+ scope.send();
+
+ if (filtered_emgB >= drempelwaardeB1) {
+ yB1=1;
+ ...
\ No newline at end of file
