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: MODSERIAL QEI mbed
main.cpp
- Committer:
- Technical_Muffin
- Date:
- 2015-10-15
- Revision:
- 11:be7660614c5c
- Parent:
- 10:2dd707673b3b
- Child:
- 12:2d3d7a9ca496
File content as of revision 11:be7660614c5c:
#include "mbed.h"
#include "QEI.h"
#include "MODSERIAL.h"
//#include <"math.h">
QEI motor1(D13,D12,NC, 624);//encoder for motor 1
QEI motor2(D11,D10,NC, 624);//encoder for motor 2
MODSERIAL pc(USBTX,USBRX);
DigitalOut direction1(D7);//direction input for motor 1
DigitalOut direction2(D4);//direction input for motor 2
PwmOut speed1(D6);//speed input for motor 1
PwmOut speed2(D5);//speed input for motor 2
DigitalIn button1(PTC6);//test button for starting motor 1
DigitalIn button2(PTA4);//test button for starting motor 2
DigitalOut led1(LED_RED);
DigitalOut led2(LED_BLUE);
DigitalOut led3(LED_GREEN);
int main()
{
float cycle = 0.7;//define the speed of the motor
bool motor1_on = 1;//set the on variable of motor 1
int motor1_dir=0;//set the direction of motor 1
bool motor2_on =1;//set the on variable of motor 2
int motor2_dir = 0;//set the direction of motor 1
int n1=1;
int n2=1;
while(1){
led3.write(0);
led1.write(1);
led2.write(1);
speed1.write(0);//set motor 1 speed to 0
speed2.write(0);//set motor 2 speed to 0
pc.baud(115200);
int diffa1 = button1.read();//read out the button 1 signal and calculate if it is being pressed or released
wait(0.2);//from this we can determine if the rotation direction needs to be reversed.
int diffb1 = button1.read();
int button_toggle1 = diffa1-diffb1;
if(button_toggle1 == 1 && motor1_dir == 1){
motor1_dir = 0;
}
else if(button_toggle1 == 1 && motor1_dir == 0){
motor1_dir = 1;
}
if(button1.read()==false){
while(n1 == 1){
speed1.write(cycle);
direction1.write(1);//turn motor CCW or CW
led3.write(1);
led1.write(0);
n1=0;
}
}
else if (button1.read() == true){
while(n1==0){
speed1.write(0);
n1=1;
}
}
int diffa2 = button2.read();//read out the button 2 signal and calculate if it is being pressed or released
wait(0.2);//from this we can determine if the rotation direction needs to be reversed.
int diffb2 = button2.read();
int button_toggle2 = diffa2-diffb2;
if(button_toggle2 == 1 && motor2_dir == 1){
motor2_dir = 0;
}
else if(button_toggle2 == 1 && motor2_dir == 0){
motor2_dir = 1;
}
//motor CW = 0
//motor CCW = 1
if(button1.read()==false){
while(n2 == 1){
speed2.write(cycle);
direction2.write(1);//turn motor CCW or CW
led3.write(1);
led2.write(0);
n2=0;
}
}
else if (button1.read() == true){
while(n2==0){
speed1.write(0);
n2=1;
}
}
}
}