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

Dependencies:   mbed QEI FastPWM

Committer:
miguelangel_2511
Date:
Mon Apr 20 21:58:36 2020 +0000
Revision:
7:f4e248182d31
Parent:
6:d38287621cca
Child:
8:208d965a3bd2
Se agregaron sensores de presion, cuyos valores medidos son mostrados en la pantalla.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
miguelangel_2511 0:9d0b9785d3d6 1
miguelangel_2511 0:9d0b9785d3d6 2 /* File inclusion */
miguelangel_2511 0:9d0b9785d3d6 3 #include "mbed.h"
miguelangel_2511 0:9d0b9785d3d6 4 #include "stdint.h"
miguelangel_2511 0:9d0b9785d3d6 5 #include "QEI.h"
miguelangel_2511 0:9d0b9785d3d6 6 #include "project_defines.h"
miguelangel_2511 0:9d0b9785d3d6 7 #include "buttons.h"
miguelangel_2511 0:9d0b9785d3d6 8 #include "encoder_interface.h"
miguelangel_2511 6:d38287621cca 9 #include "nextion_interface.h"
miguelangel_2511 7:f4e248182d31 10 #include "pressure_sensors.h"
miguelangel_2511 0:9d0b9785d3d6 11 #include "ventilator.h"
miguelangel_2511 0:9d0b9785d3d6 12
miguelangel_2511 0:9d0b9785d3d6 13
miguelangel_2511 2:6f618b905d4f 14 /* Global variable definition */
miguelangel_2511 7:f4e248182d31 15
miguelangel_2511 7:f4e248182d31 16 volatile uint8_t read_pressure_sensors_flag;
miguelangel_2511 7:f4e248182d31 17 volatile uint8_t pressure_sensor_display_update_flag;
miguelangel_2511 7:f4e248182d31 18 volatile uint8_t pressure_sensor_waveform_update_flag;
miguelangel_2511 7:f4e248182d31 19
miguelangel_2511 2:6f618b905d4f 20 uint16_t volume_setpoint = VOLUME_SETPOINT_VALUE_DEFAULT;
miguelangel_2511 2:6f618b905d4f 21 uint16_t volume_measured = 480;
miguelangel_2511 2:6f618b905d4f 22 uint8_t resp_frequency = RESP_FREQUENCY_VALUE_DEFAULT;
miguelangel_2511 2:6f618b905d4f 23 float inspiration_time = INSPIRATION_TIME_VALUE_DEFAULT;
miguelangel_2511 2:6f618b905d4f 24 float expiration_time = EXPIRATION_TIME_VALUE_DEFAULT;
miguelangel_2511 2:6f618b905d4f 25 uint8_t pressure_measured = 16;
miguelangel_2511 2:6f618b905d4f 26 uint8_t gas_input = AIR_INPUT;
miguelangel_2511 0:9d0b9785d3d6 27
miguelangel_2511 2:6f618b905d4f 28
miguelangel_2511 1:aa5df1878126 29 Main_Screen_State_t main_screen_state = MAIN_SCREEN_DEFAULT_STATE;
miguelangel_2511 0:9d0b9785d3d6 30 uint8_t first_time_in_state = 1;
miguelangel_2511 0:9d0b9785d3d6 31
miguelangel_2511 0:9d0b9785d3d6 32 /* Function definition */
miguelangel_2511 6:d38287621cca 33 void Nextion_Encoder_Interaction(void){
miguelangel_2511 0:9d0b9785d3d6 34
miguelangel_2511 1:aa5df1878126 35 switch(main_screen_state){
miguelangel_2511 0:9d0b9785d3d6 36 case Main_Screen_Cursor_Disable:
miguelangel_2511 0:9d0b9785d3d6 37 if(Get_Button_Press(1 << ENTER_SW)){
miguelangel_2511 0:9d0b9785d3d6 38 rotary_encoder.reset();
miguelangel_2511 1:aa5df1878126 39 main_screen_state = Main_Screen_Cursor_Enable;
miguelangel_2511 0:9d0b9785d3d6 40 }
miguelangel_2511 0:9d0b9785d3d6 41
miguelangel_2511 0:9d0b9785d3d6 42 break;
miguelangel_2511 0:9d0b9785d3d6 43
miguelangel_2511 0:9d0b9785d3d6 44 case Main_Screen_Cursor_Enable:
miguelangel_2511 0:9d0b9785d3d6 45 if(first_time_in_state){
miguelangel_2511 0:9d0b9785d3d6 46 first_time_in_state = 0;
miguelangel_2511 0:9d0b9785d3d6 47 Parameter_Selection_Box_Update();
miguelangel_2511 0:9d0b9785d3d6 48 }else if(parameter_selection_index_change_flag){
miguelangel_2511 0:9d0b9785d3d6 49 parameter_selection_index_change_flag = 0;
miguelangel_2511 0:9d0b9785d3d6 50 Parameter_Selection_Box_Update();
miguelangel_2511 0:9d0b9785d3d6 51 }else{
miguelangel_2511 0:9d0b9785d3d6 52 //Does nothing
miguelangel_2511 0:9d0b9785d3d6 53 }
miguelangel_2511 0:9d0b9785d3d6 54
miguelangel_2511 0:9d0b9785d3d6 55 if(Get_Button_Press(1 << ENTER_SW)){
miguelangel_2511 1:aa5df1878126 56 main_screen_state = (Main_Screen_State_t)(2 + parameter_selection_index);
miguelangel_2511 0:9d0b9785d3d6 57 first_time_in_state = 1;
miguelangel_2511 0:9d0b9785d3d6 58 }
miguelangel_2511 0:9d0b9785d3d6 59
miguelangel_2511 0:9d0b9785d3d6 60 break;
miguelangel_2511 0:9d0b9785d3d6 61
miguelangel_2511 0:9d0b9785d3d6 62
miguelangel_2511 0:9d0b9785d3d6 63 case Main_Screen_Volume_Setpoint_Adjust:
miguelangel_2511 0:9d0b9785d3d6 64 if(first_time_in_state){
miguelangel_2511 0:9d0b9785d3d6 65 first_time_in_state = 0;
miguelangel_2511 6:d38287621cca 66 nextion_display.printf("t6.pco=%d", ADJUST_COLOR); // Change font color
miguelangel_2511 6:d38287621cca 67 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 7:f4e248182d31 68 // pc.printf("t6.pco=%d\n\r", ADJUST_COLOR); // Change font color
miguelangel_2511 7:f4e248182d31 69 // pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff);
miguelangel_2511 0:9d0b9785d3d6 70 Volume_Setpoint_Display_Update();
miguelangel_2511 0:9d0b9785d3d6 71 }else if(volume_setpoint_index_change_flag){
miguelangel_2511 0:9d0b9785d3d6 72 volume_setpoint_index_change_flag = 0;
miguelangel_2511 0:9d0b9785d3d6 73 Volume_Setpoint_Display_Update();
miguelangel_2511 0:9d0b9785d3d6 74 }else{
miguelangel_2511 0:9d0b9785d3d6 75 //Does nothing
miguelangel_2511 0:9d0b9785d3d6 76 }
miguelangel_2511 0:9d0b9785d3d6 77
miguelangel_2511 0:9d0b9785d3d6 78 if(Get_Button_Press(1 << ENTER_SW)){
miguelangel_2511 1:aa5df1878126 79 main_screen_state = Main_Screen_Cursor_Disable;
miguelangel_2511 0:9d0b9785d3d6 80 first_time_in_state = 1;
miguelangel_2511 0:9d0b9785d3d6 81 Volume_Setpoint_Fix();
miguelangel_2511 0:9d0b9785d3d6 82 Parameter_Selection_Box_Remove();
miguelangel_2511 0:9d0b9785d3d6 83 }
miguelangel_2511 0:9d0b9785d3d6 84
miguelangel_2511 0:9d0b9785d3d6 85 break;
miguelangel_2511 0:9d0b9785d3d6 86
miguelangel_2511 0:9d0b9785d3d6 87 case Main_Screen_Resp_Frequency_Adjust:
miguelangel_2511 0:9d0b9785d3d6 88 if(first_time_in_state){
miguelangel_2511 0:9d0b9785d3d6 89 first_time_in_state = 0;
miguelangel_2511 6:d38287621cca 90 nextion_display.printf("t7.pco=%d", ADJUST_COLOR); // Change font color
miguelangel_2511 6:d38287621cca 91 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 7:f4e248182d31 92 // pc.printf("t7.pco=%d\n\r", ADJUST_COLOR); // Change font color
miguelangel_2511 7:f4e248182d31 93 // pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff);
miguelangel_2511 0:9d0b9785d3d6 94 Resp_Frequency_Display_Update();
miguelangel_2511 0:9d0b9785d3d6 95 }else if(resp_frequency_index_change_flag){
miguelangel_2511 0:9d0b9785d3d6 96 resp_frequency_index_change_flag = 0;
miguelangel_2511 0:9d0b9785d3d6 97 Resp_Frequency_Display_Update();
miguelangel_2511 0:9d0b9785d3d6 98 }else{
miguelangel_2511 0:9d0b9785d3d6 99 //Does nothing
miguelangel_2511 0:9d0b9785d3d6 100 }
miguelangel_2511 0:9d0b9785d3d6 101
miguelangel_2511 0:9d0b9785d3d6 102 if(Get_Button_Press(1 << ENTER_SW)){
miguelangel_2511 1:aa5df1878126 103 main_screen_state = Main_Screen_Cursor_Disable;
miguelangel_2511 0:9d0b9785d3d6 104 first_time_in_state = 1;
miguelangel_2511 0:9d0b9785d3d6 105 Resp_Frequency_Fix();
miguelangel_2511 6:d38287621cca 106 Parameter_Selection_Box_Remove();
miguelangel_2511 0:9d0b9785d3d6 107 }
miguelangel_2511 0:9d0b9785d3d6 108
miguelangel_2511 0:9d0b9785d3d6 109 break;
miguelangel_2511 0:9d0b9785d3d6 110
miguelangel_2511 0:9d0b9785d3d6 111
miguelangel_2511 0:9d0b9785d3d6 112 case Main_Screen_I_E_Ratio_Adjust:
miguelangel_2511 0:9d0b9785d3d6 113 if(first_time_in_state){
miguelangel_2511 0:9d0b9785d3d6 114 first_time_in_state = 0;
miguelangel_2511 6:d38287621cca 115 nextion_display.printf("t8.pco=%d", ADJUST_COLOR); // Change font color
miguelangel_2511 6:d38287621cca 116 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 7:f4e248182d31 117 //pc.printf("t8.pco=%d\n\r", ADJUST_COLOR); // Change font color
miguelangel_2511 7:f4e248182d31 118 // pc.printf("%c%c%c\n\r", 0xff, 0xff, 0xff);
miguelangel_2511 0:9d0b9785d3d6 119 I_E_Ratio_Display_Update();
miguelangel_2511 0:9d0b9785d3d6 120 }else if(i_e_ratio_index_change_flag){
miguelangel_2511 0:9d0b9785d3d6 121 i_e_ratio_index_change_flag = 0;
miguelangel_2511 0:9d0b9785d3d6 122 I_E_Ratio_Display_Update();
miguelangel_2511 0:9d0b9785d3d6 123 }else{
miguelangel_2511 0:9d0b9785d3d6 124 //Does nothing
miguelangel_2511 0:9d0b9785d3d6 125 }
miguelangel_2511 0:9d0b9785d3d6 126
miguelangel_2511 0:9d0b9785d3d6 127 if(Get_Button_Press(1 << ENTER_SW)){
miguelangel_2511 1:aa5df1878126 128 main_screen_state = Main_Screen_Cursor_Disable;
miguelangel_2511 0:9d0b9785d3d6 129 first_time_in_state = 1;
miguelangel_2511 0:9d0b9785d3d6 130 I_E_Ratio_Fix();
miguelangel_2511 0:9d0b9785d3d6 131 Parameter_Selection_Box_Remove();
miguelangel_2511 0:9d0b9785d3d6 132 }
miguelangel_2511 0:9d0b9785d3d6 133
miguelangel_2511 0:9d0b9785d3d6 134 break;
miguelangel_2511 0:9d0b9785d3d6 135
miguelangel_2511 0:9d0b9785d3d6 136 default:
miguelangel_2511 0:9d0b9785d3d6 137 break;
miguelangel_2511 0:9d0b9785d3d6 138
miguelangel_2511 6:d38287621cca 139 }
miguelangel_2511 7:f4e248182d31 140 }
miguelangel_2511 7:f4e248182d31 141
miguelangel_2511 7:f4e248182d31 142
miguelangel_2511 7:f4e248182d31 143 void Nextion_Update_Sensor_Values(void){
miguelangel_2511 7:f4e248182d31 144
miguelangel_2511 7:f4e248182d31 145 static float previous_pressure_01_psi = 0, previous_pressure_02_psi = 0;
miguelangel_2511 7:f4e248182d31 146 static float previous_diff_pressure_psi = 0;
miguelangel_2511 7:f4e248182d31 147 float delta;
miguelangel_2511 7:f4e248182d31 148
miguelangel_2511 7:f4e248182d31 149 /* Check if anu value has change in a meningful way */
miguelangel_2511 7:f4e248182d31 150 delta = pressure_01_psi - previous_pressure_01_psi;
miguelangel_2511 7:f4e248182d31 151 if((delta > PRESSURE_DISPLAY_THRESHOLD) || (delta < -PRESSURE_DISPLAY_THRESHOLD)){
miguelangel_2511 7:f4e248182d31 152 Pressure_01_Display_Update();
miguelangel_2511 7:f4e248182d31 153 }
miguelangel_2511 7:f4e248182d31 154
miguelangel_2511 7:f4e248182d31 155 delta = pressure_02_psi - previous_pressure_02_psi;
miguelangel_2511 7:f4e248182d31 156 if((delta > PRESSURE_DISPLAY_THRESHOLD) || (delta < -PRESSURE_DISPLAY_THRESHOLD)){
miguelangel_2511 7:f4e248182d31 157 Pressure_02_Display_Update();
miguelangel_2511 7:f4e248182d31 158 }
miguelangel_2511 7:f4e248182d31 159
miguelangel_2511 7:f4e248182d31 160 delta = diff_pressure_psi - previous_diff_pressure_psi;
miguelangel_2511 7:f4e248182d31 161 if((delta > PRESSURE_DISPLAY_THRESHOLD) || (delta < -PRESSURE_DISPLAY_THRESHOLD)){
miguelangel_2511 7:f4e248182d31 162 Diff_Pressure_Display_Update();
miguelangel_2511 7:f4e248182d31 163 }
miguelangel_2511 7:f4e248182d31 164
miguelangel_2511 7:f4e248182d31 165
miguelangel_2511 7:f4e248182d31 166 /* Update the previous values */
miguelangel_2511 7:f4e248182d31 167 previous_pressure_01_psi = pressure_01_psi;
miguelangel_2511 7:f4e248182d31 168 previous_pressure_02_psi = pressure_02_psi;
miguelangel_2511 7:f4e248182d31 169 previous_diff_pressure_psi = diff_pressure_psi;
miguelangel_2511 7:f4e248182d31 170
miguelangel_2511 7:f4e248182d31 171 }
miguelangel_2511 7:f4e248182d31 172
miguelangel_2511 7:f4e248182d31 173
miguelangel_2511 7:f4e248182d31 174 void Nextion_Update_Waveform_Values(void){
miguelangel_2511 7:f4e248182d31 175
miguelangel_2511 7:f4e248182d31 176 uint8_t pressure_graph_val;
miguelangel_2511 7:f4e248182d31 177
miguelangel_2511 7:f4e248182d31 178 /* Plot pressure 01 in a 0 to 1 PSI scale */
miguelangel_2511 7:f4e248182d31 179 pressure_graph_val = (uint8_t)(pressure_01_psi * 128);
miguelangel_2511 7:f4e248182d31 180 nextion_display.printf("add 10,0,%d", pressure_graph_val);
miguelangel_2511 7:f4e248182d31 181 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 7:f4e248182d31 182
miguelangel_2511 7:f4e248182d31 183 /* Plot pressure 02 in a 0 to 1 PSI scale */
miguelangel_2511 7:f4e248182d31 184 pressure_graph_val = (uint8_t)(pressure_02_psi * 128);
miguelangel_2511 7:f4e248182d31 185 nextion_display.printf("add 11,0,%d", pressure_graph_val);
miguelangel_2511 7:f4e248182d31 186 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 7:f4e248182d31 187
miguelangel_2511 7:f4e248182d31 188 /* Plot differential pressure in a -1 PSI to 1 PSI scale */
miguelangel_2511 7:f4e248182d31 189 pressure_graph_val = 64 + (uint8_t)(diff_pressure_psi * 64);
miguelangel_2511 7:f4e248182d31 190 nextion_display.printf("add 1,0,%d", pressure_graph_val);
miguelangel_2511 7:f4e248182d31 191 nextion_display.printf("%c%c%c", 0xff, 0xff, 0xff);
miguelangel_2511 7:f4e248182d31 192
miguelangel_2511 7:f4e248182d31 193 }
miguelangel_2511 7:f4e248182d31 194
miguelangel_2511 7:f4e248182d31 195