cursada_mc2
Base de control de temperatura para EDU-CIAA-NXP
Loading...
Searching...
No Matches
hmi.c File Reference

HMI simple basada en FSM para LCD 16x2 y 4 teclas. More...

#include "hmi/hmi.h"
#include "drivers/buttons_driver.h"
#include "drivers/buzzer_driver.h"
#include "drivers/lcd_driver.h"
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
+ Include dependency graph for hmi.c:

Go to the source code of this file.

Data Structures

struct  hmi_param_desc_t
 
struct  hmi_ui_t
 
struct  hmi_estado_t
 

Macros

#define HMI_LCD_COLUMNAS   16U
 
#define HMI_TICK_MS   20U
 
#define HMI_BEEP_MS   20U
 
#define HMI_BEEP_TICKS   (HMI_BEEP_MS / HMI_TICK_MS)
 

Enumerations

enum  hmi_pantalla_t {
  HMI_PANTALLA_INICIO = 0 ,
  HMI_PANTALLA_MENU ,
  HMI_PANTALLA_EDICION
}
 
enum  hmi_parametro_t {
  HMI_PARAM_SETPOINT = 0 ,
  HMI_PARAM_HISTERESIS ,
  HMI_PARAM_TMIN_ON ,
  HMI_PARAM_TMIN_OFF ,
  HMI_PARAM_MODO ,
  HMI_PARAM_COUNT
}
 
enum  hmi_evento_t {
  HMI_EVENTO_NINGUNO = 0 ,
  HMI_EVENTO_MENU ,
  HMI_EVENTO_SUBIR ,
  HMI_EVENTO_BAJAR ,
  HMI_EVENTO_ACEPTAR
}
 

Functions

static void hmi_escribir_linea (uint8_t fila, const char *texto)
 
static void hmi_formatear_deci (char *salida, size_t tam_salida, int16_t valor_deci)
 
static int16_t hmi_cargar_valor_edicion_actual (void)
 
static void hmi_guardar_valor_editado (void)
 
static void hmi_dibujar_inicio (void)
 
static void hmi_dibujar_menu (void)
 
static void hmi_dibujar_edicion (void)
 
static void hmi_dibujar (void)
 
void hmi_init (void)
 Inicializa el estado interno de la HMI y dibuja la pantalla inicial.
 
void hmi_process (void)
 Procesa la navegacion de la interfaz y actualiza el LCD si es necesario.
 
void hmi_cargar_parametros_control (const parametros_control_t *parametros)
 Carga en la HMI los parametros de control vigentes.
 
void hmi_cargar_estado_proceso (const hmi_estado_proceso_t *estado)
 Carga en la HMI el estado visible actual del proceso.
 
parametros_control_t hmi_obtener_parametros_control (void)
 Obtiene todos los parametros de control actualmente cargados en la HMI.
 

Variables

static hmi_estado_t hmi_
 
static const hmi_param_desc_t hmi_param_descs_ [HMI_PARAM_COUNT]
 

Macro Definition Documentation

◆ HMI_BEEP_MS

#define HMI_BEEP_MS   20U

Definition at line 19 of file hmi.c.

◆ HMI_BEEP_TICKS

#define HMI_BEEP_TICKS   (HMI_BEEP_MS / HMI_TICK_MS)

Definition at line 20 of file hmi.c.

◆ HMI_LCD_COLUMNAS

#define HMI_LCD_COLUMNAS   16U

Definition at line 17 of file hmi.c.

◆ HMI_TICK_MS

#define HMI_TICK_MS   20U

Definition at line 18 of file hmi.c.

Enumeration Type Documentation

◆ hmi_evento_t

Enumerator
HMI_EVENTO_NINGUNO 
HMI_EVENTO_MENU 
HMI_EVENTO_SUBIR 
HMI_EVENTO_BAJAR 
HMI_EVENTO_ACEPTAR 

Definition at line 37 of file hmi.c.

◆ hmi_pantalla_t

Enumerator
HMI_PANTALLA_INICIO 
HMI_PANTALLA_MENU 
HMI_PANTALLA_EDICION 

Definition at line 22 of file hmi.c.

◆ hmi_parametro_t

Enumerator
HMI_PARAM_SETPOINT 
HMI_PARAM_HISTERESIS 
HMI_PARAM_TMIN_ON 
HMI_PARAM_TMIN_OFF 
HMI_PARAM_MODO 
HMI_PARAM_COUNT 

Definition at line 28 of file hmi.c.

Function Documentation

◆ hmi_cargar_estado_proceso()

◆ hmi_cargar_parametros_control()

