Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: BSP_DISCO_F469NI LCD_DISCO_F469NI TS_DISCO_F469NI mbed
main.cpp@0:0e730157c767, 2015-12-18 (annotated)
- Committer:
- bcostm
- Date:
- Fri Dec 18 09:06:55 2015 +0000
- Revision:
- 0:0e730157c767
Initial version
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| bcostm | 0:0e730157c767 | 1 | #include "mbed.h" |
| bcostm | 0:0e730157c767 | 2 | #include "TS_DISCO_F469NI.h" |
| bcostm | 0:0e730157c767 | 3 | #include "LCD_DISCO_F469NI.h" |
| bcostm | 0:0e730157c767 | 4 | |
| bcostm | 0:0e730157c767 | 5 | LCD_DISCO_F469NI lcd; |
| bcostm | 0:0e730157c767 | 6 | TS_DISCO_F469NI ts; |
| bcostm | 0:0e730157c767 | 7 | |
| bcostm | 0:0e730157c767 | 8 | int main() |
| bcostm | 0:0e730157c767 | 9 | { |
| bcostm | 0:0e730157c767 | 10 | TS_StateTypeDef TS_State; |
| bcostm | 0:0e730157c767 | 11 | uint16_t x, y; |
| bcostm | 0:0e730157c767 | 12 | uint8_t text[30]; |
| bcostm | 0:0e730157c767 | 13 | uint8_t status; |
| bcostm | 0:0e730157c767 | 14 | uint8_t idx; |
| bcostm | 0:0e730157c767 | 15 | uint8_t cleared = 0; |
| bcostm | 0:0e730157c767 | 16 | uint8_t prev_nb_touches = 0; |
| bcostm | 0:0e730157c767 | 17 | |
| bcostm | 0:0e730157c767 | 18 | BSP_LCD_SetFont(&Font24); |
| bcostm | 0:0e730157c767 | 19 | |
| bcostm | 0:0e730157c767 | 20 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN DEMO", CENTER_MODE); |
| bcostm | 0:0e730157c767 | 21 | wait(1); |
| bcostm | 0:0e730157c767 | 22 | |
| bcostm | 0:0e730157c767 | 23 | status = ts.Init(lcd.GetXSize(), lcd.GetYSize()); |
| bcostm | 0:0e730157c767 | 24 | if (status != TS_OK) |
| bcostm | 0:0e730157c767 | 25 | { |
| bcostm | 0:0e730157c767 | 26 | lcd.Clear(LCD_COLOR_RED); |
| bcostm | 0:0e730157c767 | 27 | lcd.SetBackColor(LCD_COLOR_RED); |
| bcostm | 0:0e730157c767 | 28 | lcd.SetTextColor(LCD_COLOR_WHITE); |
| bcostm | 0:0e730157c767 | 29 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT FAIL", CENTER_MODE); |
| bcostm | 0:0e730157c767 | 30 | } |
| bcostm | 0:0e730157c767 | 31 | else |
| bcostm | 0:0e730157c767 | 32 | { |
| bcostm | 0:0e730157c767 | 33 | lcd.Clear(LCD_COLOR_GREEN); |
| bcostm | 0:0e730157c767 | 34 | lcd.SetBackColor(LCD_COLOR_GREEN); |
| bcostm | 0:0e730157c767 | 35 | lcd.SetTextColor(LCD_COLOR_WHITE); |
| bcostm | 0:0e730157c767 | 36 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT OK", CENTER_MODE); |
| bcostm | 0:0e730157c767 | 37 | } |
| bcostm | 0:0e730157c767 | 38 | |
| bcostm | 0:0e730157c767 | 39 | wait(1); |
| bcostm | 0:0e730157c767 | 40 | lcd.SetBackColor(LCD_COLOR_BLUE); |
| bcostm | 0:0e730157c767 | 41 | lcd.SetTextColor(LCD_COLOR_WHITE); |
| bcostm | 0:0e730157c767 | 42 | |
| bcostm | 0:0e730157c767 | 43 | while(1) |
| bcostm | 0:0e730157c767 | 44 | { |
| bcostm | 0:0e730157c767 | 45 | |
| bcostm | 0:0e730157c767 | 46 | ts.GetState(&TS_State); |
| bcostm | 0:0e730157c767 | 47 | if (TS_State.touchDetected) |
| bcostm | 0:0e730157c767 | 48 | { |
| bcostm | 0:0e730157c767 | 49 | // Clear lines corresponding to old touches coordinates |
| bcostm | 0:0e730157c767 | 50 | if (TS_State.touchDetected < prev_nb_touches) |
| bcostm | 0:0e730157c767 | 51 | { |
| bcostm | 0:0e730157c767 | 52 | for (idx = (TS_State.touchDetected + 1); idx <= 5; idx++) |
| bcostm | 0:0e730157c767 | 53 | { |
| bcostm | 0:0e730157c767 | 54 | lcd.ClearStringLine(idx); |
| bcostm | 0:0e730157c767 | 55 | } |
| bcostm | 0:0e730157c767 | 56 | } |
| bcostm | 0:0e730157c767 | 57 | prev_nb_touches = TS_State.touchDetected; |
| bcostm | 0:0e730157c767 | 58 | |
| bcostm | 0:0e730157c767 | 59 | cleared = 0; |
| bcostm | 0:0e730157c767 | 60 | |
| bcostm | 0:0e730157c767 | 61 | sprintf((char*)text, "Touches: %d", TS_State.touchDetected); |
| bcostm | 0:0e730157c767 | 62 | lcd.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); |
| bcostm | 0:0e730157c767 | 63 | |
| bcostm | 0:0e730157c767 | 64 | for (idx = 0; idx < TS_State.touchDetected; idx++) |
| bcostm | 0:0e730157c767 | 65 | { |
| bcostm | 0:0e730157c767 | 66 | x = TS_State.touchX[idx]; |
| bcostm | 0:0e730157c767 | 67 | y = TS_State.touchY[idx]; |
| bcostm | 0:0e730157c767 | 68 | sprintf((char*)text, "Touch %d: x=%d y=%d ", idx+1, x, y); |
| bcostm | 0:0e730157c767 | 69 | lcd.DisplayStringAt(0, LINE(idx+1), (uint8_t *)&text, LEFT_MODE); |
| bcostm | 0:0e730157c767 | 70 | lcd.FillCircle(TS_State.touchX[idx], TS_State.touchY[idx], 20); |
| bcostm | 0:0e730157c767 | 71 | } |
| bcostm | 0:0e730157c767 | 72 | } |
| bcostm | 0:0e730157c767 | 73 | else |
| bcostm | 0:0e730157c767 | 74 | { |
| bcostm | 0:0e730157c767 | 75 | if (!cleared) |
| bcostm | 0:0e730157c767 | 76 | { |
| bcostm | 0:0e730157c767 | 77 | lcd.Clear(LCD_COLOR_BLUE); |
| bcostm | 0:0e730157c767 | 78 | sprintf((char*)text, "Touches: 0"); |
| bcostm | 0:0e730157c767 | 79 | lcd.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); |
| bcostm | 0:0e730157c767 | 80 | cleared = 1; |
| bcostm | 0:0e730157c767 | 81 | } |
| bcostm | 0:0e730157c767 | 82 | } |
| bcostm | 0:0e730157c767 | 83 | } |
| bcostm | 0:0e730157c767 | 84 | } |