pachas

Dependencies:   mbed QEI FastPWM

Committer:
miguelangel_2511
Date:
Sun Apr 26 08:50:12 2020 +0000
Revision:
9:95fdcdc0977e
Parent:
8:208d965a3bd2
Child:
10:b2d87404309a
Prueba del ventilador con las graficas de volumen, flujo y presion. Aun no se ha tomado en cuenta la influencia del tiempo de impresion sobre la frecuencia de muestreo eficaz.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
miguelangel_2511 6:d38287621cca 1
miguelangel_2511 6:d38287621cca 2 #include "mbed.h"
miguelangel_2511 6:d38287621cca 3 #include "stdint.h"
miguelangel_2511 6:d38287621cca 4 #include "project_defines.h"
miguelangel_2511 6:d38287621cca 5 #include "nextion_interface.h"
miguelangel_2511 6:d38287621cca 6 #include "encoder_interface.h"
miguelangel_2511 7:f4e248182d31 7 #include "pressure_sensors.h"
miguelangel_2511 7:f4e248182d31 8 #include "stepper_motor_driver.h"
miguelangel_2511 6:d38287621cca 9 #include "ventilator.h"
miguelangel_2511 7:f4e248182d31 10
miguelangel_2511 6:d38287621cca 11
miguelangel_2511 8:208d965a3bd2 12
miguelangel_2511 6:d38287621cca 13 /* Object definition */
miguelangel_2511 7:f4e248182d31 14 Serial nextion_display(NEXTION_DISPLAY_TX_PIN,NEXTION_DISPLAY_RX_PIN);
miguelangel_2511 6:d38287621cca 15 // For testing pusposes only
miguelangel_2511 7:f4e248182d31 16 //Serial pc(USBTX, USBRX);
miguelangel_2511 6:d38287621cca 17
miguelangel_2511 6:d38287621cca 18 /* Global variable definition */
miguelangel_2511 6:d38287621cca 19
miguelangel_2511 6:d38287621cca 20 uint16_t volume_setpoint_display = VOLUME_SETPOINT_VALUE_DEFAULT;
miguelangel_2511 6:d38287621cca 21 uint16_t volume_measured_display = 480;
miguelangel_2511 6:d38287621cca 22 uint8_t resp_frequency_display = RESP_FREQUENCY_VALUE_DEFAULT;
miguelangel_2511 6:d38287621cca 23 float inspiration_time_display = INSPIRATION_TIME_VALUE_DEFAULT;
miguelangel_2511 6:d38287621cca 24 float expiration_time_display = EXPIRATION_TIME_VALUE_DEFAULT;
miguelangel_2511 6:d38287621cca 25 uint8_t pressure_measured_display = 16;
miguelangel_2511 6:d38287621cca 26 uint8_t gas_input_display = AIR_INPUT;
miguelangel_2511 6:d38287621cca 27
miguelangel_2511 6:d38287621cca 28 uint16_t selection_box_coordinates[3][4]={
miguelangel_2511 6:d38287621cca 29 {1,1,159,159},
miguelangel_2511 6:d38287621cca 30 {161,1,319,159},
miguelangel_2511 6:d38287621cca 31 {321,1,478, 159}
miguelangel_2511 6:d38287621cca 32 };
miguelangel_2511 6:d38287621cca 33
miguelangel_2511 6:d38287621cca 34 float i_e_ratio_display_table[I_E_RATIO_INDEX_LIMIT][2]={
miguelangel_2511 6:d38287621cca 35 {1.0,2.0},
miguelangel_2511 6:d38287621cca 36 {1.0,2.5},
miguelangel_2511 6:d38287621cca 37 {1.0,3.0}
miguelangel_2511 6:d38287621cca 38 };
miguelangel_2511 6:d38287621cca 39
miguelangel_2511 6:d38287621cca 40
miguelangel_2511 6:d38287621cca 41 /* Function definition */
miguelangel_2511 6:d38287621cca 42
miguelangel_2511 6:d38287621cca 43 void Nextion_Interface_Initialize(void){
miguelangel_2511 6:d38287621cca 44 /* Configure baud rate */
miguelangel_2511 8:208d965a3bd2 45 nextion_display.baud(9600);
miguelangel_2511 8:208d965a3bd2 46 wait(1);
miguelangel_2511 8:208d965a3bd2 47 nextion_display.printf("baud=%d", NEXTION_DISPLAY_BAUD_RATE);
miguelangel_2511 8:208d965a3bd2 48 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 49 wait(1);
miguelangel_2511 7:f4e248182d31 50 nextion_display.baud(NEXTION_DISPLAY_BAUD_RATE);
miguelangel_2511 8:208d965a3bd2 51 wait(1);
miguelangel_2511 8:208d965a3bd2 52
miguelangel_2511 8:208d965a3bd2 53 /* Draw separators for the displayed values */
miguelangel_2511 8:208d965a3bd2 54 nextion_display.printf("line 10,160,190,160,%d", WHITE);
miguelangel_2511 8:208d965a3bd2 55 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 56 nextion_display.printf("line 10,320,190,320,%d", WHITE);
miguelangel_2511 8:208d965a3bd2 57 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 58 nextion_display.printf("line 610,160,790,160,%d", WHITE);
miguelangel_2511 8:208d965a3bd2 59 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 60 nextion_display.printf("line 610,320,790,320,%d", WHITE);
miguelangel_2511 8:208d965a3bd2 61 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 62
miguelangel_2511 6:d38287621cca 63 /* Set font color */
miguelangel_2511 8:208d965a3bd2 64 nextion_display.printf("t1.pco=%d", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 65 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 66 nextion_display.printf("t4.pco=%d", NORMAL_COLOR);
miguelangel_2511 8:208d965a3bd2 67 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 68 nextion_display.printf("t7.pco=%d", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 69 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 9:95fdcdc0977e 70
miguelangel_2511 6:d38287621cca 71 /* Print default values */
miguelangel_2511 6:d38287621cca 72 Volume_Setpoint_Fix();
miguelangel_2511 6:d38287621cca 73 Resp_Frequency_Fix();
miguelangel_2511 6:d38287621cca 74 I_E_Ratio_Fix();
miguelangel_2511 6:d38287621cca 75
miguelangel_2511 6:d38287621cca 76 }
miguelangel_2511 6:d38287621cca 77
miguelangel_2511 6:d38287621cca 78
miguelangel_2511 6:d38287621cca 79
miguelangel_2511 6:d38287621cca 80
miguelangel_2511 6:d38287621cca 81 void Parameter_Selection_Box_Update(void){
miguelangel_2511 6:d38287621cca 82
miguelangel_2511 6:d38287621cca 83 /* Remove the selection box from the previous position */
miguelangel_2511 6:d38287621cca 84 switch(past_parameter_selection_index){
miguelangel_2511 6:d38287621cca 85 case 0:
miguelangel_2511 8:208d965a3bd2 86 nextion_display.printf("t1.pco=%d", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 87 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 88 break;
miguelangel_2511 6:d38287621cca 89 case 1:
miguelangel_2511 8:208d965a3bd2 90 nextion_display.printf("t4.pco=%d", NORMAL_COLOR);
miguelangel_2511 8:208d965a3bd2 91 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 92 break;
miguelangel_2511 8:208d965a3bd2 93 case 2:
miguelangel_2511 6:d38287621cca 94 nextion_display.printf("t7.pco=%d", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 95 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 96 break;
miguelangel_2511 6:d38287621cca 97 default:
miguelangel_2511 6:d38287621cca 98 break;
miguelangel_2511 6:d38287621cca 99 }
miguelangel_2511 6:d38287621cca 100
miguelangel_2511 6:d38287621cca 101
miguelangel_2511 6:d38287621cca 102 /* Draw the selection box in the new position */
miguelangel_2511 6:d38287621cca 103 switch(parameter_selection_index){
miguelangel_2511 6:d38287621cca 104 case 0:
miguelangel_2511 8:208d965a3bd2 105 nextion_display.printf("t1.pco=%d", SELECT_COLOR);
miguelangel_2511 6:d38287621cca 106 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 107 break;
miguelangel_2511 6:d38287621cca 108 case 1:
miguelangel_2511 8:208d965a3bd2 109 nextion_display.printf("t4.pco=%d", SELECT_COLOR);
miguelangel_2511 8:208d965a3bd2 110 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 111 break;
miguelangel_2511 8:208d965a3bd2 112 case 2:
miguelangel_2511 6:d38287621cca 113 nextion_display.printf("t7.pco=%d", SELECT_COLOR);
miguelangel_2511 6:d38287621cca 114 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 115 break;
miguelangel_2511 6:d38287621cca 116 default:
miguelangel_2511 6:d38287621cca 117 break;
miguelangel_2511 6:d38287621cca 118 }
miguelangel_2511 6:d38287621cca 119
miguelangel_2511 6:d38287621cca 120 }
miguelangel_2511 6:d38287621cca 121
miguelangel_2511 6:d38287621cca 122
miguelangel_2511 6:d38287621cca 123 void Parameter_Selection_Box_Remove(void){
miguelangel_2511 6:d38287621cca 124
miguelangel_2511 6:d38287621cca 125 /* Remove the selection box from the current position */
miguelangel_2511 6:d38287621cca 126
miguelangel_2511 6:d38287621cca 127 switch(parameter_selection_index){
miguelangel_2511 6:d38287621cca 128 case 0:
miguelangel_2511 8:208d965a3bd2 129 nextion_display.printf("t1.pco=%d", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 130 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 131 break;
miguelangel_2511 6:d38287621cca 132 case 1:
miguelangel_2511 8:208d965a3bd2 133 nextion_display.printf("t4.pco=%d", NORMAL_COLOR);
miguelangel_2511 8:208d965a3bd2 134 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 135 break;
miguelangel_2511 8:208d965a3bd2 136 case 2:
miguelangel_2511 6:d38287621cca 137 nextion_display.printf("t7.pco=%d", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 138 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 139 break;
miguelangel_2511 6:d38287621cca 140 default:
miguelangel_2511 6:d38287621cca 141 break;
miguelangel_2511 6:d38287621cca 142 }
miguelangel_2511 6:d38287621cca 143
miguelangel_2511 6:d38287621cca 144 }
miguelangel_2511 6:d38287621cca 145
miguelangel_2511 6:d38287621cca 146
miguelangel_2511 6:d38287621cca 147
miguelangel_2511 6:d38287621cca 148
miguelangel_2511 6:d38287621cca 149 void Volume_Setpoint_Display_Update(void){
miguelangel_2511 6:d38287621cca 150
miguelangel_2511 6:d38287621cca 151 volume_setpoint_display = VOLUME_SETPOINT_MINIMUM_VALUE + VOLUME_SETPOINT_STEP*volume_setpoint_index;
miguelangel_2511 6:d38287621cca 152
miguelangel_2511 6:d38287621cca 153 /* Print volume value */
miguelangel_2511 8:208d965a3bd2 154 nextion_display.printf("t1.txt=\"%d\"", volume_setpoint_display);
miguelangel_2511 6:d38287621cca 155 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 156 }
miguelangel_2511 6:d38287621cca 157
miguelangel_2511 6:d38287621cca 158
miguelangel_2511 6:d38287621cca 159 void Volume_Setpoint_Fix(void){
miguelangel_2511 6:d38287621cca 160
miguelangel_2511 6:d38287621cca 161 volume_setpoint = volume_setpoint_display;
miguelangel_2511 6:d38287621cca 162 stepper_parameters_update_flag = 1;
miguelangel_2511 6:d38287621cca 163
miguelangel_2511 6:d38287621cca 164 /* Print volume value */
miguelangel_2511 8:208d965a3bd2 165 nextion_display.printf("t1.txt=\"%d\"", volume_setpoint_display);
miguelangel_2511 6:d38287621cca 166 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 167 }
miguelangel_2511 6:d38287621cca 168
miguelangel_2511 6:d38287621cca 169
miguelangel_2511 6:d38287621cca 170 void Resp_Frequency_Display_Update(void){
miguelangel_2511 6:d38287621cca 171
miguelangel_2511 6:d38287621cca 172 resp_frequency_display = 10 + resp_frequency_index;
miguelangel_2511 6:d38287621cca 173
miguelangel_2511 6:d38287621cca 174 /* Print frequency value */
miguelangel_2511 8:208d965a3bd2 175 nextion_display.printf("t4.txt=\"%d\"", resp_frequency_display);
miguelangel_2511 6:d38287621cca 176 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 177 }
miguelangel_2511 6:d38287621cca 178
miguelangel_2511 6:d38287621cca 179
miguelangel_2511 6:d38287621cca 180 void Resp_Frequency_Fix(void){
miguelangel_2511 6:d38287621cca 181
miguelangel_2511 6:d38287621cca 182 resp_frequency = resp_frequency_display;
miguelangel_2511 6:d38287621cca 183 stepper_parameters_update_flag = 1;
miguelangel_2511 6:d38287621cca 184
miguelangel_2511 6:d38287621cca 185 /* Print frequency value */
miguelangel_2511 8:208d965a3bd2 186 nextion_display.printf("t4.txt=\"%d\"", resp_frequency_display);
miguelangel_2511 6:d38287621cca 187 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 188 }
miguelangel_2511 6:d38287621cca 189
miguelangel_2511 6:d38287621cca 190 void I_E_Ratio_Display_Update(void){
miguelangel_2511 6:d38287621cca 191
miguelangel_2511 6:d38287621cca 192 inspiration_time_display = i_e_ratio_display_table[i_e_ratio_index][0];
miguelangel_2511 6:d38287621cca 193 expiration_time_display = i_e_ratio_display_table[i_e_ratio_index][1];
miguelangel_2511 6:d38287621cca 194
miguelangel_2511 6:d38287621cca 195 /* Print i:e ratio value */
miguelangel_2511 8:208d965a3bd2 196 nextion_display.printf("t7.txt=\"%2.1f : %2.1f\"", inspiration_time_display, expiration_time_display);
miguelangel_2511 8:208d965a3bd2 197 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 198 }
miguelangel_2511 6:d38287621cca 199
miguelangel_2511 6:d38287621cca 200
miguelangel_2511 6:d38287621cca 201 void I_E_Ratio_Fix(void){
miguelangel_2511 6:d38287621cca 202
miguelangel_2511 6:d38287621cca 203 inspiration_time = inspiration_time_display;
miguelangel_2511 6:d38287621cca 204 expiration_time = expiration_time_display;
miguelangel_2511 6:d38287621cca 205 stepper_parameters_update_flag = 1;
miguelangel_2511 6:d38287621cca 206
miguelangel_2511 6:d38287621cca 207 /* Print i:e ratio value */
miguelangel_2511 8:208d965a3bd2 208 nextion_display.printf("t7.txt=\"%2.1f : %2.1f\"", inspiration_time_display, expiration_time_display);
miguelangel_2511 6:d38287621cca 209 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 210 }
miguelangel_2511 7:f4e248182d31 211
miguelangel_2511 8:208d965a3bd2 212 void Volume_Display_Update(void){
miguelangel_2511 9:95fdcdc0977e 213 nextion_display.printf("t11.txt=\"%d\"", (int16_t)volume_ml);
miguelangel_2511 9:95fdcdc0977e 214 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 9:95fdcdc0977e 215 }
miguelangel_2511 9:95fdcdc0977e 216
miguelangel_2511 9:95fdcdc0977e 217 void Flow_Display_Update(void){
miguelangel_2511 9:95fdcdc0977e 218 nextion_display.printf("t14.txt=\"%.3f\"", flow_lpm);
miguelangel_2511 8:208d965a3bd2 219 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 220 }
miguelangel_2511 8:208d965a3bd2 221
miguelangel_2511 8:208d965a3bd2 222 void Pressure_Display_Update(void){
miguelangel_2511 8:208d965a3bd2 223 nextion_display.printf("t15.txt=\"%.1f\"", (pressure_02_psi * PSI_TO_CMH2O_CONSTANT));
miguelangel_2511 8:208d965a3bd2 224 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 225 }
miguelangel_2511 8:208d965a3bd2 226
miguelangel_2511 8:208d965a3bd2 227
miguelangel_2511 8:208d965a3bd2 228 void Nextion_Plot_Volume_Waveform(void){
miguelangel_2511 8:208d965a3bd2 229
miguelangel_2511 8:208d965a3bd2 230 static uint16_t x_pos_counter = 1, prev_y_pos = (VOLUME_WAVEFORM_Y0 + VOLUME_WAVEFORM_HEIGHT - 1);
miguelangel_2511 8:208d965a3bd2 231 int16_t x_pos, y_pos;
miguelangel_2511 8:208d965a3bd2 232 uint16_t volume_scaled_value;
miguelangel_2511 8:208d965a3bd2 233
miguelangel_2511 8:208d965a3bd2 234 //volume_scaled_value = (uint16_t)((volume_ml - 0.5)*VOLUME_WAVEFORM_HEIGHT*2) ;
miguelangel_2511 9:95fdcdc0977e 235 volume_scaled_value = (uint16_t)((volume_ml - 0.5)*4) ;
miguelangel_2511 8:208d965a3bd2 236
miguelangel_2511 8:208d965a3bd2 237 x_pos_counter++;
miguelangel_2511 8:208d965a3bd2 238
miguelangel_2511 8:208d965a3bd2 239 if(x_pos_counter >= VOLUME_WAVEFORM_WIDTH){
miguelangel_2511 8:208d965a3bd2 240 nextion_display.printf("fill %d,%d,%d,%d,%d",VOLUME_WAVEFORM_X0,VOLUME_WAVEFORM_Y0,VOLUME_WAVEFORM_WIDTH,VOLUME_WAVEFORM_HEIGHT,8591);
miguelangel_2511 8:208d965a3bd2 241 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 242 x_pos_counter = 1;
miguelangel_2511 8:208d965a3bd2 243 }
miguelangel_2511 8:208d965a3bd2 244
miguelangel_2511 8:208d965a3bd2 245 x_pos = VOLUME_WAVEFORM_X0 + x_pos_counter;
miguelangel_2511 8:208d965a3bd2 246 y_pos = VOLUME_WAVEFORM_Y0 + VOLUME_WAVEFORM_HEIGHT - volume_scaled_value - 1;
miguelangel_2511 8:208d965a3bd2 247
miguelangel_2511 8:208d965a3bd2 248 if(y_pos <= VOLUME_WAVEFORM_Y0){
miguelangel_2511 8:208d965a3bd2 249 y_pos = VOLUME_WAVEFORM_Y0 + 1;
miguelangel_2511 8:208d965a3bd2 250 }
miguelangel_2511 8:208d965a3bd2 251
miguelangel_2511 8:208d965a3bd2 252 nextion_display.printf("line %d,%d,%d,%d,%d",(x_pos - 1), prev_y_pos, x_pos, y_pos, GREEN);
miguelangel_2511 7:f4e248182d31 253 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 254
miguelangel_2511 8:208d965a3bd2 255 prev_y_pos = y_pos;
miguelangel_2511 7:f4e248182d31 256 }
miguelangel_2511 7:f4e248182d31 257
miguelangel_2511 8:208d965a3bd2 258
miguelangel_2511 8:208d965a3bd2 259 void Nextion_Plot_Flow_Waveform(void){
miguelangel_2511 8:208d965a3bd2 260
miguelangel_2511 8:208d965a3bd2 261 static uint16_t x_pos_counter = 1, prev_y_pos = (FLOW_WAVEFORM_Y0 + FLOW_WAVEFORM_HEIGHT - 1);
miguelangel_2511 8:208d965a3bd2 262 uint16_t x_pos, y_pos;
miguelangel_2511 8:208d965a3bd2 263 uint16_t flow_scaled_value;
miguelangel_2511 8:208d965a3bd2 264
miguelangel_2511 8:208d965a3bd2 265 flow_scaled_value = 79 + (int16_t)(flow_lpm * FLOW_WAVEFORM_HEIGHT);
miguelangel_2511 8:208d965a3bd2 266
miguelangel_2511 8:208d965a3bd2 267 x_pos_counter++;
miguelangel_2511 8:208d965a3bd2 268
miguelangel_2511 8:208d965a3bd2 269 if(x_pos_counter >= FLOW_WAVEFORM_WIDTH){
miguelangel_2511 8:208d965a3bd2 270 nextion_display.printf("fill %d,%d,%d,%d,%d",FLOW_WAVEFORM_X0,FLOW_WAVEFORM_Y0,FLOW_WAVEFORM_WIDTH,FLOW_WAVEFORM_HEIGHT,8591);
miguelangel_2511 8:208d965a3bd2 271 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 272 x_pos_counter = 1;
miguelangel_2511 8:208d965a3bd2 273 }
miguelangel_2511 8:208d965a3bd2 274
miguelangel_2511 8:208d965a3bd2 275 x_pos = FLOW_WAVEFORM_X0 + x_pos_counter;
miguelangel_2511 8:208d965a3bd2 276 y_pos = FLOW_WAVEFORM_Y0 + FLOW_WAVEFORM_HEIGHT - flow_scaled_value - 1;
miguelangel_2511 8:208d965a3bd2 277
miguelangel_2511 8:208d965a3bd2 278
miguelangel_2511 8:208d965a3bd2 279 if(y_pos <= FLOW_WAVEFORM_Y0){
miguelangel_2511 8:208d965a3bd2 280 y_pos = VOLUME_WAVEFORM_Y0 + 1;
miguelangel_2511 8:208d965a3bd2 281 }else if(y_pos >= (FLOW_WAVEFORM_Y0 + FLOW_WAVEFORM_HEIGHT)){
miguelangel_2511 8:208d965a3bd2 282 y_pos = VOLUME_WAVEFORM_Y0 + FLOW_WAVEFORM_HEIGHT - 1;
miguelangel_2511 8:208d965a3bd2 283
miguelangel_2511 8:208d965a3bd2 284 }
miguelangel_2511 8:208d965a3bd2 285
miguelangel_2511 8:208d965a3bd2 286 nextion_display.printf("line %d,%d,%d,%d,%d",(x_pos - 1), prev_y_pos, x_pos, y_pos, YELLOW);
miguelangel_2511 7:f4e248182d31 287 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 288
miguelangel_2511 8:208d965a3bd2 289 prev_y_pos = y_pos;
miguelangel_2511 8:208d965a3bd2 290 }
miguelangel_2511 8:208d965a3bd2 291
miguelangel_2511 8:208d965a3bd2 292
miguelangel_2511 8:208d965a3bd2 293 void Nextion_Plot_Pressure_Waveform(void){
miguelangel_2511 8:208d965a3bd2 294
miguelangel_2511 8:208d965a3bd2 295 static uint16_t x_pos_counter = 1, prev_y_pos = (PRESSURE_WAVEFORM_Y0 + PRESSURE_WAVEFORM_HEIGHT - 1);
miguelangel_2511 8:208d965a3bd2 296 uint16_t x_pos, y_pos;
miguelangel_2511 8:208d965a3bd2 297 uint16_t pressure_02_scaled_value;
miguelangel_2511 8:208d965a3bd2 298
miguelangel_2511 9:95fdcdc0977e 299 pressure_02_scaled_value = (uint16_t)(pressure_02_psi * PRESSURE_WAVEFORM_HEIGHT * 2) ;
miguelangel_2511 8:208d965a3bd2 300
miguelangel_2511 8:208d965a3bd2 301 x_pos_counter++;
miguelangel_2511 8:208d965a3bd2 302
miguelangel_2511 8:208d965a3bd2 303 if(x_pos_counter >= PRESSURE_WAVEFORM_WIDTH){
miguelangel_2511 8:208d965a3bd2 304 nextion_display.printf("fill %d,%d,%d,%d,%d",PRESSURE_WAVEFORM_X0,PRESSURE_WAVEFORM_Y0,PRESSURE_WAVEFORM_WIDTH,PRESSURE_WAVEFORM_HEIGHT,8591);
miguelangel_2511 8:208d965a3bd2 305 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 306 x_pos_counter = 1;
miguelangel_2511 8:208d965a3bd2 307 }
miguelangel_2511 8:208d965a3bd2 308
miguelangel_2511 8:208d965a3bd2 309 x_pos = PRESSURE_WAVEFORM_X0 + x_pos_counter;
miguelangel_2511 8:208d965a3bd2 310 y_pos = PRESSURE_WAVEFORM_Y0 + PRESSURE_WAVEFORM_HEIGHT - pressure_02_scaled_value - 1;
miguelangel_2511 8:208d965a3bd2 311
miguelangel_2511 8:208d965a3bd2 312
miguelangel_2511 8:208d965a3bd2 313 if(y_pos <= PRESSURE_WAVEFORM_Y0){
miguelangel_2511 8:208d965a3bd2 314 y_pos = PRESSURE_WAVEFORM_Y0 + 1;
miguelangel_2511 8:208d965a3bd2 315 }
miguelangel_2511 8:208d965a3bd2 316
miguelangel_2511 8:208d965a3bd2 317 nextion_display.printf("line %d,%d,%d,%d,%d",(x_pos - 1), prev_y_pos, x_pos, y_pos, WHITE);
miguelangel_2511 8:208d965a3bd2 318 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 319
miguelangel_2511 8:208d965a3bd2 320 prev_y_pos = y_pos;
miguelangel_2511 8:208d965a3bd2 321 }
miguelangel_2511 8:208d965a3bd2 322