a demo of GUI on DISCOF7 consisting of a few buttons and feeders
Dependencies: ADXL345 BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG
Diff: main.cpp
- Revision:
- 0:122b5c3cbf4d
- Child:
- 1:4f356fb65677
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Aug 04 15:06:03 2016 +0000 @@ -0,0 +1,182 @@ +#include "mbed.h" +#include "TS_DISCO_F746NG.h" +#include "LCD_DISCO_F746NG.h" +#include "ESP8266.h" +#include "TCPSocketConnection.h" +#include <string> +using namespace std; + + + +LCD_DISCO_F746NG lcd; +TS_DISCO_F746NG ts; +TS_StateTypeDef TS_State; + + + +bool touch_test_rectangle(uint16_t tx, uint16_t ty, uint16_t x, uint16_t y, uint16_t width, uint16_t height){ + + bool x_is_in =0; + bool y_is_in = 0; + //uint16_t tx, ty; + + //ts.GetState(&TS_State); + //tx = TS_State.touchX[0]; + //ty = TS_State.touchY[0]; + //printf("your touches are %d , %d\r\n",tx,ty); + + + if( (tx>x) && (tx<(x+width))) x_is_in = 1; + if( (ty>y) && (ty<(y+height))) y_is_in = 1; + + + bool buttest; + buttest = x_is_in & y_is_in; + + //if(buttest){ + // printf("welldone\r\n"); + //} + + return (bool) buttest; + +} + + +uint16_t h_feeder(uint16_t tx, uint16_t ty,uint16_t x, uint16_t y, uint16_t width, uint16_t height){ + //uint16_t tx, ty; + //ts.GetState(&TS_State); + //tx = TS_State.touchX[0]; + //ty = TS_State.touchY[0]; + + bool x_is_in =0; + bool y_is_in =0; + + if( (tx>x) && (tx<(x+width))) x_is_in = 1; + if( (ty>y) && (ty<(y+height))) y_is_in = 1; + + bool buttest; + buttest = x_is_in & y_is_in; + + if(buttest){ + return tx - x; + } + + +} + +bool but1=0,but2=0,but3=0; +uint16_t feed1_dist = 0; +uint16_t feed2_dist = 0; + +int main() +{ + + uint16_t x, y; + uint8_t text[30]; + uint8_t status; + uint8_t idx; + uint8_t cleared = 0; + uint8_t prev_nb_touches = 0; + + lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN DEMO", CENTER_MODE); + wait(1); + + status = ts.Init(lcd.GetXSize(), lcd.GetYSize()); + if (status != TS_OK) { + lcd.Clear(LCD_COLOR_RED); + lcd.SetBackColor(LCD_COLOR_RED); + lcd.SetTextColor(LCD_COLOR_WHITE); + lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT FAIL", CENTER_MODE); + } else { + lcd.Clear(LCD_COLOR_BLUE); + lcd.SetBackColor(LCD_COLOR_BLUE); + lcd.SetTextColor(LCD_COLOR_WHITE); + lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT OK", CENTER_MODE); + } + + lcd.SetBackColor(LCD_COLOR_YELLOW); + lcd.SetTextColor(LCD_COLOR_RED); + + lcd.Clear(LCD_COLOR_WHITE); + + + lcd.SetTextColor(LCD_COLOR_RED); + lcd.FillRect(48, 68, 96, 60); + lcd.FillRect(192, 68, 96, 60); + lcd.FillRect(338, 68, 96, 60); + + lcd.FillRect(48, 152, 384, 30); + lcd.FillRect(48, 212, 384, 30); + + wait(1); + + //lcd.SetFont(&Font12); + //lcd.SetBackColor(LCD_COLOR_GREEN); + //lcd.SetTextColor(LCD_COLOR_WHITE); + //lcd.Clear(LCD_COLOR_GREEN); + + + while(1){ + //ts.ResetTouchData(&TS_State); + //ts.ITClear(); + + but1=0; + but2=0; + but3=0; + + + ts.GetState(&TS_State); + if (TS_State.touchDetected) { + + + feed1_dist = h_feeder(TS_State.touchX[0],TS_State.touchY[0],48, 152, 384, 30); + feed2_dist = h_feeder(TS_State.touchX[0],TS_State.touchY[0],48, 212, 384, 30); + but1 = touch_test_rectangle(TS_State.touchX[0],TS_State.touchY[0], 48, 68, 96, 60); + but2 = touch_test_rectangle(TS_State.touchX[0],TS_State.touchY[0], 192, 68, 96, 60); + but3 = touch_test_rectangle(TS_State.touchX[0],TS_State.touchY[0], 338, 68, 96, 60); + + if(feed1_dist>0){ + lcd.SetTextColor(LCD_COLOR_RED); + lcd.FillRect(48, 152, 384, 30); + lcd.SetTextColor(LCD_COLOR_GREEN); + lcd.FillRect(48, 152, feed1_dist, 30); + } + + if(feed2_dist>0){ + lcd.SetTextColor(LCD_COLOR_RED); + lcd.FillRect(48, 212, 384, 30); + lcd.SetTextColor(LCD_COLOR_GREEN); + lcd.FillRect(48, 212, feed2_dist, 30); + } + } + + if(but1){ + lcd.SetTextColor(LCD_COLOR_GREEN); + lcd.FillRect(48, 68, 96, 60); + } + else{ + lcd.SetTextColor(LCD_COLOR_RED); + lcd.FillRect(48, 68, 96, 60); + } + + if(but2){ + lcd.SetTextColor(LCD_COLOR_GREEN); + lcd.FillRect(192, 68, 96, 60); + } + else{ + lcd.SetTextColor(LCD_COLOR_RED); + lcd.FillRect(192, 68, 96, 60); + } + + if(but3){ + lcd.SetTextColor(LCD_COLOR_GREEN); + lcd.FillRect(338, 68, 96, 60); + } + else{ + lcd.SetTextColor(LCD_COLOR_RED); + lcd.FillRect(338, 68, 96, 60); + } + + } +} + \ No newline at end of file