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: mbed
main.cpp
- Committer:
- szh66
- Date:
- 2017-05-26
- Revision:
- 27:b980fce784ea
- Parent:
- 26:191ec0e78774
- Child:
- 28:600932142201
File content as of revision 27:b980fce784ea:
#include "drivecontrol.h" #include "io_modules.h" #include "mbed.h" #include "maze_solver.h" //// PIN ASSIGNMENTS AnalogIn battery(PA_3); DigitalOut led_1(PB_12); DigitalOut led_2(PB_13); DigitalOut led_3(PB_14); DigitalOut led_4(PB_15); Serial serial (PA_9, PA_10); // CONTROL CONSTANTS const unsigned char STRAIGHT = 0, LEFT = 1, RIGHT = 2, UTURN = 3; const int START_POS = 0, END_POS = 0; const int CONTROL = 1; void check_battery () { // pc.baud(9600); // using the serial functions will have an impact on timing. // serial.printf("voltage value is: %3.3f%%\r\n", battery.read()*100.0f); // serial.printf("normalized: 0x%04X \r\n", battery.read_u16()); if (battery.read() < 0.70f){ // flash led led_1 = 1; led_2 = 1; led_3 = 1; led_4 = 1; } } void flash_led (int _led_1, int _led_2, int _led_3, int _led_4) { led_1 = _led_1; led_2 = _led_2; led_3 = _led_3; led_4 = _led_4; } int main() { DriveControl * driver = new DriveControl (START_POS, END_POS); Mouse * my_mouse = new Mouse(driver); driver->resetEncoders(); unsigned char state; int count = 0; bool finished_traverse_one_cell = true; //wait(1.5); while(CONTROL) { check_battery(); wait_ms(1); //wait(2); //driver->print_serial_ports(); if (finished_traverse_one_cell == true) { state = my_mouse->solve_maze(); if(state == RIGHT){ flash_led(0,0,1,1); wait(0.25); driver->resetEncoders(); } else if(state == LEFT){ flash_led(1,1,0,0); wait(0.25); driver->resetEncoders(); } else if(state == UTURN){ flash_led(1,1,1,0); wait(0.25); driver->resetEncoders(); count = 0; }else{ //TODO //Add error handling state = STRAIGHT; flash_led(1, 0, 0, 0); } finished_traverse_one_cell = false; } if (state == STRAIGHT) { if (!driver->should_finish_drive_forward() && !driver-> has_front_wall()) { driver->drive_forward(); } else { driver->clear_pid(); driver->stop(); driver->resetEncoders(); finished_traverse_one_cell = true; continue; } } if (state == RIGHT) { if (!driver->should_finish_turn_right()) { driver->turn_right(); } else { driver->stop(); //finished_traverse_one_cell = true; state = STRAIGHT; driver->resetEncoders(); driver->clear_pid(); // wait(0.25); continue; } } if (state == LEFT) { if (!driver->should_finish_turn_left()) { driver->turn_left(); } else { driver->stop(); //finished_traverse_one_cell = true; state = STRAIGHT; driver->resetEncoders(); driver->clear_pid(); //wait(0.25); continue; } } if (state == UTURN){ if (!driver->should_finish_turn_left()) { driver->turn_left(); } else { driver->stop(); driver->resetEncoders(); wait(0.25); if(count == 1) { state = STRAIGHT; } count ++;// continue; } } } }