Script voor aansturen motoren

Dependencies:   Encoder HIDScope MODSERIAL mbed-dsp mbed

main.cpp

Committer:
jessekaiser
Date:
2014-10-27
Revision:
8:0bbbe93bd1c4
Parent:
7:697293226e5e
Child:
9:18e7a0273106

File content as of revision 8:0bbbe93bd1c4:

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

#define TSAMP 0.001
#define K_P (0.1)
#define K_I (0.03  *TSAMP)
#define K_D (0.001 /TSAMP)
#define I_LIMIT 1.

#define M1_PWM PTC8
#define M1_DIR PTC9
#define M2_PWM PTA5
#define M2_DIR PTA4

//Groene kabel moet op de GROUND en blauw op de 3.3v aansluiting

Serial pc(USBTX, USBRX);
DigitalOut led1(LED_RED);
HIDScope scope(3);

//motor 25D
Encoder motor1(PTD3,PTD5); //wit, geel
PwmOut pwm_motor1(M2_PWM);
DigitalOut motordir1(M2_DIR);

//motor2 37D
Encoder motor2(PTD2, PTD0); //wit, geel
PwmOut pwm_motor2(M1_PWM);
DigitalOut motordir2(M1_DIR);

bool flip=false;

void attime()
{
    flip = !flip;
}

void looper()
{
    motordir1=0;
    pwm_motor1.write(0.06);
    scope.set(0, motor1.getPosition());
    scope.set(1, motor1.getSpeed());
    scope.set(2, motor2.getPosition());
    scope.send();
}

/*void clamp(float * in, float min, float max)
{
*in > min ? *in < max? : *in = max: *in = min;
}

float pi(float setpoint, float measurement)
{
    float error;
    float           out_p = 0;
    static float    out_i = 0;
    error  = setpoint - motor1.getPosition();
    out_p  = error*K_P;
    out_i += error*K_I;
    clamp(&out_i,-I_LIMIT,I_LIMIT);

    return out_p + out_i;
}*/

int main()
{
    wait(1);
    /*motordir1=0;
    pwm_motor1.period_us(100);
    pwm_motor1.write(1);
    wait(0.034);
    pwm_motor1.write(0);
    wait(1);
    motordir1=1;
    pwm_motor1.write(1);
    wait(0.034);
    pwm_motor1.write(0);*/
    Ticker log_timer;
    Ticker timer;
    log_timer.attach(looper, TSAMP);
    timer.attach(&attime, 7);

    while(1) {

    }
}