read emg to turn motor shaft
Dependencies: MODSERIAL QEI mbed
main.cpp
00001 #include "mbed.h" 00002 #include "MODSERIAL.h" 00003 #include "QEI.h" 00004 00005 PwmOut pwmpin(D5); 00006 DigitalOut directionpin(D4); 00007 AnalogIn potmeter(A2); 00008 00009 AnalogIn emg0( A0 ); 00010 AnalogIn emg1( A1 ); 00011 00012 MODSERIAL pc(USBTX, USBRX); 00013 QEI wheel (D13, D12, NC, 32); 00014 00015 float angle_resolution = (360.0/32.0)*(1.0/131.0); //degrees/counts 00016 00017 float mean(float *samples, int n) { 00018 float sum = 0.0; 00019 for (int i=0; i<n; i++) { 00020 sum += samples[i]; 00021 } 00022 return sum / (float)n; 00023 } 00024 00025 int main() 00026 { 00027 pc.baud(115200); 00028 00029 pwmpin.period_us(60); 00030 int pulses = 0; 00031 float angle; 00032 int n = 1; 00033 int i = 0; 00034 float meanmuscle; 00035 float u[500]; 00036 while (true) { 00037 u[i] = fabs(2*(emg0.read() - 0.5)); 00038 00039 pulses = wheel.getPulses(); 00040 angle = pulses*angle_resolution; 00041 if(n%500 == 0){ 00042 pc.printf("Angle is: %f degrees \r\n", meanmuscle); 00043 meanmuscle = (mean(u,500)-0.1)*4; 00044 directionpin = meanmuscle > 0.0f; 00045 pwmpin = fabs(meanmuscle); 00046 i=0; 00047 } 00048 n++; 00049 i++; 00050 wait(0.001); 00051 } 00052 }
Generated on Fri Jul 15 2022 06:49:51 by
1.7.2