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 Feb 09 20:46:26 2017 +0000
Revision:
9:4ae116881502
Parent:
8:1173b502b316
Child:
10:4dd8b18e07d0
UI update -- submenus

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 7:0f8c3dfbbb86 5 #include "RobotView.h"
blu12758 7:0f8c3dfbbb86 6
blu12758 7:0f8c3dfbbb86 7 //Constructors/Destructors
blu12758 7:0f8c3dfbbb86 8 RobotView::~RobotView()
blu12758 7:0f8c3dfbbb86 9 {
blu12758 7:0f8c3dfbbb86 10 //#TODO
blu12758 7:0f8c3dfbbb86 11 }
blu12758 7:0f8c3dfbbb86 12 RobotView::RobotView()
blu12758 7:0f8c3dfbbb86 13 {
blu12758 7:0f8c3dfbbb86 14 _page = 0;
blu12758 7:0f8c3dfbbb86 15 }
blu12758 7:0f8c3dfbbb86 16
blu12758 7:0f8c3dfbbb86 17 //Initialize the screen to display the robot menu
blu12758 7:0f8c3dfbbb86 18 void RobotView::init()
blu12758 7:0f8c3dfbbb86 19 {
blu12758 8:1173b502b316 20 //Show splash screen
blu12758 7:0f8c3dfbbb86 21 update();
blu12758 8:1173b502b316 22 wait(1);
blu12758 8:1173b502b316 23
blu12758 8:1173b502b316 24 //Initialize touchscreen and display results
blu12758 8:1173b502b316 25 uint8_t status = _ts.Init(_lcd.GetXSize(), _lcd.GetYSize());
blu12758 8:1173b502b316 26 if (status != TS_OK) {
blu12758 8:1173b502b316 27 _lcd.Clear(LCD_COLOR_RED);
blu12758 8:1173b502b316 28 _lcd.SetBackColor(LCD_COLOR_RED);
blu12758 8:1173b502b316 29 _lcd.SetTextColor(LCD_COLOR_WHITE);
blu12758 8:1173b502b316 30 _lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT FAIL", CENTER_MODE);
blu12758 8:1173b502b316 31 } else {
blu12758 8:1173b502b316 32 _lcd.Clear(LCD_COLOR_GREEN);
blu12758 8:1173b502b316 33 _lcd.SetBackColor(LCD_COLOR_GREEN);
blu12758 8:1173b502b316 34 _lcd.SetTextColor(LCD_COLOR_WHITE);
blu12758 8:1173b502b316 35 _lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT OK", CENTER_MODE);
blu12758 8:1173b502b316 36 }
blu12758 8:1173b502b316 37 wait(1);
blu12758 7:0f8c3dfbbb86 38 }
blu12758 7:0f8c3dfbbb86 39
blu12758 7:0f8c3dfbbb86 40 //Write the current page to the lcd
blu12758 7:0f8c3dfbbb86 41 void RobotView::update()
blu12758 7:0f8c3dfbbb86 42 {
blu12758 8:1173b502b316 43 //Clear Screen
blu12758 8:1173b502b316 44 clear();
blu12758 8:1173b502b316 45
blu12758 9:4ae116881502 46 //Write current page
blu12758 7:0f8c3dfbbb86 47 switch(_page)
blu12758 7:0f8c3dfbbb86 48 {
blu12758 8:1173b502b316 49 case 0://Welcome Screen
blu12758 7:0f8c3dfbbb86 50 _lcd.DisplayStringAt(0, LINE(7), (uint8_t *)"Configurable Robot", CENTER_MODE);
blu12758 7:0f8c3dfbbb86 51 _lcd.DisplayStringAt(0, LINE(8), (uint8_t *)"University of Oklahoma", CENTER_MODE);
blu12758 7:0f8c3dfbbb86 52 break;
blu12758 8:1173b502b316 53 case 1://Main Menu
blu12758 8:1173b502b316 54 _lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"Configurable Robot", CENTER_MODE);
blu12758 8:1173b502b316 55 _lcd.DisplayStringAt(0, LINE(2), (uint8_t *)"University of Oklahoma", CENTER_MODE);
blu12758 8:1173b502b316 56 _lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"Line Follower", CENTER_MODE);
blu12758 8:1173b502b316 57 _lcd.DisplayStringAt(0, LINE(8), (uint8_t *)"Object Avoidance", CENTER_MODE);
blu12758 8:1173b502b316 58 _lcd.DisplayStringAt(0, LINE(11), (uint8_t *)"Object Seeking", CENTER_MODE);
blu12758 8:1173b502b316 59 _lcd.DisplayStringAt(0, LINE(14), (uint8_t *)"Light Avoidance", CENTER_MODE);
blu12758 8:1173b502b316 60 _lcd.DisplayStringAt(0, LINE(17), (uint8_t *)"TV Remote Control", CENTER_MODE);
blu12758 8:1173b502b316 61 _lcd.DisplayStringAt(0, LINE(20), (uint8_t *)"Wiimote Control", CENTER_MODE);
blu12758 7:0f8c3dfbbb86 62 default:
blu12758 7:0f8c3dfbbb86 63 break;
blu12758 7:0f8c3dfbbb86 64 }
blu12758 8:1173b502b316 65
blu12758 9:4ae116881502 66 //display back button
blu12758 9:4ae116881502 67 if(_page > 1)
blu12758 9:4ae116881502 68 {
blu12758 9:4ae116881502 69 _lcd.DisplayStringAt(0, LINE(21), (uint8_t *)"<- Back", RIGHT_MODE);
blu12758 9:4ae116881502 70 }
blu12758 9:4ae116881502 71
blu12758 8:1173b502b316 72 //#TODO Display supply voltage
blu12758 7:0f8c3dfbbb86 73 }
blu12758 8:1173b502b316 74
blu12758 8:1173b502b316 75 //Clear the screen
blu12758 8:1173b502b316 76 void RobotView::clear()
blu12758 8:1173b502b316 77 {
blu12758 8:1173b502b316 78 _lcd.Clear(LCD_COLOR_WHITE);
blu12758 8:1173b502b316 79 _lcd.SetBackColor(LCD_COLOR_WHITE);
blu12758 8:1173b502b316 80 _lcd.SetTextColor(LCD_COLOR_BLUE);
blu12758 8:1173b502b316 81 }
blu12758 8:1173b502b316 82
blu12758 7:0f8c3dfbbb86 83 //Check for touches on the screen
blu12758 9:4ae116881502 84 int RobotView::listen()
blu12758 7:0f8c3dfbbb86 85 {
blu12758 8:1173b502b316 86 _ts.GetState(&TS_State);
blu12758 8:1173b502b316 87 if (TS_State.touchDetected)
blu12758 8:1173b502b316 88 {
blu12758 8:1173b502b316 89 ts_x = TS_State.touchX[0];
blu12758 8:1173b502b316 90 ts_y = TS_State.touchY[0];
blu12758 9:4ae116881502 91 return checkSelection();
blu12758 8:1173b502b316 92 }
blu12758 9:4ae116881502 93 return -1;
blu12758 9:4ae116881502 94 }
blu12758 9:4ae116881502 95
blu12758 9:4ae116881502 96 //Check which selection the user made based on the current page
blu12758 9:4ae116881502 97 int RobotView::checkSelection()
blu12758 9:4ae116881502 98 {
blu12758 9:4ae116881502 99 if(_page > 1 && ts_y <=(20))
blu12758 9:4ae116881502 100 return 0;
blu12758 9:4ae116881502 101 switch(_page)
blu12758 9:4ae116881502 102 {
blu12758 9:4ae116881502 103 case 0:
blu12758 9:4ae116881502 104 default:
blu12758 9:4ae116881502 105 return -1;
blu12758 9:4ae116881502 106 case 1:
blu12758 9:4ae116881502 107 if(ts_y <= LINE(6))
blu12758 9:4ae116881502 108 return 0;
blu12758 9:4ae116881502 109 else if(ts_y <= LINE(9))
blu12758 9:4ae116881502 110 return 1;
blu12758 9:4ae116881502 111 else if(ts_y <= LINE(12))
blu12758 9:4ae116881502 112 return 2;
blu12758 9:4ae116881502 113 else if(ts_y <= LINE(15))
blu12758 9:4ae116881502 114 return 3;
blu12758 9:4ae116881502 115 else if(ts_y <= LINE(18))
blu12758 9:4ae116881502 116 return 4;
blu12758 9:4ae116881502 117 else
blu12758 9:4ae116881502 118 return 5;
blu12758 9:4ae116881502 119 }
blu12758 7:0f8c3dfbbb86 120 }