Miguel Angel Caycho
/
Pruebas_Ventilador_Eplimin_01_Backup
para el ventilador
nextion_interface.cpp@6:d38287621cca, 2020-04-20 (annotated)
- 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?
User | Revision | Line number | New 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 | } |