Pantalla Touch NEXTION HMI «gráfica», Pic C Compiler
Por
/
Programar una interfaz gráfica en una pantalla touch HMI NEXTION, para enviar datos del microcontrolador PIC por una comunicación UART. El objetivo graficar señales analógicas en la pantalla Nextión y modificar la amplitud de las señales en la gráfica.
¿Qué es Nextion?
Nextion es una solución de interfaz hombre-máquina (HMI) que combina un procesador integrado y una pantalla táctil con memoria con el software Nextion Editor para el desarrollo de proyectos de GUI HMI.
Con el software Nextion Editor, puede desarrollar rápidamente la GUI de HMI arrastrando y soltando componentes (gráficos, texto, botón, control deslizante, etc.) e instrucciones basadas en texto ASCII para codificar cómo interactúan los componentes en el lado de la pantalla.
La pantalla HMI de Nextion se conecta a la MCU periférica a través de TTL Serial (5V, TX, RX, GND) para proporcionar notificaciones de eventos en las que la MCU periférica puede actuar, la MCU periférica puede actualizar fácilmente el progreso y el estado de regreso a la pantalla Nextion utilizando un simple ASCII basado en texto. instrucciones.
Circuito completo
Procedimiento
Inicialmente se establecen los parámetros de la comunicación RS232.
Para enviar datos a la pantalla Nextion, en este caso se envía el valor del ADC del pin «AN0» y del PIN «AN1» conectados a los sensores.
Para enviar un dato a la gráfica se utiliza la función «printf», donde se debe colocar:
printf("add idwaveform,canal,%u",variable);
Después de enviar el comando y el valor, se deben de enviar 3 números (0xFF) para que la pantalla Nextion identifique el fin del envió de datos.
putc(0xFF); //fin de recepcion de datos en pantalla nextion
putc(0xFF); //
putc(0xFF); //
Para la grafica se envía el valor int8 del pin «AN0» y el pin «AN1», el valor máximo que se puede enviar es de 255, por lo que en le archivo.h del proyecto se debe definir un ADC de 8 bits.
#device ADC=8
Para visualizar la señal del canal 0 en la gráfica se envía el comando correspondiente y el valor del pin AN0
printf("add 1,0,%u",pot1); //add idwaveform,canal,valor
putc(0xFF); //datos para recepcion en pantalla nextion
putc(0xFF); //
putc(0xFF); //
Para visualizar la señal del canal 1 en la gráfica se envía el comando correspondiente y el valor del pin AN1
printf("add 1,1,%u",pot2); //add idwaveform,canal,valor
putc(0xFF); //datos para recepcion en pantalla nextion
putc(0xFF); //
putc(0xFF); //
En la función «main()» se envía el valor de cada señal con un desfase de 10 milisegundos.
canal_0();
delay_ms(10);
canal_1();
delay_ms(10);
Código completo
#FUSES NOMCLR
#use rs232(baud=9600, stop=1, parity=N, xmit=PIN_C6, rcv=PIN_C7, bits=8)
void canal_0()
{
int8 pot1;
set_adc_channel (0);//Lectura Vout del potenciometro en PIN AN0
delay_us(10);
pot1 = read_adc();// lectura del valor
printf("add 1,0,%u",pot1); //add idwaveform,canal,valor
putc(0xFF); //datos para recepcion en pantalla nextion
putc(0xFF); //
putc(0xFF); //
}
void canal_1()
{
int8 pot2;
set_adc_channel (1);//Lectura Vout del potenciometro en PIN AN1
delay_us(10);
pot2 = read_adc();// lectura del valor
printf("add 1,1,%u",pot2); //add idwaveform,canal,valor
putc(0xFF); //datos para recepcion en pantalla nextion
putc(0xFF); //
putc(0xFF); //
}
void main()
{
setup_adc(ADC_CLOCK_INTERNAL);
while(TRUE)
{
canal_0();
delay_ms(10);
canal_1();
delay_ms(10);
}
}