modification of the original demo to include subroutine for clearscreen and mainscreen

Dependencies:   BSP_DISCO_F769NI mbed-rtos mbed

Fork of DISCO-F769NI_TOUCHSCREEN_demo by ST

added some code to print actual touch coordinates to the LCD screen at the touch location.

Committer:
yawstick
Date:
Fri Jul 07 08:31:33 2017 +0000
Revision:
3:a8af91804931
Parent:
2:a90c59e9bc39
Child:
4:7a82acfec4da
latest thang

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jeromecoutant 0:cc2802bc7c1b 1 #include "mbed.h"
jeromecoutant 0:cc2802bc7c1b 2 #include "stm32f769i_discovery.h"
jeromecoutant 0:cc2802bc7c1b 3 #include "stm32f769i_discovery_ts.h"
jeromecoutant 0:cc2802bc7c1b 4 #include "stm32f769i_discovery_lcd.h"
yawstick 3:a8af91804931 5
yawstick 3:a8af91804931 6 char string();
jeromecoutant 0:cc2802bc7c1b 7
yawstick 2:a90c59e9bc39 8 void mainscreen();
yawstick 2:a90c59e9bc39 9 void clearscreen();
jeromecoutant 0:cc2802bc7c1b 10 TS_StateTypeDef TS_State = {0};
jeromecoutant 0:cc2802bc7c1b 11
jeromecoutant 0:cc2802bc7c1b 12
yawstick 2:a90c59e9bc39 13 int main(){
yawstick 2:a90c59e9bc39 14 uint16_t x1, y1;
yawstick 2:a90c59e9bc39 15 mainscreen();
yawstick 2:a90c59e9bc39 16 while(1){
yawstick 2:a90c59e9bc39 17 BSP_TS_GetState(&TS_State);
yawstick 2:a90c59e9bc39 18 if(TS_State.touchDetected) { /* One or dual touch have been detected */
yawstick 2:a90c59e9bc39 19 x1 = TS_State.touchX[0]; /* Get X and Y position of the first touch post calibrated */
yawstick 2:a90c59e9bc39 20 y1 = TS_State.touchY[0];
yawstick 3:a8af91804931 21 /* string = " x1" , y1 " ; */
yawstick 3:a8af91804931 22
yawstick 2:a90c59e9bc39 23 printf("Touch Detected x=%d y=%d\n\r", x1, y1);
yawstick 2:a90c59e9bc39 24 if ((x1 > 0 & x1 < 88) & (y1 > 392 & y1 < 480)) {
yawstick 2:a90c59e9bc39 25 clearscreen();
yawstick 2:a90c59e9bc39 26 }
yawstick 3:a8af91804931 27 BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
yawstick 3:a8af91804931 28 BSP_LCD_SetTextColor(LCD_COLOR_MAGENTA);
yawstick 3:a8af91804931 29 BSP_LCD_SetFont(&Font16);
yawstick 3:a8af91804931 30 BSP_LCD_DisplayStringAt(x1, y1, (uint8_t *)"< Touch Detected (x1 y1) ", LEFT_MODE);
yawstick 3:a8af91804931 31 BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
yawstick 2:a90c59e9bc39 32 BSP_LCD_FillRect(x1, y1, 20, 20);
yawstick 2:a90c59e9bc39 33 /* BSP_LCD_FillRect(0, 380, 100, 100); */
yawstick 2:a90c59e9bc39 34 }
yawstick 2:a90c59e9bc39 35 }
yawstick 2:a90c59e9bc39 36 }
jeromecoutant 0:cc2802bc7c1b 37
yawstick 2:a90c59e9bc39 38 void mainscreen() {
yawstick 2:a90c59e9bc39 39 printf("\n\n TOUCHSCREEN EXAMPLE FOR DISCO-F769NI START:\n");
yawstick 2:a90c59e9bc39 40 BSP_LCD_Init();
jeromecoutant 0:cc2802bc7c1b 41 BSP_LCD_LayerDefaultInit(0, LCD_FB_START_ADDRESS);
jeromecoutant 0:cc2802bc7c1b 42
jeromecoutant 0:cc2802bc7c1b 43 /* Touchscreen initialization */
jeromecoutant 0:cc2802bc7c1b 44 if (BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize()) == TS_ERROR) {
jeromecoutant 0:cc2802bc7c1b 45 printf("BSP_TS_Init error\n");
jeromecoutant 0:cc2802bc7c1b 46 }
yawstick 2:a90c59e9bc39 47
yawstick 2:a90c59e9bc39 48 BSP_LCD_Clear(LCD_COLOR_WHITE); /* Clear the LCD */
yawstick 2:a90c59e9bc39 49 BSP_LCD_SetTextColor(LCD_COLOR_BLUE); /* Set Touchscreen Demo1 description */
jeromecoutant 0:cc2802bc7c1b 50 BSP_LCD_FillRect(0, 0, BSP_LCD_GetXSize(), 40);
jeromecoutant 0:cc2802bc7c1b 51 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
jeromecoutant 0:cc2802bc7c1b 52 BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
jeromecoutant 0:cc2802bc7c1b 53 BSP_LCD_SetFont(&Font24);
yawstick 2:a90c59e9bc39 54 BSP_LCD_DisplayStringAt(0, 10, (uint8_t *)"Touchscreen basic example", CENTER_MODE);
yawstick 2:a90c59e9bc39 55 BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
yawstick 2:a90c59e9bc39 56 BSP_LCD_FillRect(0, 392, 88, 88);
yawstick 2:a90c59e9bc39 57 BSP_LCD_SetTextColor(LCD_COLOR_MAGENTA);
yawstick 2:a90c59e9bc39 58 BSP_LCD_FillRect(0, 304, 88, 88);
yawstick 2:a90c59e9bc39 59 BSP_LCD_SetTextColor(LCD_COLOR_RED);
yawstick 2:a90c59e9bc39 60 BSP_LCD_FillRect(0, 216, 88, 88);
yawstick 2:a90c59e9bc39 61 BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
yawstick 2:a90c59e9bc39 62 BSP_LCD_FillRect(0, 128, 88, 88);
yawstick 2:a90c59e9bc39 63 BSP_LCD_SetTextColor(LCD_COLOR_YELLOW);
yawstick 2:a90c59e9bc39 64 BSP_LCD_FillRect(0, 40, 88, 88);
jeromecoutant 0:cc2802bc7c1b 65 }
yawstick 2:a90c59e9bc39 66
yawstick 2:a90c59e9bc39 67 void clearscreen() {
yawstick 2:a90c59e9bc39 68
yawstick 2:a90c59e9bc39 69 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
yawstick 2:a90c59e9bc39 70 BSP_LCD_FillRect(0, 40, 800, 480);
yawstick 2:a90c59e9bc39 71 BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
yawstick 2:a90c59e9bc39 72 BSP_LCD_FillRect(0, 392, 88, 88);
yawstick 2:a90c59e9bc39 73 BSP_LCD_SetTextColor(LCD_COLOR_MAGENTA);
yawstick 2:a90c59e9bc39 74 BSP_LCD_FillRect(0, 304, 88, 88);
yawstick 2:a90c59e9bc39 75 BSP_LCD_SetTextColor(LCD_COLOR_RED);
yawstick 2:a90c59e9bc39 76 BSP_LCD_FillRect(0, 216, 88, 88);
yawstick 2:a90c59e9bc39 77 BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
yawstick 2:a90c59e9bc39 78 BSP_LCD_FillRect(0, 128, 88, 88);
yawstick 3:a8af91804931 79 BSP_LCD_SetTextColor(LCD_COLOR_YELLOW);
yawstick 2:a90c59e9bc39 80 BSP_LCD_FillRect(0, 40, 88, 88);
yawstick 3:a8af91804931 81 BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
yawstick 3:a8af91804931 82 BSP_LCD_SetFont(&Font24);
yawstick 2:a90c59e9bc39 83 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
yawstick 2:a90c59e9bc39 84 BSP_LCD_DisplayStringAt(0, 10, (uint8_t *)"Touchscreen basic example", CENTER_MODE);
yawstick 3:a8af91804931 85 wait_ms(250);
yawstick 2:a90c59e9bc39 86
yawstick 2:a90c59e9bc39 87 }