TomYumBoys / Mbed 2 deprecated MM2017

Dependencies:   mbed

Committer:
kolanery
Date:
Fri May 19 16:46:21 2017 +0000
Revision:
14:a646667ac9ea
Parent:
9:65a9aad9a5b5
Child:
15:151e59899221
add wall follower

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kolanery 0:cb667de3a336 1 #include "drivecontrol.h"
szh66 6:1bcfda49e146 2 //#include "pin_assignment.h"
kolanery 4:73510c7fa316 3 #include "io_modules.h"
szh66 6:1bcfda49e146 4 #include "mbed.h"
szh66 6:1bcfda49e146 5
szh66 6:1bcfda49e146 6 // Battery Debugger Interface
szh66 6:1bcfda49e146 7 AnalogIn battery(PA_3);
szh66 6:1bcfda49e146 8
szh66 6:1bcfda49e146 9
szh66 6:1bcfda49e146 10 // Led Debugger Interface
szh66 6:1bcfda49e146 11 DigitalOut led_1(PB_12);
szh66 6:1bcfda49e146 12 DigitalOut led_2(PB_13);
szh66 6:1bcfda49e146 13 DigitalOut led_3(PB_14);
szh66 6:1bcfda49e146 14 DigitalOut led_4(PB_15);
szh66 6:1bcfda49e146 15
szh66 6:1bcfda49e146 16 // System io
szh66 6:1bcfda49e146 17 Serial serial (PA_9, PA_10);
kolanery 2:619b02232144 18
kolanery 0:cb667de3a336 19 // Define states for debugging the mouse hardware
kolanery 2:619b02232144 20 // const int DRIVE = 1, TURN = 2, DEBUG = 3, STOP = 4;
kolanery 0:cb667de3a336 21 // Direction of which to turn
kolanery 2:619b02232144 22 // const int LEFT = 0, RIGHT = 1;
kolanery 0:cb667de3a336 23 // Start and End Pos
kolanery 14:a646667ac9ea 24 const int STRAIGHT = 0, LEFT = 1, RIGHT = 2;
kolanery 0:cb667de3a336 25 const int START_POS = 0, END_POS = 0;
kolanery 2:619b02232144 26
kolanery 0:cb667de3a336 27 // Terminating condition for the main control loop
kolanery 0:cb667de3a336 28 bool hasFoundCenter = false;
kolanery 0:cb667de3a336 29
kolanery 0:cb667de3a336 30 // Battery Consumption Indicator
kolanery 0:cb667de3a336 31 void setup() {
szh66 6:1bcfda49e146 32 // pc.baud(9600);
kolanery 4:73510c7fa316 33 // using the serial functions will have an impact on timing.
szh66 6:1bcfda49e146 34 // serial.printf("voltage value is: %3.3f%%\r\n", battery.read()*100.0f);
kolanery 4:73510c7fa316 35 // serial.printf("normalized: 0x%04X \r\n", battery.read_u16());
kolanery 2:619b02232144 36 if (battery.read() < 0.67f){
kolanery 0:cb667de3a336 37 // flash led
kolanery 4:73510c7fa316 38 led_1 = 1;
kolanery 4:73510c7fa316 39 led_2 = 1;
kolanery 4:73510c7fa316 40 led_3 = 1;
kolanery 4:73510c7fa316 41 led_4 = 1;
kolanery 0:cb667de3a336 42 }
kolanery 0:cb667de3a336 43 }
kolanery 0:cb667de3a336 44
kolanery 0:cb667de3a336 45 // Performs the basic drive control of the mouse
kolanery 0:cb667de3a336 46 int main() {
kolanery 14:a646667ac9ea 47
kolanery 4:73510c7fa316 48 DriveControl * driver = new DriveControl (START_POS, END_POS);
kolanery 14:a646667ac9ea 49 driver->resetEncoders();
kolanery 14:a646667ac9ea 50 int state;
kolanery 14:a646667ac9ea 51 bool finished_traverse_one_cell = true;
kolanery 2:619b02232144 52 while(1) {
kolanery 2:619b02232144 53 setup();
kolanery 14:a646667ac9ea 54 led_2 = 0;
kolanery 14:a646667ac9ea 55 led_3 = 0;
szh66 8:4a32fc9ee939 56 driver->getEncoder();
kolanery 14:a646667ac9ea 57
kolanery 14:a646667ac9ea 58
kolanery 14:a646667ac9ea 59 wait(2);
kolanery 7:7215adbae3da 60 /*
kolanery 14:a646667ac9ea 61
kolanery 14:a646667ac9ea 62 // switch state
kolanery 14:a646667ac9ea 63 if (finished_traverse_one_cell == true) {
kolanery 14:a646667ac9ea 64 if (!driver->has_front_wall()) {
kolanery 14:a646667ac9ea 65 state = STRAIGHT;
kolanery 14:a646667ac9ea 66 }
kolanery 14:a646667ac9ea 67 else if (!driver->has_right_wall()) {
kolanery 14:a646667ac9ea 68 state = RIGHT;
kolanery 14:a646667ac9ea 69 }
kolanery 14:a646667ac9ea 70 else {
kolanery 14:a646667ac9ea 71 state = LEFT;
kolanery 14:a646667ac9ea 72 }
kolanery 14:a646667ac9ea 73 finished_traverse_one_cell = false;
kolanery 7:7215adbae3da 74 }
kolanery 14:a646667ac9ea 75
kolanery 14:a646667ac9ea 76 if (state == STRAIGHT) {
kolanery 14:a646667ac9ea 77 if (!driver->should_stop_drive_forward()) {
kolanery 14:a646667ac9ea 78 driver->drive_forward();
kolanery 14:a646667ac9ea 79 }
kolanery 14:a646667ac9ea 80 else {
kolanery 14:a646667ac9ea 81 driver->stop();
kolanery 14:a646667ac9ea 82 driver->resetEncoders();
kolanery 14:a646667ac9ea 83 led_2 = 1;
kolanery 14:a646667ac9ea 84 led_3 = 0;
kolanery 14:a646667ac9ea 85 finished_traverse_one_cell = true;
kolanery 14:a646667ac9ea 86 continue;
kolanery 14:a646667ac9ea 87 }
kolanery 7:7215adbae3da 88 }
kolanery 14:a646667ac9ea 89
kolanery 14:a646667ac9ea 90 if (state == RIGHT) {
kolanery 14:a646667ac9ea 91 if (!driver->should_finish_turn_right()) {
kolanery 14:a646667ac9ea 92 driver->turn_right();
kolanery 14:a646667ac9ea 93 }
kolanery 14:a646667ac9ea 94 else {
kolanery 14:a646667ac9ea 95 driver->stop();
kolanery 14:a646667ac9ea 96 driver->resetEncoders();
kolanery 14:a646667ac9ea 97 led_2 = 0;
kolanery 14:a646667ac9ea 98 led_3 = 1;
kolanery 14:a646667ac9ea 99 finished_traverse_one_cell = true;
kolanery 14:a646667ac9ea 100 continue;
kolanery 14:a646667ac9ea 101 }
kolanery 14:a646667ac9ea 102 }
kolanery 7:7215adbae3da 103
kolanery 14:a646667ac9ea 104 if (state == LEFT) {
kolanery 14:a646667ac9ea 105 if (!driver->should_finish_turn_left()) {
kolanery 14:a646667ac9ea 106 driver->turn_left();
kolanery 14:a646667ac9ea 107 }
kolanery 14:a646667ac9ea 108 else {
kolanery 14:a646667ac9ea 109 driver->stop();
kolanery 14:a646667ac9ea 110 driver->resetEncoders();
kolanery 14:a646667ac9ea 111 led_1 = 1;
kolanery 14:a646667ac9ea 112 led_4 = 1;
kolanery 14:a646667ac9ea 113 led_2 = 0;
kolanery 14:a646667ac9ea 114 led_3 = 0;
kolanery 14:a646667ac9ea 115 finished_traverse_one_cell = true;
kolanery 14:a646667ac9ea 116 continue;
kolanery 14:a646667ac9ea 117 }
kolanery 14:a646667ac9ea 118 }
kolanery 14:a646667ac9ea 119 wait_ms(1); */
kolanery 0:cb667de3a336 120 }
kolanery 2:619b02232144 121 }