1

Dependencies:   BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG mbed

Committer:
love750s
Date:
Tue Mar 15 00:48:41 2016 +0000
Revision:
0:8f0206e51e1b
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
love750s 0:8f0206e51e1b 1 #include "mbed.h"
love750s 0:8f0206e51e1b 2 #include "TS_DISCO_F746NG.h"
love750s 0:8f0206e51e1b 3 #include "LCD_DISCO_F746NG.h"
love750s 0:8f0206e51e1b 4
love750s 0:8f0206e51e1b 5 LCD_DISCO_F746NG lcd;
love750s 0:8f0206e51e1b 6 TS_DISCO_F746NG ts;
love750s 0:8f0206e51e1b 7
love750s 0:8f0206e51e1b 8 int main()
love750s 0:8f0206e51e1b 9 {
love750s 0:8f0206e51e1b 10 TS_StateTypeDef TS_State;
love750s 0:8f0206e51e1b 11 uint16_t x, y;
love750s 0:8f0206e51e1b 12 uint8_t text[30];
love750s 0:8f0206e51e1b 13 uint8_t status;
love750s 0:8f0206e51e1b 14 uint8_t idx;
love750s 0:8f0206e51e1b 15 uint8_t cleared = 0;
love750s 0:8f0206e51e1b 16 uint8_t prev_nb_touches = 0;
love750s 0:8f0206e51e1b 17
love750s 0:8f0206e51e1b 18 lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN DEMO", CENTER_MODE);
love750s 0:8f0206e51e1b 19 wait(1);
love750s 0:8f0206e51e1b 20
love750s 0:8f0206e51e1b 21 status = ts.Init(lcd.GetXSize(), lcd.GetYSize());
love750s 0:8f0206e51e1b 22 if (status != TS_OK) {
love750s 0:8f0206e51e1b 23 lcd.Clear(LCD_COLOR_RED);
love750s 0:8f0206e51e1b 24 lcd.SetBackColor(LCD_COLOR_RED);
love750s 0:8f0206e51e1b 25 lcd.SetTextColor(LCD_COLOR_WHITE);
love750s 0:8f0206e51e1b 26 lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT FAIL", CENTER_MODE);
love750s 0:8f0206e51e1b 27 } else {
love750s 0:8f0206e51e1b 28 lcd.Clear(LCD_COLOR_GREEN);
love750s 0:8f0206e51e1b 29 lcd.SetBackColor(LCD_COLOR_GREEN);
love750s 0:8f0206e51e1b 30 lcd.SetTextColor(LCD_COLOR_WHITE);
love750s 0:8f0206e51e1b 31 lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT OK", CENTER_MODE);
love750s 0:8f0206e51e1b 32 }
love750s 0:8f0206e51e1b 33
love750s 0:8f0206e51e1b 34 wait(1);
love750s 0:8f0206e51e1b 35 lcd.SetFont(&Font12);
love750s 0:8f0206e51e1b 36 lcd.SetBackColor(LCD_COLOR_BLUE);
love750s 0:8f0206e51e1b 37 lcd.SetTextColor(LCD_COLOR_WHITE);
love750s 0:8f0206e51e1b 38
love750s 0:8f0206e51e1b 39 while(1) {
love750s 0:8f0206e51e1b 40
love750s 0:8f0206e51e1b 41 ts.GetState(&TS_State);
love750s 0:8f0206e51e1b 42 if (TS_State.touchDetected) {
love750s 0:8f0206e51e1b 43 // Clear lines corresponding to old touches coordinates
love750s 0:8f0206e51e1b 44 if (TS_State.touchDetected < prev_nb_touches) {
love750s 0:8f0206e51e1b 45 for (idx = (TS_State.touchDetected + 1); idx <= 5; idx++) {
love750s 0:8f0206e51e1b 46 lcd.ClearStringLine(idx);
love750s 0:8f0206e51e1b 47 }
love750s 0:8f0206e51e1b 48 }
love750s 0:8f0206e51e1b 49 prev_nb_touches = TS_State.touchDetected;
love750s 0:8f0206e51e1b 50
love750s 0:8f0206e51e1b 51 cleared = 0;
love750s 0:8f0206e51e1b 52
love750s 0:8f0206e51e1b 53 sprintf((char*)text, "Touches: %d", TS_State.touchDetected);
love750s 0:8f0206e51e1b 54 lcd.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE);
love750s 0:8f0206e51e1b 55
love750s 0:8f0206e51e1b 56 for (idx = 0; idx < TS_State.touchDetected; idx++) {
love750s 0:8f0206e51e1b 57 x = TS_State.touchX[idx];
love750s 0:8f0206e51e1b 58 y = TS_State.touchY[idx];
love750s 0:8f0206e51e1b 59 sprintf((char*)text, "Touch %d: x=%d y=%d ", idx+1, x, y);
love750s 0:8f0206e51e1b 60 lcd.DisplayStringAt(0, LINE(idx+1), (uint8_t *)&text, LEFT_MODE);
love750s 0:8f0206e51e1b 61 }
love750s 0:8f0206e51e1b 62
love750s 0:8f0206e51e1b 63 lcd.DrawPixel(TS_State.touchX[0], TS_State.touchY[0], LCD_COLOR_ORANGE);
love750s 0:8f0206e51e1b 64 } else {
love750s 0:8f0206e51e1b 65 if (!cleared) {
love750s 0:8f0206e51e1b 66 lcd.Clear(LCD_COLOR_BLUE);
love750s 0:8f0206e51e1b 67 sprintf((char*)text, "Touches: 0");
love750s 0:8f0206e51e1b 68 lcd.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE);
love750s 0:8f0206e51e1b 69 cleared = 1;
love750s 0:8f0206e51e1b 70 }
love750s 0:8f0206e51e1b 71 }
love750s 0:8f0206e51e1b 72 }
love750s 0:8f0206e51e1b 73 }