motor aansturing moet lineair zijn is het niet

Dependencies:   MODSERIAL Encoder mbed HIDScope

main.cpp

Committer:
Zeekat
Date:
2015-09-28
Revision:
6:3031e8abb052
Parent:
5:46dae55f0ab0
Child:
7:eb239942830d

File content as of revision 6:3031e8abb052:

#include "mbed.h"
#include "MODSERIAL.h"
#include "QEI.h"


Serial pc(USBTX,USBRX);

Ticker          mod;

//MOTOR
// motor 1 en 2 zijn omgedraait
// pinnen motor 1 -> pinnen motor 2

//motor 1 gegevens
PwmOut motor1_aan(D6);      // PWM signaal motor 2 (uit sheets)
DigitalOut motor1_rich(D7); // digitaal signaal voor richting 
// einde motor 1

//motor 2 gegevens
PwmOut motor2_aan(D5);      // PWM signaal motor 1 (uit sheets)
DigitalOut motor2_rich(D4); // digitaal signaal voor richting 
// einde motor 1
//EINDE MOTOR

// ENcoDER
QEI motor1_enc(D12,D11,NC,64);
QEI motor2_enc(D10,D9,NC,64);


//POTMETERS
AnalogIn potleft(A1);
AnalogIn potright(A0);

DigitalIn button(PTA4);
int button_on = 0;

void move_mot1(float left)
{
    if(left < 0.400)
    {
        float calc1 = left - 1;
        float calc2 = abs(calc1);
        float leftin1 = (calc2-0.6)*2.5 ;
        motor1_aan.write(leftin1);
        motor1_rich.write(0);
    }
    else if(left > 0.4000 && left < 0.6000)
    {
        motor1_aan.write(0);
    }
    else if(left > 0.6000)
    {
        float leftin2 = (left-0.6)*2.5;
        motor1_aan.write(leftin2);
        motor1_rich.write(1);
    }
}

void move_mot2(float right)
{
    if(right < 0.4000)
    { 
        float calc3 = right - 1;
        float calc4 = abs(calc3);
        float rightin1 = (calc4-0.6)*2.5 ;
        motor2_aan.write(rightin1);
        motor2_rich.write(0);
    }
    else if(right > 0.4000 && right < 0.6000)
    {
        motor2_aan.write(0);
    }
    else if(right > 0.6000)
    {
        float rightin2 = (right-0.6)*2.5;
        motor2_aan.write(rightin2);
        motor2_rich.write(1);
    }
}  


void send()
{
    int countsl = motor1_enc.getPulses();
    int countsr = motor2_enc.getPulses();
    pc.printf("motor 1 counts %d motor 2 counts %d \n", countsl, countsr);
}


int main()
{
    pc.baud(115200);
    mod.attach(&send,1);
    while(true)
    {
        float left = potleft.read();
        float right = potright.read();
        // pc.printf("%f \n",left);
        move_mot1(left);
        move_mot2(right);
        //if(button.read() == button_on)
        //{
        //    motor1_enc.reset();
        //    motor2_enc.reset();
        //}
    
    }
}