Buttons changing color when tapped.

Dependencies:   LCD_DISCO_F429ZI mbed TS_DISCO_F429ZI BSP_DISCO_F429ZI

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?

UserRevisionLine numberNew 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 }