Poah als je je encoder in je motor wil aflezen en de beweging van je motor wilt aanpassen is dit programma echt voor jou!

Dependencies:   mbed QEI HIDScope biquadFilter MODSERIAL FastPWM

main.cpp

Committer:
Jellehierck
Date:
2019-10-03
Revision:
2:6f5f300f0569
Parent:
1:68f74b2ceb7d
Child:
3:2d45e3d0b0f0

File content as of revision 2:6f5f300f0569:

#include "mbed.h"
//#include "HIDScope.h"
#include "QEI.h"
#include "MODSERIAL.h"
//#include "BiQuad.h"
#include "FastPWM.h"

DigitalOut ledr(LED_RED);
DigitalOut ledg(LED_GREEN);
DigitalOut ledb(LED_BLUE);
PwmOut led1(D10);
DigitalIn button1(D2);
AnalogIn potmeter(A0);
DigitalIn sw(SW2);
MODSERIAL pc(USBTX, USBRX);
DigitalIn encA(D13);
DigitalIn encB(D12);
QEI encoder(D13,D12,NC,64,QEI::X4_ENCODING);

DigitalOut motor1Direction(D4);
FastPWM motor1Power(D5);
DigitalOut motor2Direction(D7);
FastPWM motor2Power(D6);

int counts; // Encoder counts
float degreein; // Angle of DC motor shaft input (before gearbox)
float factorin= 360/64; // Convert encoder counts to angle in degrees
float degreeout; // Angle of motor shaft output (after gearbox)
float gearratio= 131.25; // Gear ratio of gearbox

int main()
{
    pc.baud(115200);
    pc.printf("\r\nStarting...\r\n\r\n");
    
    motor1Power.period(1e-3);
    
    while (true) {
        counts = encoder.getPulses(); // Get encoder pulses
        degreein = counts*factorin;  // Convert encoder data to angle
        degreeout = degreein/gearratio; // Derived output angle
        //pc.printf("%f \r\n", degreein); //draaigraden van inputgear en zo ook encoder.
        pc.printf("%f \r\n", degreeout); // Angle of output
        
        float potValue = potmeter.read(); // Read potmeter
        pc.printf("Potmeter: %f \r\n", potValue);
        
        motor1Power.pulsewidth(potValue * 1e-3);
        
        wait(0.5);
    }
}