![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
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
main.cpp
- Committer:
- tvlogman
- Date:
- 2017-09-21
- Revision:
- 14:664870b5d153
- Parent:
- 13:83e3672b24ee
- Child:
- 15:b76b8cff4d8f
File content as of revision 14:664870b5d153:
#include "mbed.h" #include "MODSERIAL.h" #include "HIDScope.h" #include "QEI.h" QEI Encoder(D12,D13,NC,64, QEI::X4_ENCODING); MODSERIAL pc(USBTX, USBRX); // Defining outputs DigitalOut motor1_direction(D4); PwmOut motor1_pwm(D5); // Defining inputs InterruptIn sw2(SW2); float pwmPeriod = 1.0/5000.0; Ticker encoderTicker; volatile int counts = 0; volatile float revs = 0.00; void readEncoder(){ counts = Encoder.getPulses(); revs = counts/64.0f; pc.printf("%i pulses \r\n", counts); pc.printf("%f revolutions \r\n", revs); } void killSwitch(){ motor1_pwm.write(0.0); } void M1switchDirection(){ motor1_direction = !motor1_direction; } int frequency_pwm = 10000; //10kHz PWM int main() { motor1_direction = false; motor1_pwm.period(pwmPeriod);//T=1/f sw2.fall(&killSwitch); pc.baud(115200); encoderTicker.attach(readEncoder, 1.0); pc.printf("Encoder ticker attached and baudrate set"); motor1_pwm.write(100.0/100.0);//write Duty Cycle sw2.fall(&killSwitch); }