Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: AVEncoder QEI mbed-src-AV
main.cpp
- Committer:
- mochaMan
- Date:
- 2015-11-19
- Revision:
- 0:99dd5499928a
- Child:
- 1:b9485bb1ca69
File content as of revision 0:99dd5499928a:
#include "mbed.h"
#include "QEI.h"
#include "AVEncoder.h"
DigitalOut myled(LED1);
DigitalIn mybutton(USER_BUTTON);
PwmOut LMotorForward(PA_7);
PwmOut LMotorReverse(PB_6);
PwmOut RMotorForward(PB_10);
PwmOut RMotorReverse(PB_4);
QEI LeftEncoder(PA_15, PB_3, NC, 12);
QEI RightEncoder(PA_1, PA_2, NC, 12);
Serial pc(USBTX, USBRX);
void pid();
double P_controller(int error);
double D_controller(int error);
double I_controller(int error);
void setRightPwm(double speed);
void setLeftPwm(double speed);
void stop();
double speed = 0.5;
Ticker interrupt;
int STOP = 0;
int main()
{
myled = 1;
interrupt.attach_us(&pid, 1000);
while(mybutton == 1);
speed = 0.5;
while(true)
{
setLeftPwm(speed);
setRightPwm(speed);
}
}
void pid()
{
speed += P_controller(0) + D_controller(0) + I_controller(0);
if(speed < 0)
{
speed = 0;
}
else if(speed > 1)
{
speed = 1;
}
}
double P_controller(int error)
{
return -1;
}
double D_controller(int error)
{
return -1;
}
double I_controller(int error)
{
return -1;
}
void setLeftPwm(double speed)
{
if(speed == 0)
{
LMotorForward = 1.0;
LMotorReverse = 1.0;
}
if(speed > 0)
{
LMotorForward = speed;
LMotorReverse = 0;
}
if(speed < 0)
{
LMotorForward = 0;
LMotorReverse = -speed;
}
}
//todo: make this have ramping
void setRightPwm(double speed)
{
if(speed > 0)
{
RMotorForward = speed;
RMotorReverse = STOP;
}
if(speed < 0)
{
RMotorForward = STOP;
RMotorReverse = -speed;
}
}
void stop()
{
setLeftPwm(0);
setRightPwm(0);
}