2a
Dependencies: BSP_DISCO_F429ZI LCD_DISCO_F429ZI TS_DISCO_F429ZI mbed
main.cpp@0:6d8b197659af, 2017-05-05 (annotated)
- Committer:
- Robsonik16
- Date:
- Fri May 05 19:30:39 2017 +0000
- Revision:
- 0:6d8b197659af
a
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Robsonik16 | 0:6d8b197659af | 1 | #include "mbed.h" |
Robsonik16 | 0:6d8b197659af | 2 | #include "TS_DISCO_F429ZI.h" |
Robsonik16 | 0:6d8b197659af | 3 | #include "LCD_DISCO_F429ZI.h" |
Robsonik16 | 0:6d8b197659af | 4 | |
Robsonik16 | 0:6d8b197659af | 5 | LCD_DISCO_F429ZI lcd; |
Robsonik16 | 0:6d8b197659af | 6 | TS_DISCO_F429ZI ts; |
Robsonik16 | 0:6d8b197659af | 7 | bool touchInRect(uint16_t TouchXpos, uint16_t TouchYpos,uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height) |
Robsonik16 | 0:6d8b197659af | 8 | { |
Robsonik16 | 0:6d8b197659af | 9 | if((TouchXpos>=Xpos)&&(TouchXpos<=Xpos+Width)&&(TouchYpos>=Ypos)&&(TouchYpos<=Ypos+Height))return (true); |
Robsonik16 | 0:6d8b197659af | 10 | else return(false); |
Robsonik16 | 0:6d8b197659af | 11 | } |
Robsonik16 | 0:6d8b197659af | 12 | |
Robsonik16 | 0:6d8b197659af | 13 | void drawNumber() |
Robsonik16 | 0:6d8b197659af | 14 | { |
Robsonik16 | 0:6d8b197659af | 15 | uint8_t text[3]; |
Robsonik16 | 0:6d8b197659af | 16 | lcd.SetTextColor(LCD_COLOR_WHITE); |
Robsonik16 | 0:6d8b197659af | 17 | lcd.SetBackColor(LCD_COLOR_RED); |
Robsonik16 | 0:6d8b197659af | 18 | for(uint8_t i=0; i<4; i++) { |
Robsonik16 | 0:6d8b197659af | 19 | sprintf((char*)text, "%d", i); |
Robsonik16 | 0:6d8b197659af | 20 | lcd.DisplayStringAt(0, 0+i*80, (uint8_t *)&text, LEFT_MODE); |
Robsonik16 | 0:6d8b197659af | 21 | } |
Robsonik16 | 0:6d8b197659af | 22 | lcd.SetBackColor(LCD_COLOR_BLACK); |
Robsonik16 | 0:6d8b197659af | 23 | } |
Robsonik16 | 0:6d8b197659af | 24 | int main() |
Robsonik16 | 0:6d8b197659af | 25 | { |
Robsonik16 | 0:6d8b197659af | 26 | TS_StateTypeDef TS_State; |
Robsonik16 | 0:6d8b197659af | 27 | uint16_t x, y; |
Robsonik16 | 0:6d8b197659af | 28 | uint8_t text[30]; |
Robsonik16 | 0:6d8b197659af | 29 | uint8_t status; |
Robsonik16 | 0:6d8b197659af | 30 | bool UpdateAfterTouch=true; |
Robsonik16 | 0:6d8b197659af | 31 | |
Robsonik16 | 0:6d8b197659af | 32 | BSP_LCD_SetFont(&Font20); |
Robsonik16 | 0:6d8b197659af | 33 | |
Robsonik16 | 0:6d8b197659af | 34 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN", CENTER_MODE); |
Robsonik16 | 0:6d8b197659af | 35 | lcd.DisplayStringAt(0, LINE(6), (uint8_t *)"DEMO", CENTER_MODE); |
Robsonik16 | 0:6d8b197659af | 36 | wait_ms(500); |
Robsonik16 | 0:6d8b197659af | 37 | |
Robsonik16 | 0:6d8b197659af | 38 | status = ts.Init(lcd.GetXSize(), lcd.GetYSize()); |
Robsonik16 | 0:6d8b197659af | 39 | |
Robsonik16 | 0:6d8b197659af | 40 | if (status != TS_OK) { |
Robsonik16 | 0:6d8b197659af | 41 | lcd.Clear(LCD_COLOR_RED); |
Robsonik16 | 0:6d8b197659af | 42 | lcd.SetBackColor(LCD_COLOR_RED); |
Robsonik16 | 0:6d8b197659af | 43 | lcd.SetTextColor(LCD_COLOR_WHITE); |
Robsonik16 | 0:6d8b197659af | 44 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN", CENTER_MODE); |
Robsonik16 | 0:6d8b197659af | 45 | lcd.DisplayStringAt(0, LINE(6), (uint8_t *)"INIT FAIL", CENTER_MODE); |
Robsonik16 | 0:6d8b197659af | 46 | } else { |
Robsonik16 | 0:6d8b197659af | 47 | lcd.Clear(LCD_COLOR_GREEN); |
Robsonik16 | 0:6d8b197659af | 48 | lcd.SetBackColor(LCD_COLOR_GREEN); |
Robsonik16 | 0:6d8b197659af | 49 | lcd.SetTextColor(LCD_COLOR_WHITE); |
Robsonik16 | 0:6d8b197659af | 50 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN", CENTER_MODE); |
Robsonik16 | 0:6d8b197659af | 51 | lcd.DisplayStringAt(0, LINE(6), (uint8_t *)"INIT OK", CENTER_MODE); |
Robsonik16 | 0:6d8b197659af | 52 | } |
Robsonik16 | 0:6d8b197659af | 53 | |
Robsonik16 | 0:6d8b197659af | 54 | wait_ms(500); |
Robsonik16 | 0:6d8b197659af | 55 | |
Robsonik16 | 0:6d8b197659af | 56 | |
Robsonik16 | 0:6d8b197659af | 57 | lcd.Clear(LCD_COLOR_BLACK); |
Robsonik16 | 0:6d8b197659af | 58 | lcd.SetBackColor(LCD_COLOR_BLACK); |
Robsonik16 | 0:6d8b197659af | 59 | lcd.SetTextColor(LCD_COLOR_GREEN); |
Robsonik16 | 0:6d8b197659af | 60 | |
Robsonik16 | 0:6d8b197659af | 61 | for(uint8_t i=0; i<4; i++) |
Robsonik16 | 0:6d8b197659af | 62 | lcd.DrawRect(0,0+80*i,80,80); |
Robsonik16 | 0:6d8b197659af | 63 | |
Robsonik16 | 0:6d8b197659af | 64 | lcd.SetFont(&Font24); |
Robsonik16 | 0:6d8b197659af | 65 | |
Robsonik16 | 0:6d8b197659af | 66 | while(1) { |
Robsonik16 | 0:6d8b197659af | 67 | wait_ms(100); |
Robsonik16 | 0:6d8b197659af | 68 | |
Robsonik16 | 0:6d8b197659af | 69 | |
Robsonik16 | 0:6d8b197659af | 70 | ts.GetState(&TS_State); |
Robsonik16 | 0:6d8b197659af | 71 | if (TS_State.TouchDetected) { |
Robsonik16 | 0:6d8b197659af | 72 | UpdateAfterTouch=true; |
Robsonik16 | 0:6d8b197659af | 73 | x = TS_State.X; |
Robsonik16 | 0:6d8b197659af | 74 | y = TS_State.Y; |
Robsonik16 | 0:6d8b197659af | 75 | lcd.SetTextColor(LCD_COLOR_GREEN); |
Robsonik16 | 0:6d8b197659af | 76 | for(uint8_t i=0; i<4; i++) |
Robsonik16 | 0:6d8b197659af | 77 | if(touchInRect(x,y,1,1+80*i,79,79)) |
Robsonik16 | 0:6d8b197659af | 78 | lcd.FillRect(1,1+80*i,79,79); |
Robsonik16 | 0:6d8b197659af | 79 | drawNumber(); |
Robsonik16 | 0:6d8b197659af | 80 | } else if(UpdateAfterTouch == true) { |
Robsonik16 | 0:6d8b197659af | 81 | UpdateAfterTouch=false; |
Robsonik16 | 0:6d8b197659af | 82 | lcd.SetTextColor(LCD_COLOR_BLUE); |
Robsonik16 | 0:6d8b197659af | 83 | for(uint8_t i=0; i<4; i++) |
Robsonik16 | 0:6d8b197659af | 84 | lcd.FillRect(1,1+80*i,79,79); |
Robsonik16 | 0:6d8b197659af | 85 | drawNumber(); |
Robsonik16 | 0:6d8b197659af | 86 | } |
Robsonik16 | 0:6d8b197659af | 87 | |
Robsonik16 | 0:6d8b197659af | 88 | |
Robsonik16 | 0:6d8b197659af | 89 | } |
Robsonik16 | 0:6d8b197659af | 90 | } |