Started a gui menuflow

Dependencies:   LCD_DISCO_F429ZI mbed TS_DISCO_F429ZI BSP_DISCO_F429ZI

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?

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