![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Filter werkt eindelijk, echter zijn alle kanalen hetzelfde
Dependencies: HIDScope MODSERIAL Matrix QEI biquadFilter mbed
Fork of Turning_Motor_V3 by
main.cpp
- Committer:
- ThomBMT
- Date:
- 2018-10-22
- Revision:
- 2:dc9766657afb
- Parent:
- 1:4bf64d003f3a
- Child:
- 3:c8f0fc045505
File content as of revision 2:dc9766657afb:
#include "mbed.h" #include "MODSERIAL.h" #include "HIDScope.h" #include "QEI.h" MODSERIAL pc(USBTX, USBRX); DigitalOut DirectionPin1(D4); DigitalOut DirectionPin2(D7); PwmOut PwmPin1(D5); PwmOut PwmPin2(D6); DigitalIn Knop1(D2); AnalogIn pot1 (A5); AnalogIn pot2 (A4); AnalogIn emg0( A0 ); AnalogIn emg1( A1 ); AnalogIn emg2( A2 ); AnalogIn emg3( A3 ); Ticker printTicker; Ticker mycontrollerTicker1; Ticker mycontrollerTicker2; Ticker Velo1; Ticker Velo2; Ticker EMG_Read_Ticker; Ticker sample_timer; HIDScope scope( 4 ); volatile float Bicep_Right = 0.0; volatile const float maxVelocity=8.4; // in rad/s volatile float referenceVelocity1 = 0.5; //dit is de gecentreerde waarde en dus de nulstand volatile float referenceVelocity2 = 0.5; volatile int counts1; volatile int counts2; QEI Encoder1(D12,D13,NC,64,QEI::X4_ENCODING); QEI Encoder2(D10,D11,NC,64,QEI::X4_ENCODING); void EMG_Read() { Bicep_Right = emg0.read(); } void sample() { scope.set(0, emg0.read() ); scope.set(1, emg1.read() ); scope.set(2, emg2.read() ); scope.set(3, emg3.read() ); scope.send(); } void velocity1() { if ((pot1.read()>0.5f) || (Knop1 == true))//gezeik met die knop doet het niet ff uitzoeken nog { // Clockwise rotation referenceVelocity1 = (pot1.read()-0.5f) * 2.0f; } else if (pot1.read() == 0.5f || !Knop1 == (pot1.read()<0.5f)) { referenceVelocity1 = pot1.read() * 0.0f; } else if (pot1.read() < 0.5f) { // Counterclockwise rotation referenceVelocity1 = 2.0f * (pot1.read()-0.5f) ; } } void velocity2() { if (pot2.read()>0.5f) { // Clockwise rotation referenceVelocity2 = (pot2.read()-0.5f) * 2.0f; } else if (pot2.read() == 0.5f) { referenceVelocity2 = pot2.read() * 0.0f; } else if (pot2.read() < 0.5f) { // Counterclockwise rotation referenceVelocity2 = 2.0f * (pot2.read()-0.5f) ; } } void motor1() { float u = referenceVelocity1; DirectionPin1 = u < 0.0f; PwmPin1 = fabs(u); } void motor2() { float u = referenceVelocity2; DirectionPin2 = u > 0.0f; PwmPin2 = fabs(u); } void Printing() { float v1 = fabs(referenceVelocity1) * maxVelocity; float v2 = fabs(referenceVelocity2) * maxVelocity; //eventueel nog counts -> rad/s //pc.printf("%f \n %f snelheid Motor1 \n %f snelheid Motor2 \n", Bicep_Right,v1,v2); pc.printf("%i counts van m1, %i counts van m2", counts1, counts2); } int main() { pc.baud(115200); PwmPin1.period_us(120); //60 microseconds pwm period, 16.7 kHz counts1 = Encoder1.getPulses(); counts2 = Encoder2.getPulses(); sample_timer.attach(&sample, 0.002); EMG_Read_Ticker.attach(&EMG_Read, 0.002); mycontrollerTicker1.attach(motor1, 0.002);//500Hz Velo1.attach(velocity1, 0.002); mycontrollerTicker2.attach(motor2, 0.002); Velo2.attach(velocity2, 0.002); printTicker.attach(&Printing, 2.0); while(true) { } }