FLProg + Nextion HMI. Lección 3



En lecciones anteriores ( lección 1 , lección 2 ), hablé sobre cómo dibujar la interfaz de un panel Nextion HMI y cómo controlar un panel usando Arduino. En este tutorial, le mostraré cómo resolver el problema inverso de controlar la placa Arduino utilizando el panel Nextion HMI.
En la lección, ampliaremos el proyecto de la lección anterior, agregaremos el control del ventilador, que se encenderá cuando la temperatura suba por encima del límite especificado y se apagará cuando la temperatura caiga por debajo del segundo límite. La configuración se establecerá desde el panel y se almacenará en la memoria no volátil del controlador Arduino. Además, haremos un interruptor de luz (encendido / apagado) en el panel y un botón con el que prenderemos la linterna (por ejemplo, para dar una señal a los extraterrestres).

Esquema modificado de la última lección. Linterna, luz y ventilador simularán LED.


El diseño del panel también se ha finalizado. Dos páginas agregadas. Además, se reemplazó la fuente cargada en el panel. El proyecto para el panel se encuentra en el archivo, cuyo enlace se encuentra al final del artículo. En los comentarios a la última lección, me criticaron con razón por la falta de talento de diseñador. Estoy completamente de acuerdo con esto, por lo que las nuevas páginas no tienen diseño, funcionalidad pura.
Considere las nuevas páginas.

Página de administración (“página3”, ID = 3).


Considere los elementos en la página.

  1. Solo campos de texto. Nada interesante
  2. . , . . . .

    , ( “vscope” “global”). . “Touch Press Event” .

    4 .
    page4.evtemp.txt=onV.txt

    4 , .
    page4.varN.val=0

    .
    page page4


  3. . . .

    “Touch Press Event”.

    .
    page4.varN.val=1


  4. . . .

    “Touch Press Event”.


  5. (“Dual-state button”) – .
    .

    , ( “vscope” “global”). ( “sta” “image”). “pic0” 0 “pic1” 1.

  6. (“Button”) – . .

    . , . , Arduino UART ( , ). (7 8). , , ( ). (“Touch Press Event”) .

    (“Touch Release Event”) .

    FLProg.


Ventana para editar valores (“página4”, ID = 4).

Considere lo que está incluido en él.
  1. Campo de valor editable. Parámetros del artículo.

    Leeremos el valor de este campo desde el controlador, respectivamente, lo haremos global (el atributo "vscope" se establece en "global").

  2. Botones de entrada de valor. Todos estos botones son casi idénticos y difieren en la inscripción y el código en el controlador de eventos "Touch Press Event". Cuando hace clic en uno de estos botones, el símbolo correspondiente se agrega al valor actual del campo del valor editado.
    El código en el "Evento de prensa táctil" para cada uno de los botones.
    “0”
    evtemp.txt=evtemp.txt+"0"

    “1”
    evtemp.txt=evtemp.txt+"1"

    “2”
    evtemp.txt=evtemp.txt+"2"

    “3”
    evtemp.txt=evtemp.txt+"3"

    “4”
    evtemp.txt=evtemp.txt+"4"

    “5”
    evtemp.txt=evtemp.txt+"5"

    “6”
    evtemp.txt=evtemp.txt+"6"

    “7”
    evtemp.txt=evtemp.txt+"7"

    “8”
    evtemp.txt=evtemp.txt+"8"

    “9”
    evtemp.txt=evtemp.txt+"9"

    “.”
    evtemp.txt=evtemp.txt+"."


  3. Botón para borrar el campo. Cuando se presiona, el valor del campo se elimina.
    Código en el "Evento de prensa táctil"
    evtemp.txt=""

  4. Botón para borrar el último caracter.
    Código en el "Evento de prensa táctil"
    evtemp.txt=evtemp.txt-1

    . . . .

  5. .
    , (“endPress” “ endRel”) .
    “Touch Press Event”
    page4.endPress.val=1

    “Touch Release Event”
    page4.endRel.val=1


  6. . .
    “Touch Press Event”
    page page3



