pachas

Dependencies:   mbed QEI FastPWM

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);
+}