![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Started a gui menuflow
Dependencies: LCD_DISCO_F429ZI mbed TS_DISCO_F429ZI BSP_DISCO_F429ZI
Diff: main.cpp
- Revision:
- 3:b029a3f73a9e
- Parent:
- 2:5828e6917e75
--- a/main.cpp Tue Jun 09 22:57:20 2020 +0000 +++ b/main.cpp Thu Jun 11 22:55:06 2020 +0000 @@ -1,167 +1,46 @@ #include "mbed.h" #include "TS_DISCO_F429ZI.h" #include "LCD_DISCO_F429ZI.h" +#include "Screens.h" +#include "Touch.h" +#include "main.h" #define y_max 310 DigitalOut led1(LED1); + Ticker ts_service; - AnalogIn pdiff(PC_5); AnalogIn p_guage(PC_4); LCD_DISCO_F429ZI lcd; TS_DISCO_F429ZI ts; + //PwmOut led(LED1); PwmOut motor(PB_0); -TS_StateTypeDef TS_State; -TS_StateTypeDef Old_TS_State; + uint8_t text[30]; -uint8_t status; - -uint16_t x, y = 0; -uint16_t touch_x, touch_y = 0; -bool press_detected = false; uint16_t setPressure = 0; -uint8_t isr_text[30]; -uint8_t display_screen = 1; - -int showScreen(uint8_t screen) -{ - switch(screen) - { - case 1 : - BSP_LCD_SetFont(&Font20); - setPressure = (y*20)/y_max; - sprintf((char*)isr_text, "SetP=%2d", setPressure); - lcd.DisplayStringAt(0, LINE(1), (uint8_t *)&isr_text, CENTER_MODE); - sprintf((char*)isr_text, "PDIFF=%.2f", (pdiff.read()*6.0f)-0.8f); - lcd.DisplayStringAt(0, LINE(2), (uint8_t *)&isr_text, CENTER_MODE); - sprintf((char*)isr_text, "PGUAGE=%.2f", (p_guage.read()*38.0f)-10.0f); - lcd.DisplayStringAt(0, LINE(3), (uint8_t *)&isr_text, CENTER_MODE); - - BSP_LCD_SetFont(&Font12); - lcd.DrawRect(5, 100, 70, 50); - lcd.DrawRect(85, 100, 70, 50); - lcd.DrawRect(165, 100, 70, 50); - sprintf((char*)isr_text, " Start"); - lcd.DisplayStringAt(10, 130, (uint8_t *)&isr_text, LEFT_MODE); - sprintf((char*)isr_text, "Settings"); - lcd.DisplayStringAt(95, 130, (uint8_t *)&isr_text, LEFT_MODE); - sprintf((char*)isr_text, "Stop"); - lcd.DisplayStringAt(170, 130, (uint8_t *)&isr_text, LEFT_MODE); - - lcd.DrawRect(5, 160, 70, 50); - lcd.DrawRect(85, 160, 70, 50); - lcd.DrawRect(165, 160, 70, 50); - - lcd.DrawRect(5, 220, 70, 50); - lcd.DrawRect(85, 220, 70, 50); - lcd.DrawRect(165, 220, 70, 50); - break; - case 2 : - BSP_LCD_SetFont(&Font20); - setPressure = (y*20)/y_max; - sprintf((char*)isr_text, "SetPress=%2d", setPressure); - lcd.DisplayStringAt(0, LINE(1), (uint8_t *)&isr_text, CENTER_MODE); - sprintf((char*)isr_text, "PDIFF=%.2f", pdiff.read()*6.0f); - lcd.DisplayStringAt(0, LINE(2), (uint8_t *)&isr_text, CENTER_MODE); - sprintf((char*)isr_text, "PGUAGE=%.2f", p_guage.read()*38.0f); - lcd.DisplayStringAt(0, LINE(3), (uint8_t *)&isr_text, CENTER_MODE); - - BSP_LCD_SetFont(&Font12); - lcd.DrawRect(5, 100, 70, 50); - lcd.DrawRect(85, 100, 70, 50); - lcd.DrawRect(165, 100, 70, 50); - sprintf((char*)isr_text, " Start"); - lcd.DisplayStringAt(10, 130, (uint8_t *)&isr_text, LEFT_MODE); - sprintf((char*)isr_text, "Settings"); - lcd.DisplayStringAt(95, 130, (uint8_t *)&isr_text, LEFT_MODE); - sprintf((char*)isr_text, " Stop"); - lcd.DisplayStringAt(165, 130, (uint8_t *)&isr_text, LEFT_MODE); - - lcd.DrawRect(5, 160, 70, 50); - lcd.DrawRect(85, 160, 70, 50); - lcd.DrawRect(165, 160, 70, 50); - - lcd.DrawRect(5, 220, 70, 50); - lcd.DrawRect(85, 220, 70, 50); - lcd.DrawRect(165, 220, 70, 50); - } - return screen; -} - -void CheckPress() -{ - if(press_detected) - { - display_screen = 2; - } - -} - -void CheckTs() -{ - ts.GetState(&TS_State); - if (TS_State.TouchDetected) - { - x = TS_State.X; - y = TS_State.Y; - } - if ((Old_TS_State.TouchDetected) && (!TS_State.TouchDetected)) - { - touch_x = x; - touch_y = y; - press_detected = true; - } - Old_TS_State = TS_State; -} +ScreenState display_screen = StartUp; // StartScreen +uint8_t status = 0; int main() { motor.period(0.1f); - - BSP_LCD_SetFont(&Font20); - - lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN", CENTER_MODE); - lcd.DisplayStringAt(0, LINE(6), (uint8_t *)"DEMO", CENTER_MODE); - - + + ts_service.attach(&CheckTs, 0.1); // the address of the function to be attached (flip) and the interval (2 seconds) + status= ts.Init(lcd.GetXSize(), lcd.GetYSize()); + wait(1); - - status = ts.Init(lcd.GetXSize(), lcd.GetYSize()); - - if (status != TS_OK) - { - lcd.Clear(LCD_COLOR_RED); - lcd.SetBackColor(LCD_COLOR_RED); - lcd.SetTextColor(LCD_COLOR_WHITE); - lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN", CENTER_MODE); - lcd.DisplayStringAt(0, LINE(6), (uint8_t *)"INIT FAIL", CENTER_MODE); - } - else - { - lcd.Clear(LCD_COLOR_GREEN); - lcd.SetBackColor(LCD_COLOR_GREEN); - lcd.SetTextColor(LCD_COLOR_WHITE); - lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN", CENTER_MODE); - lcd.DisplayStringAt(0, LINE(6), (uint8_t *)"INIT OK", CENTER_MODE); - } - - wait(1); - lcd.Clear(LCD_COLOR_BLUE); - lcd.SetBackColor(LCD_COLOR_BLUE); + lcd.Clear(LCD_COLOR_DARKGRAY); + lcd.SetBackColor(LCD_COLOR_DARKGRAY); lcd.SetTextColor(LCD_COLOR_WHITE); - - ts_service.attach(&CheckTs, 0.2); // the address of the function to be attached (flip) and the interval (2 seconds) while(1) { - led1 = !led1; - wait(0.2); - CheckPress(); - showScreen(display_screen); + CheckPress(display_screen); + showScreen(display_screen,lcd); } }