Con el panel terminado, vaya al programa FLProg. También utiliza el proyecto de la última lección, ligeramente modificado. El archivo del proyecto se encuentra en el archivo, cuyo enlace se encuentra al final de la publicación.
Como en la última lección, mostraré las placas de circuitos ya hechas y contaré lo que está sucediendo en ellas.
Junta 7 - "Gestión de la linterna"



Aquí todo es simple. Bloque B46 - "Seguimiento de clics" (biblioteca de elementos, carpeta "Panel de HMI Nextion"). En su salida, corresponde al estado del botón monitoreado u otro elemento de los eventos "Touch Press Event" y "Touch Release Event" en el panel. Este valor se escribe directamente en la salida vinculada a la lámpara. El bloque se parametriza con el editor de bloques.



En el editor de bloques, seleccione el panel y luego cree una nueva página y escriba los elementos necesarios en ella. Dije cómo hacer esto en una lección anterior.



Tal imagen debería resultar.



Como la variable de presión, seleccionamos la variable en la que escribimos la unidad en el botón "Touch Press Event", y como la variable de liberación, la variable del botón "Touch Release Event".

Tablero 8 - "Control de luz".



El mismo tablero muy simple. Aquí leemos la posición del interruptor usando el bloque B47 - "Obtener parámetro" (biblioteca de elementos -> carpeta "Panel HMI Nextion" -> carpeta "Elementos"). Luego, este valor se envía directamente a la unidad de salida, conectado a la iluminación. El bloque se parametriza con el editor de bloques.



Para reducir la carga en el controlador, solicitaremos el estado del interruptor una vez por segundo.

Tablero 9 - "Fin de los parámetros de edición".
En este tablero, procesaremos el clic del botón "Finalizar" en la página de edición de parámetros.



Usando el bloque B48 - "Seguimiento de clics" (biblioteca de elementos, la carpeta "Panel Nextion HMI") determinamos el momento de presionar. En el editor de este bloque, crearemos la página 4 y la llenaremos con los elementos que nos interesan.



Y configurar el bloque.



Usando el bloque B49 - "Rtrig" (biblioteca de elementos, carpeta "Disparadores"), seleccione el borde delantero de la señal de que se presiona el botón "Finalizar" y escríbalo en la variable "Fin de edición".
También en este frente, leeremos el valor de la variable que almacena el identificador del campo editado usando el bloque B54 - "Obtener parámetro" (biblioteca de elementos -> carpeta "Panel HMI Nextion" -> carpeta "Elementos"). Bloquear configuraciones.



Ponemos el valor obtenido en la variable "Número del campo editado".
Y por el mismo impulso, leeremos directamente el nuevo valor del campo de texto usando el bloque B50 - "Obtener parámetro" (biblioteca de elementos -> carpeta "Panel HMI Nextion" -> carpeta "Elementos"). Bloquear configuraciones.



Convertimos el nuevo valor de la cadena en un número en formato Float usando el bloque B51 - "Conversión de cadena" (biblioteca de elementos, carpeta "Conversión de tipo"). Bloquear configuraciones.



Multiplicamos el número por 10 usando el bloque B52 - “MUL (*)” (biblioteca de elementos, carpeta “Matemáticas”), cambiamos el tipo a Entero usando el bloque B53 - “Convertir flotante a entero” (biblioteca de elementos, carpeta “Conversión de tipo”) y poner en la variable "Nuevo valor".

Tablero 10 - "Procesando los resultados de la edición del valor"



