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/RobotView.cpp@9:4ae116881502, 2017-02-09 (annotated)
- 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?
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 | 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 | } |