para el ventilador

Dependencies:   QEI FastPWM

Committer:
miguelangel_2511
Date:
Mon Apr 20 11:39:30 2020 +0000
Revision:
6:d38287621cca
Child:
7:f4e248182d31
La pantalla TFT fue reemplazada por una pantalla Nextion que se comunica por el puerto serial (UART). El control de la pantalla sigue realizandose a traves de un encoder.

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 6:d38287621cca 7 #include "ventilator.h"
miguelangel_2511 6:d38287621cca 8 #include "stepper_motor_driver.h"
miguelangel_2511 6:d38287621cca 9
miguelangel_2511 6:d38287621cca 10 /* Object definition */
miguelangel_2511 6:d38287621cca 11 // For testing pusposes only
miguelangel_2511 6:d38287621cca 12 Serial pc(USBTX, USBRX);
miguelangel_2511 6:d38287621cca 13 Serial nextion_display(NEXTION_TX_PIN,NEXTION_RX_PIN);
miguelangel_2511 6:d38287621cca 14
miguelangel_2511 6:d38287621cca 15
miguelangel_2511 6:d38287621cca 16 /* Global variable definition */
miguelangel_2511 6:d38287621cca 17
miguelangel_2511 6:d38287621cca 18 uint16_t volume_setpoint_display = VOLUME_SETPOINT_VALUE_DEFAULT;
miguelangel_2511 6:d38287621cca 19 uint16_t volume_measured_display = 480;
miguelangel_2511 6:d38287621cca 20 uint8_t resp_frequency_display = RESP_FREQUENCY_VALUE_DEFAULT;
miguelangel_2511 6:d38287621cca 21 float inspiration_time_display = INSPIRATION_TIME_VALUE_DEFAULT;
miguelangel_2511 6:d38287621cca 22 float expiration_time_display = EXPIRATION_TIME_VALUE_DEFAULT;
miguelangel_2511 6:d38287621cca 23 uint8_t pressure_measured_display = 16;
miguelangel_2511 6:d38287621cca 24 uint8_t gas_input_display = AIR_INPUT;
miguelangel_2511 6:d38287621cca 25
miguelangel_2511 6:d38287621cca 26 uint16_t selection_box_coordinates[3][4]={
miguelangel_2511 6:d38287621cca 27 {1,1,159,159},
miguelangel_2511 6:d38287621cca 28 {161,1,319,159},
miguelangel_2511 6:d38287621cca 29 {321,1,478, 159}
miguelangel_2511 6:d38287621cca 30 };
miguelangel_2511 6:d38287621cca 31
miguelangel_2511 6:d38287621cca 32 float i_e_ratio_display_table[I_E_RATIO_INDEX_LIMIT][2]={
miguelangel_2511 6:d38287621cca 33 {1.0,2.0},
miguelangel_2511 6:d38287621cca 34 {1.0,2.5},
miguelangel_2511 6:d38287621cca 35 {1.0,3.0}
miguelangel_2511 6:d38287621cca 36 };
miguelangel_2511 6:d38287621cca 37
miguelangel_2511 6:d38287621cca 38
miguelangel_2511 6:d38287621cca 39 /* Function definition */
miguelangel_2511 6:d38287621cca 40
miguelangel_2511 6:d38287621cca 41 void Nextion_Interface_Initialize(void){
miguelangel_2511 6:d38287621cca 42 /* Configure baud rate */
miguelangel_2511 6:d38287621cca 43 nextion_display.baud(9600);
miguelangel_2511 6:d38287621cca 44 pc.baud(115200);
miguelangel_2511 6:d38287621cca 45
miguelangel_2511 6:d38287621cca 46 pc.printf("PUERTO SERIAL HABILITADO\n\n\r");
miguelangel_2511 6:d38287621cca 47
miguelangel_2511 6:d38287621cca 48 /* Set font color */
miguelangel_2511 6:d38287621cca 49 nextion_display.printf("t6.pco=%d", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 50 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 51 nextion_display.printf("t7.pco=%d", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 52 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 53 nextion_display.printf("t8.pco=%d", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 54 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 55
miguelangel_2511 6:d38287621cca 56 pc.printf("t6.pco=%d\n\r", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 57 pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 58 pc.printf("t7.pco=%d\n\r", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 59 pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 60 pc.printf("t8.pco=%d\n\r", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 61 pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 62
miguelangel_2511 6:d38287621cca 63 /* Print default values */
miguelangel_2511 6:d38287621cca 64 Volume_Setpoint_Fix();
miguelangel_2511 6:d38287621cca 65 Resp_Frequency_Fix();
miguelangel_2511 6:d38287621cca 66 I_E_Ratio_Fix();
miguelangel_2511 6:d38287621cca 67
miguelangel_2511 6:d38287621cca 68 }
miguelangel_2511 6:d38287621cca 69
miguelangel_2511 6:d38287621cca 70
miguelangel_2511 6:d38287621cca 71
miguelangel_2511 6:d38287621cca 72
miguelangel_2511 6:d38287621cca 73 void Parameter_Selection_Box_Update(void){
miguelangel_2511 6:d38287621cca 74
miguelangel_2511 6:d38287621cca 75 /* Remove the selection box from the previous position */
miguelangel_2511 6:d38287621cca 76 switch(past_parameter_selection_index){
miguelangel_2511 6:d38287621cca 77 case 0:
miguelangel_2511 6:d38287621cca 78 nextion_display.printf("t6.pco=%d", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 79 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 80 pc.printf("t6.pco=%d", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 81 pc.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 82 break;
miguelangel_2511 6:d38287621cca 83 case 1:
miguelangel_2511 6:d38287621cca 84 nextion_display.printf("t7.pco=%d", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 85 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 86 pc.printf("t7.pco=%d\n\r", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 87 pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 88 break;
miguelangel_2511 6:d38287621cca 89 case 2:
miguelangel_2511 6:d38287621cca 90 nextion_display.printf("t8.pco=%d", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 91 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 92 pc.printf("t8.pco=%d\n\r", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 93 pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 94 break;
miguelangel_2511 6:d38287621cca 95 default:
miguelangel_2511 6:d38287621cca 96 break;
miguelangel_2511 6:d38287621cca 97 }
miguelangel_2511 6:d38287621cca 98
miguelangel_2511 6:d38287621cca 99
miguelangel_2511 6:d38287621cca 100 /* Draw the selection box in the new position */
miguelangel_2511 6:d38287621cca 101 switch(parameter_selection_index){
miguelangel_2511 6:d38287621cca 102 case 0:
miguelangel_2511 6:d38287621cca 103 nextion_display.printf("t6.pco=%d", SELECT_COLOR);
miguelangel_2511 6:d38287621cca 104 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 105 pc.printf("t6.pco=%d", SELECT_COLOR);
miguelangel_2511 6:d38287621cca 106 pc.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 107 break;
miguelangel_2511 6:d38287621cca 108 case 1:
miguelangel_2511 6:d38287621cca 109 nextion_display.printf("t7.pco=%d", SELECT_COLOR);
miguelangel_2511 6:d38287621cca 110 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 111 pc.printf("t7.pco=%d\n\r", SELECT_COLOR);
miguelangel_2511 6:d38287621cca 112 pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 113 break;
miguelangel_2511 6:d38287621cca 114 case 2:
miguelangel_2511 6:d38287621cca 115 nextion_display.printf("t8.pco=%d", SELECT_COLOR);
miguelangel_2511 6:d38287621cca 116 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 117 pc.printf("t8.pco=%d\n\r", SELECT_COLOR);
miguelangel_2511 6:d38287621cca 118 pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 119 break;
miguelangel_2511 6:d38287621cca 120 default:
miguelangel_2511 6:d38287621cca 121 break;
miguelangel_2511 6:d38287621cca 122 }
miguelangel_2511 6:d38287621cca 123
miguelangel_2511 6:d38287621cca 124 }
miguelangel_2511 6:d38287621cca 125
miguelangel_2511 6:d38287621cca 126
miguelangel_2511 6:d38287621cca 127 void Parameter_Selection_Box_Remove(void){
miguelangel_2511 6:d38287621cca 128
miguelangel_2511 6:d38287621cca 129 /* Remove the selection box from the current position */
miguelangel_2511 6:d38287621cca 130
miguelangel_2511 6:d38287621cca 131 switch(parameter_selection_index){
miguelangel_2511 6:d38287621cca 132 case 0:
miguelangel_2511 6:d38287621cca 133 nextion_display.printf("t6.pco=%d", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 134 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 135 pc.printf("t6.pco=%d", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 136 pc.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 137 break;
miguelangel_2511 6:d38287621cca 138 case 1:
miguelangel_2511 6:d38287621cca 139 nextion_display.printf("t7.pco=%d", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 140 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 141 pc.printf("t7.pco=%d\n\r", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 142 pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 143 break;
miguelangel_2511 6:d38287621cca 144 case 2:
miguelangel_2511 6:d38287621cca 145 nextion_display.printf("t8.pco=%d", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 146 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 147 pc.printf("t8.pco=%d\n\r", NORMAL_COLOR);
miguelangel_2511 6:d38287621cca 148 pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 149 break;
miguelangel_2511 6:d38287621cca 150 default:
miguelangel_2511 6:d38287621cca 151 break;
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
miguelangel_2511 6:d38287621cca 157
miguelangel_2511 6:d38287621cca 158
miguelangel_2511 6:d38287621cca 159 void Volume_Setpoint_Display_Update(void){
miguelangel_2511 6:d38287621cca 160
miguelangel_2511 6:d38287621cca 161 volume_setpoint_display = VOLUME_SETPOINT_MINIMUM_VALUE + VOLUME_SETPOINT_STEP*volume_setpoint_index;
miguelangel_2511 6:d38287621cca 162
miguelangel_2511 6:d38287621cca 163 /* Print volume value */
miguelangel_2511 6:d38287621cca 164 nextion_display.printf("t6.txt=\"%d mL\"", volume_setpoint_display);
miguelangel_2511 6:d38287621cca 165 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 166 pc.printf("t6.txt=\"%d mL\"\n\r", volume_setpoint_display);
miguelangel_2511 6:d38287621cca 167 pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 168 }
miguelangel_2511 6:d38287621cca 169
miguelangel_2511 6:d38287621cca 170
miguelangel_2511 6:d38287621cca 171 void Volume_Setpoint_Fix(void){
miguelangel_2511 6:d38287621cca 172
miguelangel_2511 6:d38287621cca 173 volume_setpoint = volume_setpoint_display;
miguelangel_2511 6:d38287621cca 174 stepper_parameters_update_flag = 1;
miguelangel_2511 6:d38287621cca 175
miguelangel_2511 6:d38287621cca 176 /* Print volume value */
miguelangel_2511 6:d38287621cca 177 nextion_display.printf("t6.txt=\"%d mL\"", volume_setpoint_display);
miguelangel_2511 6:d38287621cca 178 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 179 pc.printf("t6.txt=\"%d mL\"\n\r", volume_setpoint_display);
miguelangel_2511 6:d38287621cca 180 pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 181 }
miguelangel_2511 6:d38287621cca 182
miguelangel_2511 6:d38287621cca 183
miguelangel_2511 6:d38287621cca 184 void Resp_Frequency_Display_Update(void){
miguelangel_2511 6:d38287621cca 185
miguelangel_2511 6:d38287621cca 186 resp_frequency_display = 10 + resp_frequency_index;
miguelangel_2511 6:d38287621cca 187
miguelangel_2511 6:d38287621cca 188 /* Print frequency value */
miguelangel_2511 6:d38287621cca 189 nextion_display.printf("t7.txt=\"%d RPM\"", resp_frequency_display);
miguelangel_2511 6:d38287621cca 190 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 191 pc.printf("t7.txt=\"%d RPM\"\n\r", resp_frequency_display);
miguelangel_2511 6:d38287621cca 192 pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 193 }
miguelangel_2511 6:d38287621cca 194
miguelangel_2511 6:d38287621cca 195
miguelangel_2511 6:d38287621cca 196 void Resp_Frequency_Fix(void){
miguelangel_2511 6:d38287621cca 197
miguelangel_2511 6:d38287621cca 198 resp_frequency = resp_frequency_display;
miguelangel_2511 6:d38287621cca 199 stepper_parameters_update_flag = 1;
miguelangel_2511 6:d38287621cca 200
miguelangel_2511 6:d38287621cca 201 /* Print frequency value */
miguelangel_2511 6:d38287621cca 202 nextion_display.printf("t7.txt=\"%d RPM\"", resp_frequency_display);
miguelangel_2511 6:d38287621cca 203 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 204 pc.printf("t7.txt=\"%d RPM\"\n\r", resp_frequency_display);
miguelangel_2511 6:d38287621cca 205 pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 206
miguelangel_2511 6:d38287621cca 207 }
miguelangel_2511 6:d38287621cca 208
miguelangel_2511 6:d38287621cca 209 void I_E_Ratio_Display_Update(void){
miguelangel_2511 6:d38287621cca 210
miguelangel_2511 6:d38287621cca 211 inspiration_time_display = i_e_ratio_display_table[i_e_ratio_index][0];
miguelangel_2511 6:d38287621cca 212 expiration_time_display = i_e_ratio_display_table[i_e_ratio_index][1];
miguelangel_2511 6:d38287621cca 213
miguelangel_2511 6:d38287621cca 214 /* Print i:e ratio value */
miguelangel_2511 6:d38287621cca 215 nextion_display.printf("t8.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 pc.printf("t8.txt=\"%2.1f/%2.1f\"\n\r", inspiration_time_display, expiration_time_display);
miguelangel_2511 6:d38287621cca 218 pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 219 }
miguelangel_2511 6:d38287621cca 220
miguelangel_2511 6:d38287621cca 221
miguelangel_2511 6:d38287621cca 222 void I_E_Ratio_Fix(void){
miguelangel_2511 6:d38287621cca 223
miguelangel_2511 6:d38287621cca 224 inspiration_time = inspiration_time_display;
miguelangel_2511 6:d38287621cca 225 expiration_time = expiration_time_display;
miguelangel_2511 6:d38287621cca 226 stepper_parameters_update_flag = 1;
miguelangel_2511 6:d38287621cca 227
miguelangel_2511 6:d38287621cca 228 /* Print i:e ratio value */
miguelangel_2511 6:d38287621cca 229 nextion_display.printf("t8.txt=\"%2.1f/%2.1f\"", inspiration_time_display, expiration_time_display);
miguelangel_2511 6:d38287621cca 230 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 231 pc.printf("t8.txt=\"%2.1f/%2.1f\"\n\r", inspiration_time_display, expiration_time_display);
miguelangel_2511 6:d38287621cca 232 pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff);
miguelangel_2511 6:d38287621cca 233 }