Control up to two motors using filtered EMG signals and a PID controller
Dependencies: FastPWM HIDScope MODSERIAL QEI Matrix biquadFilter controller errorFetch mbed motorConfig refGen MatrixMath inverseKinematics
Fork of Minor_test_serial by
Diff: main.cpp
- Revision:
- 10:e23cbcdde7e3
- Parent:
- 9:5f0e796c9489
- Child:
- 11:d1692be2de30
diff -r 5f0e796c9489 -r e23cbcdde7e3 main.cpp --- a/main.cpp Tue Sep 19 15:25:42 2017 +0000 +++ b/main.cpp Thu Sep 21 08:12:58 2017 +0000 @@ -3,54 +3,24 @@ #include "HIDScope.h" #include "QEI.h" +QEI Encoder(D12,D13,NC,32); HIDScope scope(2); - -Ticker AInTicker; -AnalogIn button1(A4); - -volatile float x; -volatile float x_prev =0; -volatile float y; // filtered 'output' of ReadAnalogInAndFilter -volatile float ledBrightness = 0.00; +MODSERIAL pc(USBTX, USBRX); -void ReadAnalogInAndFilter() -{ - x = button1; // Capture data - scope.set(0, x); // store data in first element of scope memory - y = (x_prev + x)/2.0; // averaging filter - scope.set(1, y); // store data in second element of scope memory - x_prev = x; // Prepare for next round - - scope.send(); // send what's in scope memory to PC -} - -PwmOut ledPwm(D5); -float pwmPeriod = 1.0/5000.0; - -AnalogIn pot(A5); - -DigitalIn button2(D6); +Ticker encoderTicker; +volatile int counts = 0; -MODSERIAL pc(USBTX, USBRX); +void readEncoder(){ + counts = Encoder.getPulses(); + pc.printf("%i pulses", counts); + } int main() -{ - + { pc.baud(115200); - AInTicker.attach(&ReadAnalogInAndFilter, 0.01); - ledPwm.period(pwmPeriod); - pc.printf("Hello world"); - int counts; - - QEI Encoder(D12,D13,NC,32); - - while (true) { - counts = Encoder.getPulses(); - pc.printf("Number of pulses is %i", counts); - wait(0.5); - + pc.printf("Encoder ticker attached and baudrate set"); + encoderTicker.attach(readEncoder, 2.0); } -}