Buttons changing color when tapped.
Dependencies: LCD_DISCO_F429ZI mbed TS_DISCO_F429ZI BSP_DISCO_F429ZI
main.cpp@2:bd49dd9c7bd6, 2019-05-19 (annotated)
- Committer:
- fzajdel
- Date:
- Sun May 19 11:59:32 2019 +0000
- Revision:
- 2:bd49dd9c7bd6
- Parent:
- 1:dec3203ec015
Touch screen with buttons
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
fzajdel | 0:6d5a5f60d228 | 1 | #include "mbed.h" |
fzajdel | 0:6d5a5f60d228 | 2 | #include "TS_DISCO_F429ZI.h" |
fzajdel | 0:6d5a5f60d228 | 3 | #include "LCD_DISCO_F429ZI.h" |
fzajdel | 0:6d5a5f60d228 | 4 | #include "rectangle.h" |
fzajdel | 0:6d5a5f60d228 | 5 | #include "config.h" |
fzajdel | 0:6d5a5f60d228 | 6 | #include "button.h" |
fzajdel | 0:6d5a5f60d228 | 7 | #include <vector> |
fzajdel | 0:6d5a5f60d228 | 8 | |
fzajdel | 0:6d5a5f60d228 | 9 | using std::vector; |
fzajdel | 0:6d5a5f60d228 | 10 | |
fzajdel | 0:6d5a5f60d228 | 11 | int main() |
fzajdel | 0:6d5a5f60d228 | 12 | { |
fzajdel | 2:bd49dd9c7bd6 | 13 | LCD_DISCO_F429ZI LcdScreen; |
fzajdel | 2:bd49dd9c7bd6 | 14 | TS_DISCO_F429ZI TouchScreen; |
fzajdel | 2:bd49dd9c7bd6 | 15 | vector <Figure*> Figures(RECTANGLE_NR); |
fzajdel | 0:6d5a5f60d228 | 16 | vector <Widget*> Buttons(BUTTONS_NR); |
fzajdel | 2:bd49dd9c7bd6 | 17 | uint8_t XCoord = 0, YCoord = 0, ButtonCounter = 0; |
fzajdel | 0:6d5a5f60d228 | 18 | |
fzajdel | 0:6d5a5f60d228 | 19 | for(vector<Widget*>::iterator itWidget=Buttons.begin(); itWidget != Buttons.end(); itWidget++){ |
fzajdel | 2:bd49dd9c7bd6 | 20 | |
fzajdel | 0:6d5a5f60d228 | 21 | char ButtonCounterStr[4]; |
fzajdel | 2:bd49dd9c7bd6 | 22 | sprintf(ButtonCounterStr, "%u", ButtonCounter); |
fzajdel | 0:6d5a5f60d228 | 23 | |
fzajdel | 2:bd49dd9c7bd6 | 24 | *itWidget = new Button(XCoord, ((0 != YCoord) ? YCoord-1:YCoord) ,RECTANGE_WIDTH, RECTANGE_HEIGHT, ButtonCounterStr); |
fzajdel | 2:bd49dd9c7bd6 | 25 | YCoord += RECTANGE_HEIGHT; |
fzajdel | 2:bd49dd9c7bd6 | 26 | ButtonCounter++; |
fzajdel | 0:6d5a5f60d228 | 27 | } |
fzajdel | 0:6d5a5f60d228 | 28 | |
fzajdel | 2:bd49dd9c7bd6 | 29 | BSP_LCD_SetFont(&Font24); |
fzajdel | 2:bd49dd9c7bd6 | 30 | LcdScreen.Clear(LCD_COLOR_BLACK); |
fzajdel | 2:bd49dd9c7bd6 | 31 | LcdScreen.SetBackColor(LCD_COLOR_BLACK); |
fzajdel | 2:bd49dd9c7bd6 | 32 | uint8_t TsStatus = TouchScreen.Init(LcdScreen.GetXSize(), LcdScreen.GetYSize()); |
fzajdel | 0:6d5a5f60d228 | 33 | |
fzajdel | 2:bd49dd9c7bd6 | 34 | while(TS_OK == TsStatus) |
fzajdel | 0:6d5a5f60d228 | 35 | { |
fzajdel | 2:bd49dd9c7bd6 | 36 | TS_StateTypeDef TsState; |
fzajdel | 2:bd49dd9c7bd6 | 37 | uint16_t XCoord = SCREEN_WIDTH+1, YCoord = SCREEN_HEIGHT+1; |
fzajdel | 2:bd49dd9c7bd6 | 38 | |
fzajdel | 2:bd49dd9c7bd6 | 39 | TouchScreen.GetState(&TsState); |
fzajdel | 0:6d5a5f60d228 | 40 | |
fzajdel | 2:bd49dd9c7bd6 | 41 | for(vector<Widget*>::iterator ItWidget=Buttons.begin(); ItWidget != Buttons.end(); ItWidget++){ |
fzajdel | 2:bd49dd9c7bd6 | 42 | |
fzajdel | 2:bd49dd9c7bd6 | 43 | if(TsState.TouchDetected){ |
fzajdel | 2:bd49dd9c7bd6 | 44 | XCoord = TsState.X; |
fzajdel | 2:bd49dd9c7bd6 | 45 | YCoord = TsState.Y; |
fzajdel | 2:bd49dd9c7bd6 | 46 | } |
fzajdel | 2:bd49dd9c7bd6 | 47 | |
fzajdel | 2:bd49dd9c7bd6 | 48 | (*ItWidget)->Check(XCoord, YCoord); |
fzajdel | 2:bd49dd9c7bd6 | 49 | LcdScreen << (*ItWidget)->GetFigure(); |
fzajdel | 0:6d5a5f60d228 | 50 | } |
fzajdel | 0:6d5a5f60d228 | 51 | |
fzajdel | 0:6d5a5f60d228 | 52 | wait(0.1); |
fzajdel | 0:6d5a5f60d228 | 53 | } |
fzajdel | 0:6d5a5f60d228 | 54 | } |