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 Christopher Eubanks

Committer:
blu12758
Date:
Thu May 11 16:20:54 2017 +0000
Revision:
21:ee2b617cc0e6
Parent:
18:f2a516ad24eb
OA changed to OF

Who changed what in which revision?

UserRevisionLine numberNew 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 21:ee2b617cc0e6 65 case 3://Object Following
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 21:ee2b617cc0e6 107 case 3://Object Following
blu12758 11:10a7bb4bc714 108 sprintf (buffer, "%d", info);
blu12758 21:ee2b617cc0e6 109 view->writeString(buffer, 14);
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 }