pachas
Dependencies: mbed QEI FastPWM
Diff: nextion_interface.cpp
- Revision:
- 6:d38287621cca
- Child:
- 7:f4e248182d31
diff -r bd5fc0510e7b -r d38287621cca nextion_interface.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nextion_interface.cpp Mon Apr 20 11:39:30 2020 +0000 @@ -0,0 +1,233 @@ + +#include "mbed.h" +#include "stdint.h" +#include "project_defines.h" +#include "nextion_interface.h" +#include "encoder_interface.h" +#include "ventilator.h" +#include "stepper_motor_driver.h" + +/* Object definition */ +// For testing pusposes only +Serial pc(USBTX, USBRX); +Serial nextion_display(NEXTION_TX_PIN,NEXTION_RX_PIN); + + +/* Global variable definition */ + +uint16_t volume_setpoint_display = VOLUME_SETPOINT_VALUE_DEFAULT; +uint16_t volume_measured_display = 480; +uint8_t resp_frequency_display = RESP_FREQUENCY_VALUE_DEFAULT; +float inspiration_time_display = INSPIRATION_TIME_VALUE_DEFAULT; +float expiration_time_display = EXPIRATION_TIME_VALUE_DEFAULT; +uint8_t pressure_measured_display = 16; +uint8_t gas_input_display = AIR_INPUT; + +uint16_t selection_box_coordinates[3][4]={ + {1,1,159,159}, + {161,1,319,159}, + {321,1,478, 159} + }; + +float i_e_ratio_display_table[I_E_RATIO_INDEX_LIMIT][2]={ + {1.0,2.0}, + {1.0,2.5}, + {1.0,3.0} + }; + + +/* Function definition */ + +void Nextion_Interface_Initialize(void){ + /* Configure baud rate */ + nextion_display.baud(9600); + pc.baud(115200); + + pc.printf("PUERTO SERIAL HABILITADO\n\n\r"); + + /* Set font color */ + nextion_display.printf("t6.pco=%d", NORMAL_COLOR); + nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff); + nextion_display.printf("t7.pco=%d", NORMAL_COLOR); + nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff); + nextion_display.printf("t8.pco=%d", NORMAL_COLOR); + nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff); + + pc.printf("t6.pco=%d\n\r", NORMAL_COLOR); + pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff); + pc.printf("t7.pco=%d\n\r", NORMAL_COLOR); + pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff); + pc.printf("t8.pco=%d\n\r", NORMAL_COLOR); + pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff); + + /* Print default values */ + Volume_Setpoint_Fix(); + Resp_Frequency_Fix(); + I_E_Ratio_Fix(); + +} + + + + +void Parameter_Selection_Box_Update(void){ + + /* Remove the selection box from the previous position */ + switch(past_parameter_selection_index){ + case 0: + nextion_display.printf("t6.pco=%d", NORMAL_COLOR); + nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff); + pc.printf("t6.pco=%d", NORMAL_COLOR); + pc.printf("%c%c%c", 0xff, 0xff, 0xff); + break; + case 1: + nextion_display.printf("t7.pco=%d", NORMAL_COLOR); + nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff); + pc.printf("t7.pco=%d\n\r", NORMAL_COLOR); + pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff); + break; + case 2: + nextion_display.printf("t8.pco=%d", NORMAL_COLOR); + nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff); + pc.printf("t8.pco=%d\n\r", NORMAL_COLOR); + pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff); + break; + default: + break; + } + + + /* Draw the selection box in the new position */ + switch(parameter_selection_index){ + case 0: + nextion_display.printf("t6.pco=%d", SELECT_COLOR); + nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff); + pc.printf("t6.pco=%d", SELECT_COLOR); + pc.printf("%c%c%c", 0xff, 0xff, 0xff); + break; + case 1: + nextion_display.printf("t7.pco=%d", SELECT_COLOR); + nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff); + pc.printf("t7.pco=%d\n\r", SELECT_COLOR); + pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff); + break; + case 2: + nextion_display.printf("t8.pco=%d", SELECT_COLOR); + nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff); + pc.printf("t8.pco=%d\n\r", SELECT_COLOR); + pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff); + break; + default: + break; + } + +} + + +void Parameter_Selection_Box_Remove(void){ + + /* Remove the selection box from the current position */ + + switch(parameter_selection_index){ + case 0: + nextion_display.printf("t6.pco=%d", NORMAL_COLOR); + nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff); + pc.printf("t6.pco=%d", NORMAL_COLOR); + pc.printf("%c%c%c", 0xff, 0xff, 0xff); + break; + case 1: + nextion_display.printf("t7.pco=%d", NORMAL_COLOR); + nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff); + pc.printf("t7.pco=%d\n\r", NORMAL_COLOR); + pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff); + break; + case 2: + nextion_display.printf("t8.pco=%d", NORMAL_COLOR); + nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff); + pc.printf("t8.pco=%d\n\r", NORMAL_COLOR); + pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff); + break; + default: + break; + } + +} + + + + +void Volume_Setpoint_Display_Update(void){ + + volume_setpoint_display = VOLUME_SETPOINT_MINIMUM_VALUE + VOLUME_SETPOINT_STEP*volume_setpoint_index; + + /* Print volume value */ + nextion_display.printf("t6.txt=\"%d mL\"", volume_setpoint_display); + nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff); + pc.printf("t6.txt=\"%d mL\"\n\r", volume_setpoint_display); + pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff); +} + + +void Volume_Setpoint_Fix(void){ + + volume_setpoint = volume_setpoint_display; + stepper_parameters_update_flag = 1; + + /* Print volume value */ + nextion_display.printf("t6.txt=\"%d mL\"", volume_setpoint_display); + nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff); + pc.printf("t6.txt=\"%d mL\"\n\r", volume_setpoint_display); + pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff); +} + + +void Resp_Frequency_Display_Update(void){ + + resp_frequency_display = 10 + resp_frequency_index; + + /* Print frequency value */ + nextion_display.printf("t7.txt=\"%d RPM\"", resp_frequency_display); + nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff); + pc.printf("t7.txt=\"%d RPM\"\n\r", resp_frequency_display); + pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff); +} + + +void Resp_Frequency_Fix(void){ + + resp_frequency = resp_frequency_display; + stepper_parameters_update_flag = 1; + + /* Print frequency value */ + nextion_display.printf("t7.txt=\"%d RPM\"", resp_frequency_display); + nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff); + pc.printf("t7.txt=\"%d RPM\"\n\r", resp_frequency_display); + pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff); + +} + +void I_E_Ratio_Display_Update(void){ + + inspiration_time_display = i_e_ratio_display_table[i_e_ratio_index][0]; + expiration_time_display = i_e_ratio_display_table[i_e_ratio_index][1]; + + /* Print i:e ratio value */ + nextion_display.printf("t8.txt=\"%2.1f/%2.1f\"", inspiration_time_display, expiration_time_display); + nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff); + pc.printf("t8.txt=\"%2.1f/%2.1f\"\n\r", inspiration_time_display, expiration_time_display); + pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff); +} + + +void I_E_Ratio_Fix(void){ + + inspiration_time = inspiration_time_display; + expiration_time = expiration_time_display; + stepper_parameters_update_flag = 1; + + /* Print i:e ratio value */ + nextion_display.printf("t8.txt=\"%2.1f/%2.1f\"", inspiration_time_display, expiration_time_display); + nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff); + pc.printf("t8.txt=\"%2.1f/%2.1f\"\n\r", inspiration_time_display, expiration_time_display); + pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff); +}