a demo of GUI on DISCOF7 consisting of a few buttons and feeders
Dependencies: ADXL345 BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG
main.cpp@0:122b5c3cbf4d, 2016-08-04 (annotated)
- Committer:
- habiburrahman
- Date:
- Thu Aug 04 15:06:03 2016 +0000
- Revision:
- 0:122b5c3cbf4d
- Child:
- 1:4f356fb65677
demo
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
habiburrahman | 0:122b5c3cbf4d | 1 | #include "mbed.h" |
habiburrahman | 0:122b5c3cbf4d | 2 | #include "TS_DISCO_F746NG.h" |
habiburrahman | 0:122b5c3cbf4d | 3 | #include "LCD_DISCO_F746NG.h" |
habiburrahman | 0:122b5c3cbf4d | 4 | #include "ESP8266.h" |
habiburrahman | 0:122b5c3cbf4d | 5 | #include "TCPSocketConnection.h" |
habiburrahman | 0:122b5c3cbf4d | 6 | #include <string> |
habiburrahman | 0:122b5c3cbf4d | 7 | using namespace std; |
habiburrahman | 0:122b5c3cbf4d | 8 | |
habiburrahman | 0:122b5c3cbf4d | 9 | |
habiburrahman | 0:122b5c3cbf4d | 10 | |
habiburrahman | 0:122b5c3cbf4d | 11 | LCD_DISCO_F746NG lcd; |
habiburrahman | 0:122b5c3cbf4d | 12 | TS_DISCO_F746NG ts; |
habiburrahman | 0:122b5c3cbf4d | 13 | TS_StateTypeDef TS_State; |
habiburrahman | 0:122b5c3cbf4d | 14 | |
habiburrahman | 0:122b5c3cbf4d | 15 | |
habiburrahman | 0:122b5c3cbf4d | 16 | |
habiburrahman | 0:122b5c3cbf4d | 17 | bool touch_test_rectangle(uint16_t tx, uint16_t ty, uint16_t x, uint16_t y, uint16_t width, uint16_t height){ |
habiburrahman | 0:122b5c3cbf4d | 18 | |
habiburrahman | 0:122b5c3cbf4d | 19 | bool x_is_in =0; |
habiburrahman | 0:122b5c3cbf4d | 20 | bool y_is_in = 0; |
habiburrahman | 0:122b5c3cbf4d | 21 | //uint16_t tx, ty; |
habiburrahman | 0:122b5c3cbf4d | 22 | |
habiburrahman | 0:122b5c3cbf4d | 23 | //ts.GetState(&TS_State); |
habiburrahman | 0:122b5c3cbf4d | 24 | //tx = TS_State.touchX[0]; |
habiburrahman | 0:122b5c3cbf4d | 25 | //ty = TS_State.touchY[0]; |
habiburrahman | 0:122b5c3cbf4d | 26 | //printf("your touches are %d , %d\r\n",tx,ty); |
habiburrahman | 0:122b5c3cbf4d | 27 | |
habiburrahman | 0:122b5c3cbf4d | 28 | |
habiburrahman | 0:122b5c3cbf4d | 29 | if( (tx>x) && (tx<(x+width))) x_is_in = 1; |
habiburrahman | 0:122b5c3cbf4d | 30 | if( (ty>y) && (ty<(y+height))) y_is_in = 1; |
habiburrahman | 0:122b5c3cbf4d | 31 | |
habiburrahman | 0:122b5c3cbf4d | 32 | |
habiburrahman | 0:122b5c3cbf4d | 33 | bool buttest; |
habiburrahman | 0:122b5c3cbf4d | 34 | buttest = x_is_in & y_is_in; |
habiburrahman | 0:122b5c3cbf4d | 35 | |
habiburrahman | 0:122b5c3cbf4d | 36 | //if(buttest){ |
habiburrahman | 0:122b5c3cbf4d | 37 | // printf("welldone\r\n"); |
habiburrahman | 0:122b5c3cbf4d | 38 | //} |
habiburrahman | 0:122b5c3cbf4d | 39 | |
habiburrahman | 0:122b5c3cbf4d | 40 | return (bool) buttest; |
habiburrahman | 0:122b5c3cbf4d | 41 | |
habiburrahman | 0:122b5c3cbf4d | 42 | } |
habiburrahman | 0:122b5c3cbf4d | 43 | |
habiburrahman | 0:122b5c3cbf4d | 44 | |
habiburrahman | 0:122b5c3cbf4d | 45 | uint16_t h_feeder(uint16_t tx, uint16_t ty,uint16_t x, uint16_t y, uint16_t width, uint16_t height){ |
habiburrahman | 0:122b5c3cbf4d | 46 | //uint16_t tx, ty; |
habiburrahman | 0:122b5c3cbf4d | 47 | //ts.GetState(&TS_State); |
habiburrahman | 0:122b5c3cbf4d | 48 | //tx = TS_State.touchX[0]; |
habiburrahman | 0:122b5c3cbf4d | 49 | //ty = TS_State.touchY[0]; |
habiburrahman | 0:122b5c3cbf4d | 50 | |
habiburrahman | 0:122b5c3cbf4d | 51 | bool x_is_in =0; |
habiburrahman | 0:122b5c3cbf4d | 52 | bool y_is_in =0; |
habiburrahman | 0:122b5c3cbf4d | 53 | |
habiburrahman | 0:122b5c3cbf4d | 54 | if( (tx>x) && (tx<(x+width))) x_is_in = 1; |
habiburrahman | 0:122b5c3cbf4d | 55 | if( (ty>y) && (ty<(y+height))) y_is_in = 1; |
habiburrahman | 0:122b5c3cbf4d | 56 | |
habiburrahman | 0:122b5c3cbf4d | 57 | bool buttest; |
habiburrahman | 0:122b5c3cbf4d | 58 | buttest = x_is_in & y_is_in; |
habiburrahman | 0:122b5c3cbf4d | 59 | |
habiburrahman | 0:122b5c3cbf4d | 60 | if(buttest){ |
habiburrahman | 0:122b5c3cbf4d | 61 | return tx - x; |
habiburrahman | 0:122b5c3cbf4d | 62 | } |
habiburrahman | 0:122b5c3cbf4d | 63 | |
habiburrahman | 0:122b5c3cbf4d | 64 | |
habiburrahman | 0:122b5c3cbf4d | 65 | } |
habiburrahman | 0:122b5c3cbf4d | 66 | |
habiburrahman | 0:122b5c3cbf4d | 67 | bool but1=0,but2=0,but3=0; |
habiburrahman | 0:122b5c3cbf4d | 68 | uint16_t feed1_dist = 0; |
habiburrahman | 0:122b5c3cbf4d | 69 | uint16_t feed2_dist = 0; |
habiburrahman | 0:122b5c3cbf4d | 70 | |
habiburrahman | 0:122b5c3cbf4d | 71 | int main() |
habiburrahman | 0:122b5c3cbf4d | 72 | { |
habiburrahman | 0:122b5c3cbf4d | 73 | |
habiburrahman | 0:122b5c3cbf4d | 74 | uint16_t x, y; |
habiburrahman | 0:122b5c3cbf4d | 75 | uint8_t text[30]; |
habiburrahman | 0:122b5c3cbf4d | 76 | uint8_t status; |
habiburrahman | 0:122b5c3cbf4d | 77 | uint8_t idx; |
habiburrahman | 0:122b5c3cbf4d | 78 | uint8_t cleared = 0; |
habiburrahman | 0:122b5c3cbf4d | 79 | uint8_t prev_nb_touches = 0; |
habiburrahman | 0:122b5c3cbf4d | 80 | |
habiburrahman | 0:122b5c3cbf4d | 81 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN DEMO", CENTER_MODE); |
habiburrahman | 0:122b5c3cbf4d | 82 | wait(1); |
habiburrahman | 0:122b5c3cbf4d | 83 | |
habiburrahman | 0:122b5c3cbf4d | 84 | status = ts.Init(lcd.GetXSize(), lcd.GetYSize()); |
habiburrahman | 0:122b5c3cbf4d | 85 | if (status != TS_OK) { |
habiburrahman | 0:122b5c3cbf4d | 86 | lcd.Clear(LCD_COLOR_RED); |
habiburrahman | 0:122b5c3cbf4d | 87 | lcd.SetBackColor(LCD_COLOR_RED); |
habiburrahman | 0:122b5c3cbf4d | 88 | lcd.SetTextColor(LCD_COLOR_WHITE); |
habiburrahman | 0:122b5c3cbf4d | 89 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT FAIL", CENTER_MODE); |
habiburrahman | 0:122b5c3cbf4d | 90 | } else { |
habiburrahman | 0:122b5c3cbf4d | 91 | lcd.Clear(LCD_COLOR_BLUE); |
habiburrahman | 0:122b5c3cbf4d | 92 | lcd.SetBackColor(LCD_COLOR_BLUE); |
habiburrahman | 0:122b5c3cbf4d | 93 | lcd.SetTextColor(LCD_COLOR_WHITE); |
habiburrahman | 0:122b5c3cbf4d | 94 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT OK", CENTER_MODE); |
habiburrahman | 0:122b5c3cbf4d | 95 | } |
habiburrahman | 0:122b5c3cbf4d | 96 | |
habiburrahman | 0:122b5c3cbf4d | 97 | lcd.SetBackColor(LCD_COLOR_YELLOW); |
habiburrahman | 0:122b5c3cbf4d | 98 | lcd.SetTextColor(LCD_COLOR_RED); |
habiburrahman | 0:122b5c3cbf4d | 99 | |
habiburrahman | 0:122b5c3cbf4d | 100 | lcd.Clear(LCD_COLOR_WHITE); |
habiburrahman | 0:122b5c3cbf4d | 101 | |
habiburrahman | 0:122b5c3cbf4d | 102 | |
habiburrahman | 0:122b5c3cbf4d | 103 | lcd.SetTextColor(LCD_COLOR_RED); |
habiburrahman | 0:122b5c3cbf4d | 104 | lcd.FillRect(48, 68, 96, 60); |
habiburrahman | 0:122b5c3cbf4d | 105 | lcd.FillRect(192, 68, 96, 60); |
habiburrahman | 0:122b5c3cbf4d | 106 | lcd.FillRect(338, 68, 96, 60); |
habiburrahman | 0:122b5c3cbf4d | 107 | |
habiburrahman | 0:122b5c3cbf4d | 108 | lcd.FillRect(48, 152, 384, 30); |
habiburrahman | 0:122b5c3cbf4d | 109 | lcd.FillRect(48, 212, 384, 30); |
habiburrahman | 0:122b5c3cbf4d | 110 | |
habiburrahman | 0:122b5c3cbf4d | 111 | wait(1); |
habiburrahman | 0:122b5c3cbf4d | 112 | |
habiburrahman | 0:122b5c3cbf4d | 113 | //lcd.SetFont(&Font12); |
habiburrahman | 0:122b5c3cbf4d | 114 | //lcd.SetBackColor(LCD_COLOR_GREEN); |
habiburrahman | 0:122b5c3cbf4d | 115 | //lcd.SetTextColor(LCD_COLOR_WHITE); |
habiburrahman | 0:122b5c3cbf4d | 116 | //lcd.Clear(LCD_COLOR_GREEN); |
habiburrahman | 0:122b5c3cbf4d | 117 | |
habiburrahman | 0:122b5c3cbf4d | 118 | |
habiburrahman | 0:122b5c3cbf4d | 119 | while(1){ |
habiburrahman | 0:122b5c3cbf4d | 120 | //ts.ResetTouchData(&TS_State); |
habiburrahman | 0:122b5c3cbf4d | 121 | //ts.ITClear(); |
habiburrahman | 0:122b5c3cbf4d | 122 | |
habiburrahman | 0:122b5c3cbf4d | 123 | but1=0; |
habiburrahman | 0:122b5c3cbf4d | 124 | but2=0; |
habiburrahman | 0:122b5c3cbf4d | 125 | but3=0; |
habiburrahman | 0:122b5c3cbf4d | 126 | |
habiburrahman | 0:122b5c3cbf4d | 127 | |
habiburrahman | 0:122b5c3cbf4d | 128 | ts.GetState(&TS_State); |
habiburrahman | 0:122b5c3cbf4d | 129 | if (TS_State.touchDetected) { |
habiburrahman | 0:122b5c3cbf4d | 130 | |
habiburrahman | 0:122b5c3cbf4d | 131 | |
habiburrahman | 0:122b5c3cbf4d | 132 | feed1_dist = h_feeder(TS_State.touchX[0],TS_State.touchY[0],48, 152, 384, 30); |
habiburrahman | 0:122b5c3cbf4d | 133 | feed2_dist = h_feeder(TS_State.touchX[0],TS_State.touchY[0],48, 212, 384, 30); |
habiburrahman | 0:122b5c3cbf4d | 134 | but1 = touch_test_rectangle(TS_State.touchX[0],TS_State.touchY[0], 48, 68, 96, 60); |
habiburrahman | 0:122b5c3cbf4d | 135 | but2 = touch_test_rectangle(TS_State.touchX[0],TS_State.touchY[0], 192, 68, 96, 60); |
habiburrahman | 0:122b5c3cbf4d | 136 | but3 = touch_test_rectangle(TS_State.touchX[0],TS_State.touchY[0], 338, 68, 96, 60); |
habiburrahman | 0:122b5c3cbf4d | 137 | |
habiburrahman | 0:122b5c3cbf4d | 138 | if(feed1_dist>0){ |
habiburrahman | 0:122b5c3cbf4d | 139 | lcd.SetTextColor(LCD_COLOR_RED); |
habiburrahman | 0:122b5c3cbf4d | 140 | lcd.FillRect(48, 152, 384, 30); |
habiburrahman | 0:122b5c3cbf4d | 141 | lcd.SetTextColor(LCD_COLOR_GREEN); |
habiburrahman | 0:122b5c3cbf4d | 142 | lcd.FillRect(48, 152, feed1_dist, 30); |
habiburrahman | 0:122b5c3cbf4d | 143 | } |
habiburrahman | 0:122b5c3cbf4d | 144 | |
habiburrahman | 0:122b5c3cbf4d | 145 | if(feed2_dist>0){ |
habiburrahman | 0:122b5c3cbf4d | 146 | lcd.SetTextColor(LCD_COLOR_RED); |
habiburrahman | 0:122b5c3cbf4d | 147 | lcd.FillRect(48, 212, 384, 30); |
habiburrahman | 0:122b5c3cbf4d | 148 | lcd.SetTextColor(LCD_COLOR_GREEN); |
habiburrahman | 0:122b5c3cbf4d | 149 | lcd.FillRect(48, 212, feed2_dist, 30); |
habiburrahman | 0:122b5c3cbf4d | 150 | } |
habiburrahman | 0:122b5c3cbf4d | 151 | } |
habiburrahman | 0:122b5c3cbf4d | 152 | |
habiburrahman | 0:122b5c3cbf4d | 153 | if(but1){ |
habiburrahman | 0:122b5c3cbf4d | 154 | lcd.SetTextColor(LCD_COLOR_GREEN); |
habiburrahman | 0:122b5c3cbf4d | 155 | lcd.FillRect(48, 68, 96, 60); |
habiburrahman | 0:122b5c3cbf4d | 156 | } |
habiburrahman | 0:122b5c3cbf4d | 157 | else{ |
habiburrahman | 0:122b5c3cbf4d | 158 | lcd.SetTextColor(LCD_COLOR_RED); |
habiburrahman | 0:122b5c3cbf4d | 159 | lcd.FillRect(48, 68, 96, 60); |
habiburrahman | 0:122b5c3cbf4d | 160 | } |
habiburrahman | 0:122b5c3cbf4d | 161 | |
habiburrahman | 0:122b5c3cbf4d | 162 | if(but2){ |
habiburrahman | 0:122b5c3cbf4d | 163 | lcd.SetTextColor(LCD_COLOR_GREEN); |
habiburrahman | 0:122b5c3cbf4d | 164 | lcd.FillRect(192, 68, 96, 60); |
habiburrahman | 0:122b5c3cbf4d | 165 | } |
habiburrahman | 0:122b5c3cbf4d | 166 | else{ |
habiburrahman | 0:122b5c3cbf4d | 167 | lcd.SetTextColor(LCD_COLOR_RED); |
habiburrahman | 0:122b5c3cbf4d | 168 | lcd.FillRect(192, 68, 96, 60); |
habiburrahman | 0:122b5c3cbf4d | 169 | } |
habiburrahman | 0:122b5c3cbf4d | 170 | |
habiburrahman | 0:122b5c3cbf4d | 171 | if(but3){ |
habiburrahman | 0:122b5c3cbf4d | 172 | lcd.SetTextColor(LCD_COLOR_GREEN); |
habiburrahman | 0:122b5c3cbf4d | 173 | lcd.FillRect(338, 68, 96, 60); |
habiburrahman | 0:122b5c3cbf4d | 174 | } |
habiburrahman | 0:122b5c3cbf4d | 175 | else{ |
habiburrahman | 0:122b5c3cbf4d | 176 | lcd.SetTextColor(LCD_COLOR_RED); |
habiburrahman | 0:122b5c3cbf4d | 177 | lcd.FillRect(338, 68, 96, 60); |
habiburrahman | 0:122b5c3cbf4d | 178 | } |
habiburrahman | 0:122b5c3cbf4d | 179 | |
habiburrahman | 0:122b5c3cbf4d | 180 | } |
habiburrahman | 0:122b5c3cbf4d | 181 | } |
habiburrahman | 0:122b5c3cbf4d | 182 |