Es un backup para las pruebas de firmware y hardware de un ventilador

Dependencies:   mbed QEI FastPWM

Committer:
miguelangel_2511
Date:
Thu Apr 23 17:05:36 2020 +0000
Revision:
8:208d965a3bd2
Parent:
7:f4e248182d31
Child:
9:95fdcdc0977e
Se agrego la medicion y visualizacion grafica del volumen, el flujo y la presion. Sin embargo, aun no se han aplicado filtros a las seniales medidas.

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 8:208d965a3bd2 70 /*
miguelangel_2511 8:208d965a3bd2 71 pc.printf("t6.pco=%d\n\r", NORMAL_COLOR);
miguelangel_2511 8:208d965a3bd2 72 pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 73 pc.printf("t7.pco=%d\n\r", NORMAL_COLOR);
miguelangel_2511 8:208d965a3bd2 74 pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 75 pc.printf("t8.pco=%d\n\r", NORMAL_COLOR);
miguelangel_2511 8:208d965a3bd2 76 pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 77 */
miguelangel_2511 6:d38287621cca 78 /* Print default values */
miguelangel_2511 6:d38287621cca 79 Volume_Setpoint_Fix();
miguelangel_2511 6:d38287621cca 80 Resp_Frequency_Fix();
miguelangel_2511 6:d38287621cca 81 I_E_Ratio_Fix();
miguelangel_2511 6:d38287621cca 82
miguelangel_2511 6:d38287621cca 83 }
miguelangel_2511 6:d38287621cca 84
miguelangel_2511 6:d38287621cca 85
miguelangel_2511 6:d38287621cca 86
miguelangel_2511 6:d38287621cca 87
miguelangel_2511 6:d38287621cca 88 void Parameter_Selection_Box_Update(void){
miguelangel_2511 6:d38287621cca 89
miguelangel_2511 6:d38287621cca 90 /* Remove the selection box from the previous position */
miguelangel_2511 6:d38287621cca 91 switch(past_parameter_selection_index){
miguelangel_2511 6:d38287621cca 92 case 0:
miguelangel_2511 8:208d965a3bd2 93 nextion_display.printf("t1.pco=%d", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 94 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 95 break;
miguelangel_2511 6:d38287621cca 96 case 1:
miguelangel_2511 8:208d965a3bd2 97 nextion_display.printf("t4.pco=%d", NORMAL_COLOR);
miguelangel_2511 8:208d965a3bd2 98 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 99 break;
miguelangel_2511 8:208d965a3bd2 100 case 2:
miguelangel_2511 6:d38287621cca 101 nextion_display.printf("t7.pco=%d", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 102 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 103 break;
miguelangel_2511 6:d38287621cca 104 default:
miguelangel_2511 6:d38287621cca 105 break;
miguelangel_2511 6:d38287621cca 106 }
miguelangel_2511 6:d38287621cca 107
miguelangel_2511 6:d38287621cca 108
miguelangel_2511 6:d38287621cca 109 /* Draw the selection box in the new position */
miguelangel_2511 6:d38287621cca 110 switch(parameter_selection_index){
miguelangel_2511 6:d38287621cca 111 case 0:
miguelangel_2511 8:208d965a3bd2 112 nextion_display.printf("t1.pco=%d", SELECT_COLOR);
miguelangel_2511 6:d38287621cca 113 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 114 break;
miguelangel_2511 6:d38287621cca 115 case 1:
miguelangel_2511 8:208d965a3bd2 116 nextion_display.printf("t4.pco=%d", SELECT_COLOR);
miguelangel_2511 8:208d965a3bd2 117 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 118 break;
miguelangel_2511 8:208d965a3bd2 119 case 2:
miguelangel_2511 6:d38287621cca 120 nextion_display.printf("t7.pco=%d", SELECT_COLOR);
miguelangel_2511 6:d38287621cca 121 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 122 break;
miguelangel_2511 6:d38287621cca 123 default:
miguelangel_2511 6:d38287621cca 124 break;
miguelangel_2511 6:d38287621cca 125 }
miguelangel_2511 6:d38287621cca 126
miguelangel_2511 6:d38287621cca 127 }
miguelangel_2511 6:d38287621cca 128
miguelangel_2511 6:d38287621cca 129
miguelangel_2511 6:d38287621cca 130 void Parameter_Selection_Box_Remove(void){
miguelangel_2511 6:d38287621cca 131
miguelangel_2511 6:d38287621cca 132 /* Remove the selection box from the current position */
miguelangel_2511 6:d38287621cca 133
miguelangel_2511 6:d38287621cca 134 switch(parameter_selection_index){
miguelangel_2511 6:d38287621cca 135 case 0:
miguelangel_2511 8:208d965a3bd2 136 nextion_display.printf("t1.pco=%d", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 137 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 138 break;
miguelangel_2511 6:d38287621cca 139 case 1:
miguelangel_2511 8:208d965a3bd2 140 nextion_display.printf("t4.pco=%d", NORMAL_COLOR);
miguelangel_2511 8:208d965a3bd2 141 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 142 break;
miguelangel_2511 8:208d965a3bd2 143 case 2:
miguelangel_2511 6:d38287621cca 144 nextion_display.printf("t7.pco=%d", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 145 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 146 break;
miguelangel_2511 6:d38287621cca 147 default:
miguelangel_2511 6:d38287621cca 148 break;
miguelangel_2511 6:d38287621cca 149 }
miguelangel_2511 6:d38287621cca 150
miguelangel_2511 6:d38287621cca 151 }
miguelangel_2511 6:d38287621cca 152
miguelangel_2511 6:d38287621cca 153
miguelangel_2511 6:d38287621cca 154
miguelangel_2511 6:d38287621cca 155
miguelangel_2511 6:d38287621cca 156 void Volume_Setpoint_Display_Update(void){
miguelangel_2511 6:d38287621cca 157
miguelangel_2511 6:d38287621cca 158 volume_setpoint_display = VOLUME_SETPOINT_MINIMUM_VALUE + VOLUME_SETPOINT_STEP*volume_setpoint_index;
miguelangel_2511 6:d38287621cca 159
miguelangel_2511 6:d38287621cca 160 /* Print volume value */
miguelangel_2511 8:208d965a3bd2 161 nextion_display.printf("t1.txt=\"%d\"", volume_setpoint_display);
miguelangel_2511 6:d38287621cca 162 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 163 }
miguelangel_2511 6:d38287621cca 164
miguelangel_2511 6:d38287621cca 165
miguelangel_2511 6:d38287621cca 166 void Volume_Setpoint_Fix(void){
miguelangel_2511 6:d38287621cca 167
miguelangel_2511 6:d38287621cca 168 volume_setpoint = volume_setpoint_display;
miguelangel_2511 6:d38287621cca 169 stepper_parameters_update_flag = 1;
miguelangel_2511 6:d38287621cca 170
miguelangel_2511 6:d38287621cca 171 /* Print volume value */
miguelangel_2511 8:208d965a3bd2 172 nextion_display.printf("t1.txt=\"%d\"", volume_setpoint_display);
miguelangel_2511 6:d38287621cca 173 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 174 }
miguelangel_2511 6:d38287621cca 175
miguelangel_2511 6:d38287621cca 176
miguelangel_2511 6:d38287621cca 177 void Resp_Frequency_Display_Update(void){
miguelangel_2511 6:d38287621cca 178
miguelangel_2511 6:d38287621cca 179 resp_frequency_display = 10 + resp_frequency_index;
miguelangel_2511 6:d38287621cca 180
miguelangel_2511 6:d38287621cca 181 /* Print frequency value */
miguelangel_2511 8:208d965a3bd2 182 nextion_display.printf("t4.txt=\"%d\"", resp_frequency_display);
miguelangel_2511 6:d38287621cca 183 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 184 }
miguelangel_2511 6:d38287621cca 185
miguelangel_2511 6:d38287621cca 186
miguelangel_2511 6:d38287621cca 187 void Resp_Frequency_Fix(void){
miguelangel_2511 6:d38287621cca 188
miguelangel_2511 6:d38287621cca 189 resp_frequency = resp_frequency_display;
miguelangel_2511 6:d38287621cca 190 stepper_parameters_update_flag = 1;
miguelangel_2511 6:d38287621cca 191
miguelangel_2511 6:d38287621cca 192 /* Print frequency value */
miguelangel_2511 8:208d965a3bd2 193 nextion_display.printf("t4.txt=\"%d\"", resp_frequency_display);
miguelangel_2511 6:d38287621cca 194 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 195 }
miguelangel_2511 6:d38287621cca 196
miguelangel_2511 6:d38287621cca 197 void I_E_Ratio_Display_Update(void){
miguelangel_2511 6:d38287621cca 198
miguelangel_2511 6:d38287621cca 199 inspiration_time_display = i_e_ratio_display_table[i_e_ratio_index][0];
miguelangel_2511 6:d38287621cca 200 expiration_time_display = i_e_ratio_display_table[i_e_ratio_index][1];
miguelangel_2511 6:d38287621cca 201
miguelangel_2511 6:d38287621cca 202 /* Print i:e ratio value */
miguelangel_2511 8:208d965a3bd2 203 nextion_display.printf("t7.txt=\"%2.1f : %2.1f\"", inspiration_time_display, expiration_time_display);
miguelangel_2511 8:208d965a3bd2 204 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 205 }
miguelangel_2511 6:d38287621cca 206
miguelangel_2511 6:d38287621cca 207
miguelangel_2511 6:d38287621cca 208 void I_E_Ratio_Fix(void){
miguelangel_2511 6:d38287621cca 209
miguelangel_2511 6:d38287621cca 210 inspiration_time = inspiration_time_display;
miguelangel_2511 6:d38287621cca 211 expiration_time = expiration_time_display;
miguelangel_2511 6:d38287621cca 212 stepper_parameters_update_flag = 1;
miguelangel_2511 6:d38287621cca 213
miguelangel_2511 6:d38287621cca 214 /* Print i:e ratio value */
miguelangel_2511 8:208d965a3bd2 215 nextion_display.printf("t7.txt=\"%2.1f : %2.1f\"", inspiration_time_display, expiration_time_display);
miguelangel_2511 6:d38287621cca 216 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 217 }
miguelangel_2511 7:f4e248182d31 218
miguelangel_2511 8:208d965a3bd2 219 void Volume_Display_Update(void){
miguelangel_2511 8:208d965a3bd2 220 nextion_display.printf("t11.txt=\"%.2f\"", volume_ml);
miguelangel_2511 8:208d965a3bd2 221 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 222 }
miguelangel_2511 8:208d965a3bd2 223
miguelangel_2511 8:208d965a3bd2 224 void Pressure_Display_Update(void){
miguelangel_2511 8:208d965a3bd2 225 nextion_display.printf("t15.txt=\"%.1f\"", (pressure_02_psi * PSI_TO_CMH2O_CONSTANT));
miguelangel_2511 8:208d965a3bd2 226 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 227 }
miguelangel_2511 8:208d965a3bd2 228
miguelangel_2511 8:208d965a3bd2 229 void Flow_Display_Update(void){
miguelangel_2511 8:208d965a3bd2 230 nextion_display.printf("t14.txt=\"%.2f\"", flow_lpm);
miguelangel_2511 7:f4e248182d31 231 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 7:f4e248182d31 232 }
miguelangel_2511 7:f4e248182d31 233
miguelangel_2511 8:208d965a3bd2 234
miguelangel_2511 8:208d965a3bd2 235 void Nextion_Plot_Volume_Waveform(void){
miguelangel_2511 8:208d965a3bd2 236
miguelangel_2511 8:208d965a3bd2 237 static uint16_t x_pos_counter = 1, prev_y_pos = (VOLUME_WAVEFORM_Y0 + VOLUME_WAVEFORM_HEIGHT - 1);
miguelangel_2511 8:208d965a3bd2 238 int16_t x_pos, y_pos;
miguelangel_2511 8:208d965a3bd2 239 uint16_t volume_scaled_value;
miguelangel_2511 8:208d965a3bd2 240
miguelangel_2511 8:208d965a3bd2 241 //volume_scaled_value = (uint16_t)((volume_ml - 0.5)*VOLUME_WAVEFORM_HEIGHT*2) ;
miguelangel_2511 8:208d965a3bd2 242 volume_scaled_value = (uint16_t)((volume_ml - 0.5)*2) ;
miguelangel_2511 8:208d965a3bd2 243
miguelangel_2511 8:208d965a3bd2 244 x_pos_counter++;
miguelangel_2511 8:208d965a3bd2 245
miguelangel_2511 8:208d965a3bd2 246 if(x_pos_counter >= VOLUME_WAVEFORM_WIDTH){
miguelangel_2511 8:208d965a3bd2 247 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 248 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 249 x_pos_counter = 1;
miguelangel_2511 8:208d965a3bd2 250 }
miguelangel_2511 8:208d965a3bd2 251
miguelangel_2511 8:208d965a3bd2 252 x_pos = VOLUME_WAVEFORM_X0 + x_pos_counter;
miguelangel_2511 8:208d965a3bd2 253 y_pos = VOLUME_WAVEFORM_Y0 + VOLUME_WAVEFORM_HEIGHT - volume_scaled_value - 1;
miguelangel_2511 8:208d965a3bd2 254
miguelangel_2511 8:208d965a3bd2 255 if(y_pos <= VOLUME_WAVEFORM_Y0){
miguelangel_2511 8:208d965a3bd2 256 y_pos = VOLUME_WAVEFORM_Y0 + 1;
miguelangel_2511 8:208d965a3bd2 257 }
miguelangel_2511 8:208d965a3bd2 258
miguelangel_2511 8:208d965a3bd2 259 nextion_display.printf("line %d,%d,%d,%d,%d",(x_pos - 1), prev_y_pos, x_pos, y_pos, GREEN);
miguelangel_2511 7:f4e248182d31 260 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 261
miguelangel_2511 8:208d965a3bd2 262 prev_y_pos = y_pos;
miguelangel_2511 7:f4e248182d31 263 }
miguelangel_2511 7:f4e248182d31 264
miguelangel_2511 8:208d965a3bd2 265
miguelangel_2511 8:208d965a3bd2 266 void Nextion_Plot_Flow_Waveform(void){
miguelangel_2511 8:208d965a3bd2 267
miguelangel_2511 8:208d965a3bd2 268 static uint16_t x_pos_counter = 1, prev_y_pos = (FLOW_WAVEFORM_Y0 + FLOW_WAVEFORM_HEIGHT - 1);
miguelangel_2511 8:208d965a3bd2 269 uint16_t x_pos, y_pos;
miguelangel_2511 8:208d965a3bd2 270 uint16_t flow_scaled_value;
miguelangel_2511 8:208d965a3bd2 271
miguelangel_2511 8:208d965a3bd2 272 flow_scaled_value = 79 + (int16_t)(flow_lpm * FLOW_WAVEFORM_HEIGHT);
miguelangel_2511 8:208d965a3bd2 273
miguelangel_2511 8:208d965a3bd2 274 x_pos_counter++;
miguelangel_2511 8:208d965a3bd2 275
miguelangel_2511 8:208d965a3bd2 276 if(x_pos_counter >= FLOW_WAVEFORM_WIDTH){
miguelangel_2511 8:208d965a3bd2 277 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 278 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 279 x_pos_counter = 1;
miguelangel_2511 8:208d965a3bd2 280 }
miguelangel_2511 8:208d965a3bd2 281
miguelangel_2511 8:208d965a3bd2 282 x_pos = FLOW_WAVEFORM_X0 + x_pos_counter;
miguelangel_2511 8:208d965a3bd2 283 y_pos = FLOW_WAVEFORM_Y0 + FLOW_WAVEFORM_HEIGHT - flow_scaled_value - 1;
miguelangel_2511 8:208d965a3bd2 284
miguelangel_2511 8:208d965a3bd2 285
miguelangel_2511 8:208d965a3bd2 286 if(y_pos <= FLOW_WAVEFORM_Y0){
miguelangel_2511 8:208d965a3bd2 287 y_pos = VOLUME_WAVEFORM_Y0 + 1;
miguelangel_2511 8:208d965a3bd2 288 }else if(y_pos >= (FLOW_WAVEFORM_Y0 + FLOW_WAVEFORM_HEIGHT)){
miguelangel_2511 8:208d965a3bd2 289 y_pos = VOLUME_WAVEFORM_Y0 + FLOW_WAVEFORM_HEIGHT - 1;
miguelangel_2511 8:208d965a3bd2 290
miguelangel_2511 8:208d965a3bd2 291 }
miguelangel_2511 8:208d965a3bd2 292
miguelangel_2511 8:208d965a3bd2 293
miguelangel_2511 8:208d965a3bd2 294
miguelangel_2511 8:208d965a3bd2 295 nextion_display.printf("line %d,%d,%d,%d,%d",(x_pos - 1), prev_y_pos, x_pos, y_pos, YELLOW);
miguelangel_2511 7:f4e248182d31 296 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 297
miguelangel_2511 8:208d965a3bd2 298 prev_y_pos = y_pos;
miguelangel_2511 8:208d965a3bd2 299 }
miguelangel_2511 8:208d965a3bd2 300
miguelangel_2511 8:208d965a3bd2 301
miguelangel_2511 8:208d965a3bd2 302 void Nextion_Plot_Pressure_Waveform(void){
miguelangel_2511 8:208d965a3bd2 303
miguelangel_2511 8:208d965a3bd2 304 static uint16_t x_pos_counter = 1, prev_y_pos = (PRESSURE_WAVEFORM_Y0 + PRESSURE_WAVEFORM_HEIGHT - 1);
miguelangel_2511 8:208d965a3bd2 305 uint16_t x_pos, y_pos;
miguelangel_2511 8:208d965a3bd2 306 uint16_t pressure_02_scaled_value;
miguelangel_2511 8:208d965a3bd2 307
miguelangel_2511 8:208d965a3bd2 308 pressure_02_scaled_value = (uint16_t)((pressure_02_psi - 0.5)*PRESSURE_WAVEFORM_HEIGHT*2) ;
miguelangel_2511 8:208d965a3bd2 309
miguelangel_2511 8:208d965a3bd2 310 x_pos_counter++;
miguelangel_2511 8:208d965a3bd2 311
miguelangel_2511 8:208d965a3bd2 312 if(x_pos_counter >= PRESSURE_WAVEFORM_WIDTH){
miguelangel_2511 8:208d965a3bd2 313 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 314 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 315 x_pos_counter = 1;
miguelangel_2511 8:208d965a3bd2 316 }
miguelangel_2511 8:208d965a3bd2 317
miguelangel_2511 8:208d965a3bd2 318 x_pos = PRESSURE_WAVEFORM_X0 + x_pos_counter;
miguelangel_2511 8:208d965a3bd2 319 y_pos = PRESSURE_WAVEFORM_Y0 + PRESSURE_WAVEFORM_HEIGHT - pressure_02_scaled_value - 1;
miguelangel_2511 8:208d965a3bd2 320
miguelangel_2511 8:208d965a3bd2 321
miguelangel_2511 8:208d965a3bd2 322 if(y_pos <= PRESSURE_WAVEFORM_Y0){
miguelangel_2511 8:208d965a3bd2 323 y_pos = PRESSURE_WAVEFORM_Y0 + 1;
miguelangel_2511 8:208d965a3bd2 324 }
miguelangel_2511 8:208d965a3bd2 325
miguelangel_2511 8:208d965a3bd2 326 nextion_display.printf("line %d,%d,%d,%d,%d",(x_pos - 1), prev_y_pos, x_pos, y_pos, WHITE);
miguelangel_2511 8:208d965a3bd2 327 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 8:208d965a3bd2 328
miguelangel_2511 8:208d965a3bd2 329 prev_y_pos = y_pos;
miguelangel_2511 8:208d965a3bd2 330 }
miguelangel_2511 8:208d965a3bd2 331