RobotArm_ Biorobotics project.

Dependencies:   PID QEI RemoteIR Servo mbed

Fork of Biorobotics_Motor_Control by Bram S

main.cpp

Committer:
BramS23
Date:
2017-10-16
Revision:
0:6c0f87177797
Child:
2:684d5cf2f683

File content as of revision 0:6c0f87177797:

#include "mbed.h"
#include "QEI.h"
AnalogIn PotMeter(A0);
InterruptIn Button(PTA4);
 
PwmOut MotorThrottle1(D5);
PwmOut MotorThrottle2(D6);
DigitalOut MotorDirection1(D4);
DigitalOut MotorDirection2(D7);

QEI Encoder(D12,D13,NC,32);

Serial pc(PTB17,PTB16);

void ButtonPress(){
    MotorDirection1 = !MotorDirection1;
}


int main() {
    pc.baud(115200);
    float speed = 0.0f;
    int pos = 0;
    int pos_ref = 0;
    int temp_ref = 0;
    int pos_prev = 0;
    pc.printf("startup");
    Button.rise(&ButtonPress);
    
    while(true){
        //pc.printf("PWM: %f, POS: %i, REF: %i\r\n",speed,pos,pos_ref);
        pos = Encoder.getPulses();
        temp_ref =(int) 10000*PotMeter.read();
        if(fabsf(temp_ref-pos_ref)>50){
            pos_ref = temp_ref;
        }
        speed = ((float)(pos-pos_ref))/10000.0f;
        if (speed<0.0f){
            MotorDirection1=1;
            speed = -speed;
        }
        else{
            MotorDirection1=0;
        }
        if(speed<0.01f){
            speed=0;
        }
        MotorThrottle1.write(speed);
        pos_prev=pos;
    }
}