Usando el bloque B55 - "Comparador" (biblioteca de elementos, la carpeta "Comparación") determinamos qué campo se editó y, según el resultado, escribimos el valor de la variable "Nuevo valor" por el momento en la variable "Fin de la edición" en una de dos variables, en "Punto de ajuste para apagar el ventilador x10" o en "Punto de ajuste para encender el ventilador x10". Además, por el mismo impulso, le damos al comando del panel que vaya a la página de control usando el bloque B58 - “Ir a la página” (biblioteca de elementos, carpeta “Panel HMI Nextion” -> carpeta “Página”). Bloquear configuraciones.



Tablero 11 - "Escribir valores de configuración en el panel y EEProm"



Usando el bloque B59 - "Detector para cambiar el número" (biblioteca de elementos, carpeta "Elementos básicos"), determinamos el hecho de cambiar el valor por la variable "Fan On Setpoint x10". Se forma un impulso breve en la salida del bloque en el momento de cambiar el valor en la entrada "Valor". Mediante este pulso, el valor se escribe en la memoria no volátil del controlador. Esto se puede hacer usando el bloque B65 - "Escribir en EEPROM" (biblioteca de elementos, carpeta "EEPROM"). El bloque se configura con el editor de bloques.



Antes de escribir una variable en EEPROM, debe crearla allí. Para hacer esto, haga clic en el botón "Crear" en el editor de bloques. Se abre la ventana para crear una variable.



En él establecemos el nombre de la variable y su tipo. Después de hacer clic en el botón Listo, el bloque se adjuntará a esta variable.



Además, mediante una señal sobre el cambio de una variable, su valor se divide por una constante Float igual a 10 usando el bloque B61 - "DIV (/)" (biblioteca de elementos, la carpeta "Matemáticas"), se convierte en una cadena usando el bloque B62 - "Conversión de cadenas" (biblioteca de elementos, carpeta "conversión de tipo"), y enviado al panel en el campo correspondiente utilizando el bloque B63 - "Establecer parámetro" (biblioteca de elementos, carpeta "Panel HMI Nextion" -> carpeta "Elementos"). Configuraciones para este bloque.



La lógica de control de la variable "Fan off setting x10" es la misma, la configuración de bloque es la siguiente.

Bloque B65.



Bloque B68.



Ahora nos aseguraremos de que la configuración se lea desde la EEPROM en el momento en que se inicia el controlador. Para hacer esto, inserte una nueva placa en la parte superior del proyecto para que el circuito ubicado en él se ejecute en primer lugar. Para hacer esto, seleccione el primer plano y haga clic en el botón "Insertar una tarjeta delante de la seleccionada".



Pongamos nombre a la nueva placa "Lectura de la configuración de EEPROM". Tablero

1.



Usando el bloque Â72 - “Rtrig” (biblioteca de elementos, carpeta “Triggers”) creamos un pulso corto cuando el controlador está encendido. De acuerdo con este impulso, los valores leídos de la memoria no volátil se registran en las variables "Punto de ajuste para encender el ventilador x10" y "Punto de ajuste para apagar el ventilador x10". Esto sucede utilizando los bloques B71 y B73 - "Lectura desde EEPROM" (biblioteca de elementos, carpeta "EEPROM"). Los bloques se parametrizan con el editor de bloques.



Parámetros del bloque B71.



La variable de lectura se selecciona en EEPROM presionando el botón "Seleccionar". Se abre la ventana de selección de variables.



Parámetros del bloque B73.



Bueno, el último tablero del proyecto.

Tablero 12. “Control del ventilador”



Si la temperatura actual ha excedido el ajuste “Ventilador en el punto de ajuste x10”, esto será detectado por la unidad de comparación B69 y establecerá el disparador B70 en el estado 1, y cuando la temperatura caiga por debajo del ajuste “Punto de ajuste del ventilador x10 apagado”, será detectado por el bloque B71, que establece el activador B70 en el estado 0. El estado del activador se suministra a la unidad de salida asociada con el ventilador.

Archivo con códigos fuente de proyectos.

Video demo

Source: https://habr.com/ru/post/es392865/


All Articles