Nextion HMI, Resolviendo dudas #1.

  De todas las consultas que nos habeis realizado sobre la pantalla TFT HMI de Nextion, mas del 80% se deben a que no sois capaces de capturar y visualizar correntamente las tramas de datos de TEXTO que se envian desde arduino hacia la pantalla.

  Para realizar un simulacion del problema que teneis, vamos a hacer un pequeño proyecto que simula en envio de dos tramas de datos desde el arduino hacia la pantalla de nextion. Una trama enviara un valor numerico y la otra trama enviara una texto.

 

 Creación del interface para la pantalla tft.

  Lo primero que vamos a hacer es crear en la pantalla dos obejtos, uno que sreria una etiqueta de texto y una etiqueta con un valor numerico. La pantalla nos quedaria mas o menos asi :

nextion_editor

n0 = Etiqueta Number

t0 = Etiqueta Texto 

 

Codigo para arduino.

  Una vez tengamos hecho el programa para la pantalla, ya podemos hacer el programa del arduino :

void setup() {
Serial.begin(9600);                                                                 // Inicializa com por hardware.
}

void loop() {
 
for (int i=0; i <= 255; i++){
    
    Serial.print("n0.val=");
    Serial.print(i);
    ff();

    Serial.print("t0.txt=");
    Serial.print(i);
     ff();
      delay(1000);
   } 
}

// · 0xff
void ff(){
 Serial.write(0xff);
 Serial.write(0xff);
 Serial.write(0xff);
}

 

Prueba de código.

   Con este pequeño código lo que buscamos es actualizar las dos etiquetas de la pantalla con un numero que iria contando. recordar siempre que todas las tramas de datos que se envían hacia y desde la pantalla tienen que terminar con un bloque de tres 0xFF.

  Bien, después de subido el código al arduino, y probado, nos damos cuenta que la etiqueta del numero va contando como debe pero la etiqueta de texto sigue con el texto inicial.

  ¿ Que esta pasando ? Fijaros bien en el código. ¿ No veis nada raro ?

  La traba tendría que escribir por el puerto serie lo siguiente :

 

  • Trama numerica :     n0.val= variable                 -> Variable seria el numero que va cambiando.
  • Trama Texto      :     t0.txt="variable"                -> variable numero entre 0 y 255, como en el punto anterio.

 ¿Realmente estamos enviando esto ?

  La respuesta es no, en el valor numérico si, en el valor de texto lo que estamos enviando es : t0.txt=variable.

  Esto es asi ya que las comillas que estais viendo pertenecen a la instrucción del compilador de arduino y no a la trama de texto.

 

Codigo correjido.

 

void setup() {
Serial.begin(9600);                                                                 // Inicializa com por hardware.
}

void loop() {
 
for (int i=0; i <= 255; i++){
    
    Serial.print("n0.val=");
    Serial.print(i);
    ff();

    Serial.print("t0.txt="\");
    Serial.print(i);
    Serial.print("\"");
    ff();
      delay(1000);
   } 
}

// · 0xff
void ff(){
 Serial.write(0xff);
 Serial.write(0xff);
 Serial.write(0xff);
}

 

 

   La diferencia con el código anterior es la inclusión de unas comillas al principio y al final de la variable. Para enviar unas comillas como texto lo mas fácil es pone \" dentro de la cadena de texto a enviar. Cuando el compilador encuentra estos dos caracteres , entiende que queremos enviar el carácter collimas y ya es capaz de tratarlo correctamente.

 

Conclusiones finales.

 Como os comento, este es un error que esta generando mcuhas consultas, por esa razon hemos decidido hacer un video explicativo para mostrar el error que solemos cometer y su facil solución.

 

  Aquí os dejamos el video explicativo con todo lo aquí explicado de forma detallada :