17#define HMI_LCD_COLUMNAS 16U
18#define HMI_TICK_MS 20U
19#define HMI_BEEP_MS 20U
20#define HMI_BEEP_TICKS (HMI_BEEP_MS / HMI_TICK_MS)
74 .histeresis_deci_celsius = 20U,
75 .tiempo_minimo_encendido_ms = 0U,
76 .tiempo_minimo_apagado_ms = 0U,
77 .modo_calentar =
true,
84 .necesita_redibujado =
true,
85 .ticks_buzzer_restantes = 0U,
91 [
HMI_PARAM_HISTERESIS] = {.titulo =
"Histeresis", .minimo = 1, .maximo = 200, .paso = 1, .ciclico =
false},
92 [
HMI_PARAM_TMIN_ON] = {.titulo =
"Tmin ON", .minimo = 0, .maximo = 6000, .paso = 1, .ciclico =
false},
93 [
HMI_PARAM_TMIN_OFF] = {.titulo =
"Tmin OFF", .minimo = 0, .maximo = 6000, .paso = 1, .ciclico =
false},
94 [
HMI_PARAM_MODO] = {.titulo =
"Modo", .minimo = 0, .maximo = 1, .paso = 1, .ciclico =
true},
108 const bool negativo = (valor_deci < 0);
109 const int16_t absoluto = (int16_t) abs(valor_deci);
110 const int16_t entera = (int16_t) (absoluto / 10);
111 const int16_t decimal = (int16_t) (absoluto % 10);
114 (void) snprintf(salida, tam_salida,
"-%d.%1d", entera, decimal);
116 (void) snprintf(salida, tam_salida,
"%d.%1d", entera, decimal);
164 char temp_con_unidad[8];
175 (void) snprintf(temp_con_unidad,
sizeof(temp_con_unidad),
"%sC", temp);
177 (void) snprintf(temp_con_unidad,
sizeof(temp_con_unidad),
"--.-C");
183 (void) snprintf(linea1,
sizeof(linea1),
"T:%s %s %s", temp_con_unidad, salida, modo);
184 (void) snprintf(linea2,
sizeof(linea2),
"SP:%s H:%s", sp, h);
269 }
else if (tecla ==
TECLA2) {
271 }
else if (tecla ==
TECLA3) {
273 }
else if (tecla ==
TECLA4) {
355 if (parametros == 0) {
365 const bool hubo_cambios = (estado != 0)
void buzzer_turn_off()
Desactiva el buzzer.
void buzzer_turn_on()
Activa el buzzer.
Interfaz del driver de buzzer.
static void hmi_guardar_valor_editado(void)
static const hmi_param_desc_t hmi_param_descs_[HMI_PARAM_COUNT]
static void hmi_dibujar_menu(void)
static void hmi_escribir_linea(uint8_t fila, const char *texto)
static void hmi_dibujar(void)
void hmi_init(void)
Inicializa el estado interno de la HMI y dibuja la pantalla inicial.
static int16_t hmi_cargar_valor_edicion_actual(void)
static void hmi_formatear_deci(char *salida, size_t tam_salida, int16_t valor_deci)
parametros_control_t hmi_obtener_parametros_control(void)
Obtiene todos los parametros de control actualmente cargados en la HMI.
void hmi_process(void)
Procesa la navegacion de la interfaz y actualiza el LCD si es necesario.
static void hmi_dibujar_edicion(void)
void hmi_cargar_parametros_control(const parametros_control_t *parametros)
Carga en la HMI los parametros de control vigentes.
static void hmi_dibujar_inicio(void)
void hmi_cargar_estado_proceso(const hmi_estado_proceso_t *estado)
Carga en la HMI el estado visible actual del proceso.
Interfaz publica de la HMI.
void driver_lcd_write_char(char C)
Escribe un caracter en la posicion actual del LCD.
void driver_lcd_set_position(uint8_t x, uint8_t y)
Posiciona el cursor dentro de la matriz visible del LCD.
void driver_lcd_printf(const char *string)
Escribe una cadena a partir de la posicion actual del cursor.
Interfaz del driver para LCD alfanumerico.
int16_t temperatura_deci_celsius
parametros_control_t parametros
int16_t temperatura_deci_celsius
uint8_t ticks_buzzer_restantes
hmi_parametro_t menu_index
uint32_t tiempo_minimo_apagado_ms
uint16_t histeresis_deci_celsius
uint32_t tiempo_minimo_encendido_ms
int16_t setpoint_deci_celsius