void hmi_cargar_parametros_control ( const parametros_control_t parametros)
Parameters
parametrosEstructura con los parametros visibles/editables del control.

Definition at line 353 of file hmi.c.

References hmi_, hmi_ui_t::necesita_redibujado, hmi_estado_t::parametros, and hmi_estado_t::ui.

Referenced by app_init().

◆ hmi_cargar_valor_edicion_actual()

◆ hmi_dibujar()

◆ hmi_dibujar_edicion()

◆ hmi_dibujar_inicio()

◆ hmi_dibujar_menu()

static void hmi_dibujar_menu ( void  )
static

◆ hmi_escribir_linea()

static void hmi_escribir_linea ( uint8_t  fila,
const char *  texto 
)
static

◆ hmi_formatear_deci()

static void hmi_formatear_deci ( char *  salida,
size_t  tam_salida,
int16_t  valor_deci 
)
static

Definition at line 106 of file hmi.c.

Referenced by hmi_dibujar_edicion(), and hmi_dibujar_inicio().

◆ hmi_guardar_valor_editado()

◆ hmi_init()

void hmi_init ( void  )

Debe llamarse una sola vez luego de haber inicializado los drivers de hardware necesarios, en particular el LCD.

Definition at line 249 of file hmi.c.

References driver_lcd_write_char(), hmi_ui_t::editando, hmi_, hmi_dibujar(), HMI_PANTALLA_INICIO, HMI_PARAM_SETPOINT, hmi_ui_t::menu_index, hmi_ui_t::necesita_redibujado, hmi_ui_t::pantalla, hmi_ui_t::ticks_buzzer_restantes, hmi_estado_t::ui, and hmi_ui_t::valor_edicion.

Referenced by app_init().

◆ hmi_obtener_parametros_control()

parametros_control_t hmi_obtener_parametros_control ( void  )
Returns
Copia de los parametros editables actuales.

Definition at line 385 of file hmi.c.

References hmi_, and hmi_estado_t::parametros.

Referenced by app_step_20ms().

◆ hmi_process()

Variable Documentation

◆ hmi_

hmi_estado_t hmi_
static
Initial value:
= {
.parametros = {
.setpoint_deci_celsius = 270,
.histeresis_deci_celsius = 20U,
.tiempo_minimo_encendido_ms = 0U,
.tiempo_minimo_apagado_ms = 0U,
.modo_calentar = true,
},
.ui = {
.pantalla = HMI_PANTALLA_INICIO,
.menu_index = HMI_PARAM_SETPOINT,
.editando = HMI_PARAM_SETPOINT,
.valor_edicion = 0,
.necesita_redibujado = true,
.ticks_buzzer_restantes = 0U,
},
}
@ HMI_PANTALLA_INICIO
Definition hmi.c:23
@ HMI_PARAM_SETPOINT
Definition hmi.c:29

Definition at line 71 of file hmi.c.

Referenced by hmi_cargar_estado_proceso(), hmi_cargar_parametros_control(), hmi_cargar_valor_edicion_actual(), hmi_dibujar(), hmi_dibujar_edicion(), hmi_dibujar_inicio(), hmi_dibujar_menu(), hmi_guardar_valor_editado(), hmi_init(), hmi_obtener_parametros_control(), and hmi_process().

◆ hmi_param_descs_

const hmi_param_desc_t hmi_param_descs_[HMI_PARAM_COUNT]
static
Initial value:
= {
[HMI_PARAM_SETPOINT] = {.titulo = "Setpoint", .minimo = 0, .maximo = 1200, .paso = 1, .ciclico = false},
[HMI_PARAM_HISTERESIS] = {.titulo = "Histeresis", .minimo = 1, .maximo = 200, .paso = 1, .ciclico = false},
[HMI_PARAM_TMIN_ON] = {.titulo = "Tmin ON", .minimo = 0, .maximo = 6000, .paso = 1, .ciclico = false},
[HMI_PARAM_TMIN_OFF] = {.titulo = "Tmin OFF", .minimo = 0, .maximo = 6000, .paso = 1, .ciclico = false},
[HMI_PARAM_MODO] = {.titulo = "Modo", .minimo = 0, .maximo = 1, .paso = 1, .ciclico = true},
}
@ HMI_PARAM_HISTERESIS
Definition hmi.c:30
@ HMI_PARAM_MODO
Definition hmi.c:33
@ HMI_PARAM_TMIN_OFF
Definition hmi.c:32
@ HMI_PARAM_TMIN_ON
Definition hmi.c:31

Definition at line 89 of file hmi.c.

Referenced by hmi_dibujar_edicion(), hmi_dibujar_menu(), and hmi_process().