buggy code as of
Dependencies: mbed
main.cpp
- Committer:
- benparkes
- Date:
- 2015-10-13
- Revision:
- 0:aca11cc796fd
File content as of revision 0:aca11cc796fd:
#include "mbed.h" #define wheelc 0.1759292 //Status LED DigitalOut led(LED1); //Motor PWM (speed) PwmOut PWMA(PA_8); PwmOut PWMB(PB_4); //Motor Direction DigitalOut DIRA(PA_9); DigitalOut DIRB(PB_10); //Hall-Effect Sensor Inputs DigitalIn HEA1(PB_2); DigitalIn HEA2(PB_1); DigitalIn HEB1(PB_15); DigitalIn HEB2(PB_14); //On board switch DigitalIn SW1(USER_BUTTON); //Use the serial object so we can use higher speeds Serial terminal(USBTX, USBRX); //Timer used for measuring speeds Timer timer; //Enumerated types enum DIRECTION {FORWARD=0, REVERSE}; enum PULSE {NOPULSE=0, PULSE}; enum SWITCHSTATE {PRESSED=0, RELEASED}; //Debug GPIO DigitalOut probe(D10); //Duty cycles float dutyA = 1.0f; //100% float dutyB = 1.0f; //100% int forward(float distance, int speed) { //Set motor period to 100Hz dutyA = 5; dutyB = 5; PWMA.period_ms(speed); PWMB.period_ms(speed); //Set initial motor speed to stop PWMA.write(dutyA); //Set duty cycle (%) PWMB.write(dutyB); //Set duty cycle (%) } int turn(int degrees, bool direction) { //Set motor period to 100Hz dutyA = 10; dutyB = 10; PWMA.period_ms(200); PWMB.period_ms(0); //Set initial motor speed to stop PWMA.write(dutyA); //Set duty cycle (%) PWMB.write(dutyB); //Set duty cycle (%) wait(0.676); dutyA = 0; dutyB = 0; PWMA.write(dutyA); //Set duty cycle (%) PWMB.write(dutyB); //Set duty cycle (%) } int main() { //Configure the terminal to high speed terminal.baud(115200); //Set initial motor direction DIRA = FORWARD; DIRB = FORWARD; //Set initial motor speed to stop PWMA.write(0.0f); //0% duty cycle PWMB.write(0.0f); //0% duty cycle while(1) { while (SW1 == PRESSED) { wait(0.01); while(SW1 == RELEASED) { for (int i = 0; i<2; i++) { forward(1,1); wait(1.5); turn(90,1); forward(1,1); wait(0.75); turn(90,1); } sleep(); } } } //Set initial motor speed to stop PWMA.write(0); //Set duty cycle (%) PWMB.write(0); //Set duty cycle (%) }