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:
Wed Feb 08 20:31:20 2017 +0000
Revision:
8:1173b502b316
Parent:
7:0f8c3dfbbb86
Child:
9:4ae116881502
touchscreen working

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 7:0f8c3dfbbb86 46 switch(_page)
blu12758 7:0f8c3dfbbb86 47 {
blu12758 8:1173b502b316 48 case 0://Welcome Screen
blu12758 7:0f8c3dfbbb86 49 _lcd.DisplayStringAt(0, LINE(7), (uint8_t *)"Configurable Robot", CENTER_MODE);
blu12758 7:0f8c3dfbbb86 50 _lcd.DisplayStringAt(0, LINE(8), (uint8_t *)"University of Oklahoma", CENTER_MODE);
blu12758 7:0f8c3dfbbb86 51 break;
blu12758 8:1173b502b316 52 case 1://Main Menu
blu12758 8:1173b502b316 53 _lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"Configurable Robot", CENTER_MODE);
blu12758 8:1173b502b316 54 _lcd.DisplayStringAt(0, LINE(2), (uint8_t *)"University of Oklahoma", CENTER_MODE);
blu12758 8:1173b502b316 55 _lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"Line Follower", CENTER_MODE);
blu12758 8:1173b502b316 56 _lcd.DisplayStringAt(0, LINE(8), (uint8_t *)"Object Avoidance", CENTER_MODE);
blu12758 8:1173b502b316 57 _lcd.DisplayStringAt(0, LINE(11), (uint8_t *)"Object Seeking", CENTER_MODE);
blu12758 8:1173b502b316 58 _lcd.DisplayStringAt(0, LINE(14), (uint8_t *)"Light Avoidance", CENTER_MODE);
blu12758 8:1173b502b316 59 _lcd.DisplayStringAt(0, LINE(17), (uint8_t *)"TV Remote Control", CENTER_MODE);
blu12758 8:1173b502b316 60 _lcd.DisplayStringAt(0, LINE(20), (uint8_t *)"Wiimote Control", CENTER_MODE);
blu12758 7:0f8c3dfbbb86 61 default:
blu12758 7:0f8c3dfbbb86 62 break;
blu12758 7:0f8c3dfbbb86 63 }
blu12758 8:1173b502b316 64
blu12758 8:1173b502b316 65 //#TODO Display supply voltage
blu12758 7:0f8c3dfbbb86 66 }
blu12758 8:1173b502b316 67
blu12758 8:1173b502b316 68 //Clear the screen
blu12758 8:1173b502b316 69 void RobotView::clear()
blu12758 8:1173b502b316 70 {
blu12758 8:1173b502b316 71 _lcd.Clear(LCD_COLOR_WHITE);
blu12758 8:1173b502b316 72 _lcd.SetBackColor(LCD_COLOR_WHITE);
blu12758 8:1173b502b316 73 _lcd.SetTextColor(LCD_COLOR_BLUE);
blu12758 8:1173b502b316 74 }
blu12758 8:1173b502b316 75
blu12758 7:0f8c3dfbbb86 76 //Check for touches on the screen
blu12758 8:1173b502b316 77 bool RobotView::listen()
blu12758 7:0f8c3dfbbb86 78 {
blu12758 8:1173b502b316 79 _ts.GetState(&TS_State);
blu12758 8:1173b502b316 80 if (TS_State.touchDetected)
blu12758 8:1173b502b316 81 {
blu12758 8:1173b502b316 82 ts_x = TS_State.touchX[0];
blu12758 8:1173b502b316 83 ts_y = TS_State.touchY[0];
blu12758 8:1173b502b316 84 return true;
blu12758 8:1173b502b316 85 }
blu12758 8:1173b502b316 86 return false;
blu12758 7:0f8c3dfbbb86 87 }