ding

Dependencies:   Encoder mbed

main.cpp

Committer:
wiesdat
Date:
2014-10-29
Revision:
0:e89ba43e3f05
Child:
1:5ac17a29fa08

File content as of revision 0:e89ba43e3f05:

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

#include <iostream>

Encoder encoderA(PTD0,PTD2);

PwmOut pwm(PTA5);
DigitalOut dir(PTA4);


int32_t enca = 0,enca1 =0,enca2 =0,counts=0, encb;
float speed = 0,v=0;
int n=0,a =1 ,b =0;

float pid(float setpoint, float measurement)
{
    float error;
    static float prev_error = 0;
    float           out_p = 0;
    static float    out_i = 0;
    float           out_d = 0;
    error  = setpoint-measurement;
    out_p  = error*K_P;
    out_i += error*K_I;
    out_d  = (error-prev_error)*K_D;
    clamp(&out_i,-I_LIMIT,I_LIMIT);
    prev_error = error;
    scope.set(1,out_p);
    scope.set(2,out_i);
    scope.set(3,out_d);
    return out_p + out_i + out_d;
}
/*
int main()
{
    speed = 0.09;
    pwm = speed;
    while(1){
        wait(0.2);
        enca = encoderA.getPosition();
        cout<<enca<<endl;
        }
}
*/

int main()
{
    speed = 0.3;
    pwm = speed;
   
    while(1){
    wait(0.5);
    enca = encoderA.getPosition();
   
    enca2 = enca1;
    enca1 = enca;
    
    counts = (enca1 - enca2)/0.5;
    v = (counts)*((2*3.14159265359)/1550);
    
    cout<<"v: "<<v<<endl;
    

    
    }
   
    
    
    

}
//clamps value 'in' to min or max when exceeding those values
//if you'd like to understand the statement below take a google for
//'ternary operators'.
void clamp(float * in, float min, float max)
{
    *in > min ? *in < max? : *in = max: *in = min;
}