
timer
Dependencies: BSP_DISCO_F746NG
Revision 0:0e4d7e992e68, committed 2020-12-09
- Comitter:
- iliatumash
- Date:
- Wed Dec 09 11:23:29 2020 +0000
- Commit message:
- timer
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgignore Wed Dec 09 11:23:29 2020 +0000 @@ -0,0 +1,2 @@ +BUILD +mbed-os/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/BSP_DISCO_F746NG.lib Wed Dec 09 11:23:29 2020 +0000 @@ -0,0 +1,1 @@ +https://mbed.org/teams/ST/code/BSP_DISCO_F746NG/#85dbcff443aa
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Dec 09 11:23:29 2020 +0000 @@ -0,0 +1,110 @@ +#include "mbed.h" +#include "stm32746g_discovery_lcd.h" +#include "stm32746g_discovery_ts.h" + +int minutes= 2; +int seconds = 0; + +Thread thread0; + + void display(){ + BSP_LCD_Init(); + BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER, LCD_FB_START_ADDRESS); + BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER); + BSP_LCD_Clear(LCD_COLOR_BLUE); + BSP_LCD_SetFont(&LCD_DEFAULT_FONT); + BSP_LCD_SetBackColor(LCD_COLOR_BLUE); + BSP_LCD_SetTextColor(LCD_COLOR_WHITE); + } + + void displayInterface(){ + BSP_LCD_FillRect(20, 120, 80, 80); //tlacitko - + BSP_LCD_FillRect(380, 120, 80, 80); //tlacito + + BSP_LCD_FillRect(160, 120, 160, 80); //tlacitko set + + BSP_LCD_SetBackColor(LCD_COLOR_WHITE); + BSP_LCD_SetTextColor(LCD_COLOR_BLACK); + BSP_LCD_DisplayStringAt(-175, 150, (uint8_t *)"-", CENTER_MODE); + BSP_LCD_DisplayStringAt(185, 150, (uint8_t *)"+", CENTER_MODE); + BSP_LCD_DisplayStringAt(0, 150, (uint8_t *)"set", CENTER_MODE); + } + + void printTime() { + BSP_LCD_Clear(LCD_COLOR_BLUE); + displayInterface(); + char buffer[20]; + sprintf(buffer, "%02d : %02d", minutes, seconds); + BSP_LCD_SetBackColor(LCD_COLOR_BLUE); + BSP_LCD_SetTextColor(LCD_COLOR_WHITE); + BSP_LCD_DisplayStringAt(0, 5, (uint8_t *)buffer, CENTER_MODE); + } + + void increaseSec (){ + seconds += 10; + if (seconds > 50){ + seconds = 0; + minutes++; + } + printTime(); + } + + void decreaseSec (){ + if (seconds == 0 && minutes != 0){ + seconds = 50; + minutes--; + }else if (seconds > 0 ) { + seconds -= 10; + } + printTime(); + } + + void runTimer() { + while(seconds + minutes > 0) { + ThisThread::sleep_for(1000); + if(seconds == 0) { + seconds = 59; + minutes--; + } + else { + seconds--; + } + printTime(); + } + BSP_LCD_Clear(LCD_COLOR_RED); + } + + void defineButtons(uint16_t x, uint16_t y,uint16_t last_x,uint16_t last_y){ + if (x!=last_x && y!=last_y) { + if(x >= 20 && x <= 100 && y >= 120 && y <= 200){decreaseSec();} + if(x >= 380 && x <= 460 && y >= 120 && y <= 200){increaseSec();} + if(x >= 160 && x <= 320 && y >= 120 && y <= 200){runTimer();} + } + } + + void touchScreen(){ + TS_StateTypeDef TS_State; + uint16_t x, y; + uint16_t last_x=0, last_y=0; + uint8_t status; + status = BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize()); + uint8_t idx; + while(1) { + BSP_TS_GetState(&TS_State); + if (TS_State.touchDetected) { + x = TS_State.touchX[0]; + y = TS_State.touchY[0]; + defineButtons(x,y,last_x,last_y); + last_x=x; + last_y=y; + } + } + + } + + int main() + { + display(); + printTime(); + thread0.start(touchScreen); + while(1){} + }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-os.lib Wed Dec 09 11:23:29 2020 +0000 @@ -0,0 +1,1 @@ +https://github.com/ARMmbed/mbed-os/#c6d65fe5082aeef6bf0d7043b4cbf0a9cc9a9d5e