a demo of GUI on DISCOF7 consisting of a few buttons and feeders

Dependencies:   ADXL345 BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG

Committer:
habiburrahman
Date:
Thu Aug 04 15:06:03 2016 +0000
Revision:
0:122b5c3cbf4d
Child:
1:4f356fb65677
demo

Who changed what in which revision?

UserRevisionLine numberNew 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