Demo of combination HIDScope and encoder

Dependencies:   Encoder HIDScope mbed

main.cpp

Committer:
vsluiter
Date:
2016-06-23
Revision:
1:1db5c1c28a93
Parent:
0:0b39982f89a9

File content as of revision 1:1db5c1c28a93:

#include "mbed.h"
#include "HIDScope.h"
#include "encoder.h"

Encoder motor1(D13,D12);
PwmOut led(D9);
HIDScope scope(3);



int main()
{
    const float degrees_per_count = 90/200.0; //quick approach
    const float ain_degrees_range = 90; //degrees over which the potmeter can control.
    const float kp_1_range = -1;
    AnalogIn setpoint_1(A0);
    AnalogIn p_value(A1);
    DigitalOut direction_1(D4);
    PwmOut pwm_1(D5);
    float degrees_setpoint;
    float error;
    float output;
    pwm_1.period(1.0/10000); //10kHz
        
    while (true) {
        degrees_setpoint = setpoint_1 * ain_degrees_range;
        error = degrees_setpoint-(motor1.getPosition()*degrees_per_count); //error =  setpoint - current
        output = error*p_value*kp_1_range;
        if(output > 0)
        {
            direction_1.write(true);
        }
        else
        {
            direction_1.write(false);
        }
        pwm_1.write(fabs(output));
        scope.set(0,motor1.getPosition());
        scope.set(1,error);
        scope.set(2,fabs(output));
        led.write(motor1.getPosition()/100.0);
        scope.send();
        wait(0.01);
    }
}