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:
Sun Jul 23 06:36:17 2017 +0000
Revision:
4:7a82acfec4da
Parent:
3:a8af91804931
update... prints touch coordinates to screen in location touched

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 4:7a82acfec4da 5 char buff[50];
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 2:a90c59e9bc39 21 if ((x1 > 0 & x1 < 88) & (y1 > 392 & y1 < 480)) {
yawstick 2:a90c59e9bc39 22 clearscreen();
yawstick 2:a90c59e9bc39 23 }
yawstick 4:7a82acfec4da 24 BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
yawstick 4:7a82acfec4da 25 BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
yawstick 4:7a82acfec4da 26 BSP_LCD_SetFont(&Font16);
yawstick 4:7a82acfec4da 27 printf("Touch Detected x=%d y=%d\n\r", x1, y1);
yawstick 4:7a82acfec4da 28 sprintf(buff,"< (%d,%d)", x1, y1 );
yawstick 4:7a82acfec4da 29 BSP_LCD_DisplayStringAt(x1, y1, (uint8_t *)buff, LEFT_MODE);
yawstick 4:7a82acfec4da 30 wait_ms(50);
yawstick 4:7a82acfec4da 31 /* BSP_LCD_DisplayStringAt(x1, y1, (uint8_t *)"< Touch Detected (x1 y1) ", LEFT_MODE); */
yawstick 3:a8af91804931 32 BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
yawstick 4:7a82acfec4da 33 /* BSP_LCD_FillRect(x1, y1, 20, 20); */
yawstick 2:a90c59e9bc39 34 /* BSP_LCD_FillRect(0, 380, 100, 100); */
yawstick 2:a90c59e9bc39 35 }
yawstick 2:a90c59e9bc39 36 }
yawstick 2:a90c59e9bc39 37 }
jeromecoutant 0:cc2802bc7c1b 38
yawstick 2:a90c59e9bc39 39 void mainscreen() {
yawstick 2:a90c59e9bc39 40 printf("\n\n TOUCHSCREEN EXAMPLE FOR DISCO-F769NI START:\n");
yawstick 2:a90c59e9bc39 41 BSP_LCD_Init();
jeromecoutant 0:cc2802bc7c1b 42 BSP_LCD_LayerDefaultInit(0, LCD_FB_START_ADDRESS);
jeromecoutant 0:cc2802bc7c1b 43
jeromecoutant 0:cc2802bc7c1b 44 /* Touchscreen initialization */
jeromecoutant 0:cc2802bc7c1b 45 if (BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize()) == TS_ERROR) {
jeromecoutant 0:cc2802bc7c1b 46 printf("BSP_TS_Init error\n");
jeromecoutant 0:cc2802bc7c1b 47 }
yawstick 2:a90c59e9bc39 48
yawstick 2:a90c59e9bc39 49 BSP_LCD_Clear(LCD_COLOR_WHITE); /* Clear the LCD */
yawstick 2:a90c59e9bc39 50 BSP_LCD_SetTextColor(LCD_COLOR_BLUE); /* Set Touchscreen Demo1 description */
jeromecoutant 0:cc2802bc7c1b 51 BSP_LCD_FillRect(0, 0, BSP_LCD_GetXSize(), 40);
jeromecoutant 0:cc2802bc7c1b 52 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
jeromecoutant 0:cc2802bc7c1b 53 BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
jeromecoutant 0:cc2802bc7c1b 54 BSP_LCD_SetFont(&Font24);
yawstick 2:a90c59e9bc39 55 BSP_LCD_DisplayStringAt(0, 10, (uint8_t *)"Touchscreen basic example", CENTER_MODE);
yawstick 2:a90c59e9bc39 56 BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
yawstick 2:a90c59e9bc39 57 BSP_LCD_FillRect(0, 392, 88, 88);
yawstick 2:a90c59e9bc39 58 BSP_LCD_SetTextColor(LCD_COLOR_MAGENTA);
yawstick 2:a90c59e9bc39 59 BSP_LCD_FillRect(0, 304, 88, 88);
yawstick 2:a90c59e9bc39 60 BSP_LCD_SetTextColor(LCD_COLOR_RED);
yawstick 2:a90c59e9bc39 61 BSP_LCD_FillRect(0, 216, 88, 88);
yawstick 2:a90c59e9bc39 62 BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
yawstick 2:a90c59e9bc39 63 BSP_LCD_FillRect(0, 128, 88, 88);
yawstick 2:a90c59e9bc39 64 BSP_LCD_SetTextColor(LCD_COLOR_YELLOW);
yawstick 2:a90c59e9bc39 65 BSP_LCD_FillRect(0, 40, 88, 88);
jeromecoutant 0:cc2802bc7c1b 66 }
yawstick 2:a90c59e9bc39 67
yawstick 2:a90c59e9bc39 68 void clearscreen() {
yawstick 2:a90c59e9bc39 69
yawstick 2:a90c59e9bc39 70 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
yawstick 2:a90c59e9bc39 71 BSP_LCD_FillRect(0, 40, 800, 480);
yawstick 2:a90c59e9bc39 72 BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
yawstick 2:a90c59e9bc39 73 BSP_LCD_FillRect(0, 392, 88, 88);
yawstick 2:a90c59e9bc39 74 BSP_LCD_SetTextColor(LCD_COLOR_MAGENTA);
yawstick 2:a90c59e9bc39 75 BSP_LCD_FillRect(0, 304, 88, 88);
yawstick 2:a90c59e9bc39 76 BSP_LCD_SetTextColor(LCD_COLOR_RED);
yawstick 2:a90c59e9bc39 77 BSP_LCD_FillRect(0, 216, 88, 88);
yawstick 2:a90c59e9bc39 78 BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
yawstick 2:a90c59e9bc39 79 BSP_LCD_FillRect(0, 128, 88, 88);
yawstick 3:a8af91804931 80 BSP_LCD_SetTextColor(LCD_COLOR_YELLOW);
yawstick 2:a90c59e9bc39 81 BSP_LCD_FillRect(0, 40, 88, 88);
yawstick 3:a8af91804931 82 BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
yawstick 3:a8af91804931 83 BSP_LCD_SetFont(&Font24);
yawstick 2:a90c59e9bc39 84 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
yawstick 2:a90c59e9bc39 85 BSP_LCD_DisplayStringAt(0, 10, (uint8_t *)"Touchscreen basic example", CENTER_MODE);
yawstick 3:a8af91804931 86 wait_ms(250);
yawstick 2:a90c59e9bc39 87
yawstick 2:a90c59e9bc39 88 }