![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Started a gui menuflow
Dependencies: LCD_DISCO_F429ZI mbed TS_DISCO_F429ZI BSP_DISCO_F429ZI
main.cpp@2:5828e6917e75, 2020-06-09 (annotated)
- Committer:
- Clancy_SENDSOR
- Date:
- Tue Jun 09 22:57:20 2020 +0000
- Revision:
- 2:5828e6917e75
- Parent:
- 1:35eb0c8fa2c0
- Child:
- 3:b029a3f73a9e
added ventilation files
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 1 | #include "mbed.h" |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 2 | #include "TS_DISCO_F429ZI.h" |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 3 | #include "LCD_DISCO_F429ZI.h" |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 4 | |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 5 | #define y_max 310 |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 6 | DigitalOut led1(LED1); |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 7 | Ticker ts_service; |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 8 | |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 9 | AnalogIn pdiff(PC_5); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 10 | AnalogIn p_guage(PC_4); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 11 | |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 12 | LCD_DISCO_F429ZI lcd; |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 13 | TS_DISCO_F429ZI ts; |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 14 | //PwmOut led(LED1); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 15 | PwmOut motor(PB_0); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 16 | |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 17 | TS_StateTypeDef TS_State; |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 18 | TS_StateTypeDef Old_TS_State; |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 19 | |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 20 | uint8_t text[30]; |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 21 | uint8_t status; |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 22 | |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 23 | uint16_t x, y = 0; |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 24 | uint16_t touch_x, touch_y = 0; |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 25 | bool press_detected = false; |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 26 | |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 27 | uint16_t setPressure = 0; |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 28 | uint8_t isr_text[30]; |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 29 | uint8_t display_screen = 1; |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 30 | |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 31 | int showScreen(uint8_t screen) |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 32 | { |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 33 | switch(screen) |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 34 | { |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 35 | case 1 : |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 36 | BSP_LCD_SetFont(&Font20); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 37 | setPressure = (y*20)/y_max; |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 38 | sprintf((char*)isr_text, "SetP=%2d", setPressure); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 39 | lcd.DisplayStringAt(0, LINE(1), (uint8_t *)&isr_text, CENTER_MODE); |
Clancy_SENDSOR | 2:5828e6917e75 | 40 | sprintf((char*)isr_text, "PDIFF=%.2f", (pdiff.read()*6.0f)-0.8f); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 41 | lcd.DisplayStringAt(0, LINE(2), (uint8_t *)&isr_text, CENTER_MODE); |
Clancy_SENDSOR | 2:5828e6917e75 | 42 | sprintf((char*)isr_text, "PGUAGE=%.2f", (p_guage.read()*38.0f)-10.0f); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 43 | lcd.DisplayStringAt(0, LINE(3), (uint8_t *)&isr_text, CENTER_MODE); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 44 | |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 45 | BSP_LCD_SetFont(&Font12); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 46 | lcd.DrawRect(5, 100, 70, 50); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 47 | lcd.DrawRect(85, 100, 70, 50); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 48 | lcd.DrawRect(165, 100, 70, 50); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 49 | sprintf((char*)isr_text, " Start"); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 50 | lcd.DisplayStringAt(10, 130, (uint8_t *)&isr_text, LEFT_MODE); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 51 | sprintf((char*)isr_text, "Settings"); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 52 | lcd.DisplayStringAt(95, 130, (uint8_t *)&isr_text, LEFT_MODE); |
Clancy_SENDSOR | 2:5828e6917e75 | 53 | sprintf((char*)isr_text, "Stop"); |
Clancy_SENDSOR | 2:5828e6917e75 | 54 | lcd.DisplayStringAt(170, 130, (uint8_t *)&isr_text, LEFT_MODE); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 55 | |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 56 | lcd.DrawRect(5, 160, 70, 50); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 57 | lcd.DrawRect(85, 160, 70, 50); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 58 | lcd.DrawRect(165, 160, 70, 50); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 59 | |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 60 | lcd.DrawRect(5, 220, 70, 50); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 61 | lcd.DrawRect(85, 220, 70, 50); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 62 | lcd.DrawRect(165, 220, 70, 50); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 63 | break; |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 64 | case 2 : |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 65 | BSP_LCD_SetFont(&Font20); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 66 | setPressure = (y*20)/y_max; |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 67 | sprintf((char*)isr_text, "SetPress=%2d", setPressure); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 68 | lcd.DisplayStringAt(0, LINE(1), (uint8_t *)&isr_text, CENTER_MODE); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 69 | sprintf((char*)isr_text, "PDIFF=%.2f", pdiff.read()*6.0f); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 70 | lcd.DisplayStringAt(0, LINE(2), (uint8_t *)&isr_text, CENTER_MODE); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 71 | sprintf((char*)isr_text, "PGUAGE=%.2f", p_guage.read()*38.0f); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 72 | lcd.DisplayStringAt(0, LINE(3), (uint8_t *)&isr_text, CENTER_MODE); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 73 | |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 74 | BSP_LCD_SetFont(&Font12); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 75 | lcd.DrawRect(5, 100, 70, 50); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 76 | lcd.DrawRect(85, 100, 70, 50); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 77 | lcd.DrawRect(165, 100, 70, 50); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 78 | sprintf((char*)isr_text, " Start"); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 79 | lcd.DisplayStringAt(10, 130, (uint8_t *)&isr_text, LEFT_MODE); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 80 | sprintf((char*)isr_text, "Settings"); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 81 | lcd.DisplayStringAt(95, 130, (uint8_t *)&isr_text, LEFT_MODE); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 82 | sprintf((char*)isr_text, " Stop"); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 83 | lcd.DisplayStringAt(165, 130, (uint8_t *)&isr_text, LEFT_MODE); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 84 | |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 85 | lcd.DrawRect(5, 160, 70, 50); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 86 | lcd.DrawRect(85, 160, 70, 50); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 87 | lcd.DrawRect(165, 160, 70, 50); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 88 | |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 89 | lcd.DrawRect(5, 220, 70, 50); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 90 | lcd.DrawRect(85, 220, 70, 50); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 91 | lcd.DrawRect(165, 220, 70, 50); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 92 | } |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 93 | return screen; |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 94 | } |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 95 | |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 96 | void CheckPress() |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 97 | { |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 98 | if(press_detected) |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 99 | { |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 100 | display_screen = 2; |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 101 | } |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 102 | |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 103 | } |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 104 | |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 105 | void CheckTs() |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 106 | { |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 107 | ts.GetState(&TS_State); |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 108 | if (TS_State.TouchDetected) |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 109 | { |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 110 | x = TS_State.X; |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 111 | y = TS_State.Y; |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 112 | } |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 113 | if ((Old_TS_State.TouchDetected) && (!TS_State.TouchDetected)) |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 114 | { |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 115 | touch_x = x; |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 116 | touch_y = y; |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 117 | press_detected = true; |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 118 | } |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 119 | Old_TS_State = TS_State; |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 120 | } |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 121 | |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 122 | int main() |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 123 | { |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 124 | motor.period(0.1f); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 125 | |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 126 | BSP_LCD_SetFont(&Font20); |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 127 | |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 128 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN", CENTER_MODE); |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 129 | lcd.DisplayStringAt(0, LINE(6), (uint8_t *)"DEMO", CENTER_MODE); |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 130 | |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 131 | |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 132 | wait(1); |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 133 | |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 134 | status = ts.Init(lcd.GetXSize(), lcd.GetYSize()); |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 135 | |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 136 | if (status != TS_OK) |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 137 | { |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 138 | lcd.Clear(LCD_COLOR_RED); |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 139 | lcd.SetBackColor(LCD_COLOR_RED); |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 140 | lcd.SetTextColor(LCD_COLOR_WHITE); |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 141 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN", CENTER_MODE); |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 142 | lcd.DisplayStringAt(0, LINE(6), (uint8_t *)"INIT FAIL", CENTER_MODE); |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 143 | } |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 144 | else |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 145 | { |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 146 | lcd.Clear(LCD_COLOR_GREEN); |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 147 | lcd.SetBackColor(LCD_COLOR_GREEN); |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 148 | lcd.SetTextColor(LCD_COLOR_WHITE); |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 149 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN", CENTER_MODE); |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 150 | lcd.DisplayStringAt(0, LINE(6), (uint8_t *)"INIT OK", CENTER_MODE); |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 151 | } |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 152 | |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 153 | wait(1); |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 154 | lcd.Clear(LCD_COLOR_BLUE); |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 155 | lcd.SetBackColor(LCD_COLOR_BLUE); |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 156 | lcd.SetTextColor(LCD_COLOR_WHITE); |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 157 | |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 158 | ts_service.attach(&CheckTs, 0.2); // the address of the function to be attached (flip) and the interval (2 seconds) |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 159 | |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 160 | while(1) |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 161 | { |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 162 | led1 = !led1; |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 163 | wait(0.2); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 164 | CheckPress(); |
Clancy_SENDSOR | 1:35eb0c8fa2c0 | 165 | showScreen(display_screen); |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 166 | } |
Clancy_SENDSOR | 0:e7b2dc7d7a7f | 167 | } |