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 First Last

main.cpp

Committer:
tvlogman
Date:
2017-09-21
Revision:
13:83e3672b24ee
Parent:
12:0462757e1ed2
Child:
14:664870b5d153

File content as of revision 13:83e3672b24ee:

#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);

DigitalOut motor1_direction(D4);
PwmOut motor1_pwm(D5);
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);
    }

int frequency_pwm = 10000; //10kHz PWM


int main()
    {
    motor1_direction = true;
    motor1_pwm.period(pwmPeriod);//T=1/f 

    pc.baud(115200);
    encoderTicker.attach(readEncoder, 1.0);    
    pc.printf("Encoder ticker attached and baudrate set");
    

    while(true){
        for(int i = 0 ; i<=30 ; i= i+10)
        {
            motor1_pwm.write(i/100.0);//write Duty Cycle
        }
    }

    }