Dr. Davis and Dr. Dyer special studies robotics project
Dependencies: BSP_DISCO_F469NI LCD_DISCO_F469NI TS_DISCO_F469NI mbed Motordriver
Fork of Configurable_Robots by
Classes/RobotMVC/RobotController.cpp@18:f2a516ad24eb, 2017-05-10 (annotated)
- Committer:
- blu12758
- Date:
- Wed May 10 14:10:43 2017 +0000
- Revision:
- 18:f2a516ad24eb
- Parent:
- 11:10a7bb4bc714
- Child:
- 21:ee2b617cc0e6
Line Following Tweaks
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
blu12758 | 7:0f8c3dfbbb86 | 1 | //OU Configurable Robot Project |
blu12758 | 7:0f8c3dfbbb86 | 2 | //Spring 2017 |
blu12758 | 7:0f8c3dfbbb86 | 3 | //William Bonner |
blu12758 | 7:0f8c3dfbbb86 | 4 | |
blu12758 | 10:4dd8b18e07d0 | 5 | #ifndef R_CONTROLLER |
blu12758 | 10:4dd8b18e07d0 | 6 | #define R_CONTROLLER |
blu12758 | 7:0f8c3dfbbb86 | 7 | #include "RobotController.h" |
blu12758 | 10:4dd8b18e07d0 | 8 | #endif |
blu12758 | 7:0f8c3dfbbb86 | 9 | |
blu12758 | 7:0f8c3dfbbb86 | 10 | //Constructors/Destructors |
blu12758 | 7:0f8c3dfbbb86 | 11 | RobotController::~RobotController() |
blu12758 | 7:0f8c3dfbbb86 | 12 | { |
blu12758 | 7:0f8c3dfbbb86 | 13 | //#TODO |
blu12758 | 7:0f8c3dfbbb86 | 14 | } |
blu12758 | 7:0f8c3dfbbb86 | 15 | |
blu12758 | 7:0f8c3dfbbb86 | 16 | RobotController::RobotController() |
blu12758 | 7:0f8c3dfbbb86 | 17 | { |
blu12758 | 7:0f8c3dfbbb86 | 18 | setView(new RobotView()); |
blu12758 | 7:0f8c3dfbbb86 | 19 | setModel(new RobotModel()); |
blu12758 | 7:0f8c3dfbbb86 | 20 | } |
blu12758 | 7:0f8c3dfbbb86 | 21 | |
blu12758 | 7:0f8c3dfbbb86 | 22 | //Handles choices made by the user on the robot interface |
blu12758 | 7:0f8c3dfbbb86 | 23 | //input: selection value |
blu12758 | 9:4ae116881502 | 24 | void RobotController::userSelection(int s) |
blu12758 | 7:0f8c3dfbbb86 | 25 | { |
blu12758 | 10:4dd8b18e07d0 | 26 | //no input |
blu12758 | 9:4ae116881502 | 27 | if(s < 0) |
blu12758 | 9:4ae116881502 | 28 | return; |
blu12758 | 10:4dd8b18e07d0 | 29 | |
blu12758 | 10:4dd8b18e07d0 | 30 | model->setMode(0); |
blu12758 | 9:4ae116881502 | 31 | switch(view->getPage()) |
blu12758 | 9:4ae116881502 | 32 | { |
blu12758 | 9:4ae116881502 | 33 | default: |
blu12758 | 9:4ae116881502 | 34 | if(s == 0) |
blu12758 | 9:4ae116881502 | 35 | view->setPage(1); |
blu12758 | 9:4ae116881502 | 36 | return; |
blu12758 | 9:4ae116881502 | 37 | case 0: |
blu12758 | 9:4ae116881502 | 38 | return; |
blu12758 | 10:4dd8b18e07d0 | 39 | case 1://Main Menu |
blu12758 | 9:4ae116881502 | 40 | switch(s) |
blu12758 | 9:4ae116881502 | 41 | { |
blu12758 | 9:4ae116881502 | 42 | case 0: |
blu12758 | 9:4ae116881502 | 43 | view->setPage(2); |
blu12758 | 10:4dd8b18e07d0 | 44 | model->setMode(2); |
blu12758 | 9:4ae116881502 | 45 | return; |
blu12758 | 9:4ae116881502 | 46 | case 1: |
blu12758 | 9:4ae116881502 | 47 | view->setPage(3); |
blu12758 | 10:4dd8b18e07d0 | 48 | model->setMode(3); |
blu12758 | 9:4ae116881502 | 49 | return; |
blu12758 | 9:4ae116881502 | 50 | case 2: |
blu12758 | 9:4ae116881502 | 51 | view->setPage(4); |
blu12758 | 10:4dd8b18e07d0 | 52 | model->setMode(4); |
blu12758 | 9:4ae116881502 | 53 | return; |
blu12758 | 9:4ae116881502 | 54 | case 3: |
blu12758 | 9:4ae116881502 | 55 | view->setPage(5); |
blu12758 | 10:4dd8b18e07d0 | 56 | model->setMode(5); |
blu12758 | 9:4ae116881502 | 57 | return; |
blu12758 | 9:4ae116881502 | 58 | case 4: |
blu12758 | 9:4ae116881502 | 59 | view->setPage(6); |
blu12758 | 10:4dd8b18e07d0 | 60 | model->setMode(6); |
blu12758 | 9:4ae116881502 | 61 | return; |
blu12758 | 9:4ae116881502 | 62 | } |
blu12758 | 10:4dd8b18e07d0 | 63 | return; |
blu12758 | 10:4dd8b18e07d0 | 64 | case 2://Line Follower |
blu12758 | 10:4dd8b18e07d0 | 65 | case 3://Object Avoidance |
blu12758 | 10:4dd8b18e07d0 | 66 | case 4://Light Avoidance |
blu12758 | 10:4dd8b18e07d0 | 67 | case 5://TV Remote Control |
blu12758 | 10:4dd8b18e07d0 | 68 | case 6://Wiimote Control |
blu12758 | 10:4dd8b18e07d0 | 69 | if(s==0) |
blu12758 | 10:4dd8b18e07d0 | 70 | view->setPage(1); |
blu12758 | 10:4dd8b18e07d0 | 71 | return; |
blu12758 | 9:4ae116881502 | 72 | } |
blu12758 | 7:0f8c3dfbbb86 | 73 | } |
blu12758 | 7:0f8c3dfbbb86 | 74 | |
blu12758 | 8:1173b502b316 | 75 | //Go to main menu |
blu12758 | 8:1173b502b316 | 76 | void RobotController::main() |
blu12758 | 8:1173b502b316 | 77 | { |
blu12758 | 8:1173b502b316 | 78 | model->setMode(0); |
blu12758 | 8:1173b502b316 | 79 | view->setPage(1); |
blu12758 | 8:1173b502b316 | 80 | } |
blu12758 | 8:1173b502b316 | 81 | |
blu12758 | 7:0f8c3dfbbb86 | 82 | //Listens for inputs |
blu12758 | 7:0f8c3dfbbb86 | 83 | void RobotController::listen() |
blu12758 | 7:0f8c3dfbbb86 | 84 | { |
blu12758 | 9:4ae116881502 | 85 | userSelection(view->listen()); |
blu12758 | 10:4dd8b18e07d0 | 86 | } |
blu12758 | 10:4dd8b18e07d0 | 87 | |
blu12758 | 10:4dd8b18e07d0 | 88 | //Update robot state |
blu12758 | 10:4dd8b18e07d0 | 89 | void RobotController::update() |
blu12758 | 10:4dd8b18e07d0 | 90 | { |
blu12758 | 10:4dd8b18e07d0 | 91 | int info = model->update(); |
blu12758 | 10:4dd8b18e07d0 | 92 | char buffer[50]; |
blu12758 | 10:4dd8b18e07d0 | 93 | switch(model->getMode()) |
blu12758 | 10:4dd8b18e07d0 | 94 | { |
blu12758 | 10:4dd8b18e07d0 | 95 | default: |
blu12758 | 10:4dd8b18e07d0 | 96 | case 0: |
blu12758 | 10:4dd8b18e07d0 | 97 | break; |
blu12758 | 10:4dd8b18e07d0 | 98 | case 2://Line Follower |
blu12758 | 18:f2a516ad24eb | 99 | sprintf (buffer, "%d %d %d %d %d %d %d %d", model->checkLine(7), model->checkLine(6), model->checkLine(5) |
blu12758 | 18:f2a516ad24eb | 100 | , model->checkLine(4), model->checkLine(3), model->checkLine(2), model->checkLine(1), model->checkLine(0)); |
blu12758 | 18:f2a516ad24eb | 101 | view->writeString(buffer, 14); |
blu12758 | 18:f2a516ad24eb | 102 | sprintf(buffer, "LS %3.2f RS %3.2f", model->LeftSpeed(), model->RightSpeed()); |
blu12758 | 18:f2a516ad24eb | 103 | view->writeString(buffer,16); |
blu12758 | 18:f2a516ad24eb | 104 | sprintf (buffer, "%d", info); |
blu12758 | 18:f2a516ad24eb | 105 | view->writeString(buffer,18); |
blu12758 | 10:4dd8b18e07d0 | 106 | break; |
blu12758 | 10:4dd8b18e07d0 | 107 | case 3://Object Avoidance |
blu12758 | 11:10a7bb4bc714 | 108 | sprintf (buffer, "%d", info); |
blu12758 | 10:4dd8b18e07d0 | 109 | view->writeString(buffer, 15); |
blu12758 | 10:4dd8b18e07d0 | 110 | break; |
blu12758 | 10:4dd8b18e07d0 | 111 | case 4://Light Avoidance |
blu12758 | 11:10a7bb4bc714 | 112 | sprintf (buffer, "L %d R %d", model->checkLight(0), model->checkLight(1)); |
blu12758 | 18:f2a516ad24eb | 113 | view->writeString(buffer, 14); |
blu12758 | 18:f2a516ad24eb | 114 | sprintf(buffer, "LS %3.2f RS %3.2f", model->LeftSpeed(), model->RightSpeed()); |
blu12758 | 18:f2a516ad24eb | 115 | view->writeString(buffer,16); |
blu12758 | 10:4dd8b18e07d0 | 116 | break; |
blu12758 | 10:4dd8b18e07d0 | 117 | case 5://TV Remote Control |
blu12758 | 10:4dd8b18e07d0 | 118 | sprintf (buffer, "%d", info); |
blu12758 | 10:4dd8b18e07d0 | 119 | view->writeString(buffer, 15); |
blu12758 | 10:4dd8b18e07d0 | 120 | break; |
blu12758 | 10:4dd8b18e07d0 | 121 | case 6://Wiimote Control |
blu12758 | 10:4dd8b18e07d0 | 122 | sprintf (buffer, "%d", info); |
blu12758 | 10:4dd8b18e07d0 | 123 | view->writeString(buffer, 15); |
blu12758 | 18:f2a516ad24eb | 124 | userSelection(0); |
blu12758 | 10:4dd8b18e07d0 | 125 | break; |
blu12758 | 10:4dd8b18e07d0 | 126 | } |
blu12758 | 7:0f8c3dfbbb86 | 127 | } |