Nextion y arduino

hola saben e tenido problema en usar los botones de la pantalla nextion ejemplo e usado la biblioteca para usar así en mi código

NexButton tara       = NexButton(0, 1, "tara");

y no compila cuando lo uso así y después probé otro método con que

else if (command == "TARA") {  
      scale.tare();


con la saga básica no turbe problema pero cuando quise usar la saga inteligente no puede hacer que me reconociera los botones y los Arduino que use para las pruebas fue uno y mega

Que no compila? Entiendo que la parte de la pantalla funciona porque estas en el Debug.
Que fallo da al compilar?
Solo te falla el botón o no va nada?
Lo tienes conectado al Serial2 en un Mega?
Has activado el modo debug de la libreria para ver si realmente llega algo al pulsar?

este código lo saque de internet de aquí para ser mas preciso

(2) Nextion Arduino| COMO PROGRAMAR BOTONES EN ARDUINO NEXTION #4 - YouTube

pero lo intento usar y me salen todos estos errores

C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:8:1: error: 'NexButton' does not name a type; did you mean 'Nextion'?
 NexButton bsala       = NexButton(0, 1, "tara");
 ^~~~~~~~~
 Nextion
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:9:1: error: 'NexDSButton' does not name a type; did you mean 'Nextion'?
 NexDSButton b2cocina  = NexDSButton(0, 2, "b2cocina");
 ^~~~~~~~~~~
 Nextion
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:10:1: error: 'NexDSButton' does not name a type; did you mean 'Nextion'?
 NexDSButton b2comedor  = NexDSButton(0, 3, "b2comedor");
 ^~~~~~~~~~~
 Nextion
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:11:1: error: 'NexDSButton' does not name a type; did you mean 'Nextion'?
 NexDSButton b2dormitorio  = NexDSButton(0, 4, "b2dormitorio");
 ^~~~~~~~~~~
 Nextion
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:12:1: error: 'NexDSButton' does not name a type; did you mean 'Nextion'?
 NexDSButton b2dormitorio1  = NexDSButton(0, 5, "b2dormitorio1");
 ^~~~~~~~~~~
 Nextion
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:14:1: error: 'NexTouch' does not name a type
 NexTouch *nex_listen_list[] =
 ^~~~~~~~
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino: In function 'void prender_cocina()':
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:33:3: error: 'b2cocina' was not declared in this scope
   b2cocina.getValue(&estadococina);
   ^~~~~~~~
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:33:3: note: suggested alternative: 'cocina'
   b2cocina.getValue(&estadococina);
   ^~~~~~~~
   cocina
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino: In function 'void prender_comedor()':
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:46:3: error: 'b2comedor' was not declared in this scope
   b2comedor.getValue(&estadocomedor);
   ^~~~~~~~~
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:46:3: note: suggested alternative: 'comedor'
   b2comedor.getValue(&estadocomedor);
   ^~~~~~~~~
   comedor
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino: In function 'void prender_dormitorio()':
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:59:3: error: 'b2dormitorio' was not declared in this scope
   b2dormitorio.getValue(&estadodormitorio);
   ^~~~~~~~~~~~
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:59:3: note: suggested alternative: 'dormitorio'
   b2dormitorio.getValue(&estadodormitorio);
   ^~~~~~~~~~~~
   dormitorio
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino: In function 'void prender_dormitorio1()':
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:72:3: error: 'b2dormitorio1' was not declared in this scope
   b2dormitorio1.getValue(&estadodormitorio1);
   ^~~~~~~~~~~~~
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:72:3: note: suggested alternative: 'dormitorio1'
   b2dormitorio1.getValue(&estadodormitorio1);
   ^~~~~~~~~~~~~
   dormitorio1
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino: In function 'void setup()':
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:84:3: error: 'nexInit' was not declared in this scope
   nexInit();
   ^~~~~~~
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:84:3: note: suggested alternative: 'exit'
   nexInit();
   ^~~~~~~
   exit
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:90:3: error: 'bsala' was not declared in this scope
   bsala.attachPop(prender_sala);
   ^~~~~
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:90:3: note: suggested alternative: 'sala'
   bsala.attachPop(prender_sala);
   ^~~~~
   sala
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:91:3: error: 'b2cocina' was not declared in this scope
   b2cocina.attachPop(prender_cocina);
   ^~~~~~~~
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:91:3: note: suggested alternative: 'cocina'
   b2cocina.attachPop(prender_cocina);
   ^~~~~~~~
   cocina
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:92:3: error: 'b2comedor' was not declared in this scope
   b2comedor.attachPop(prender_comedor);
   ^~~~~~~~~
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:92:3: note: suggested alternative: 'comedor'
   b2comedor.attachPop(prender_comedor);
   ^~~~~~~~~
   comedor
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:93:3: error: 'b2dormitorio' was not declared in this scope
   b2dormitorio.attachPop(prender_dormitorio);
   ^~~~~~~~~~~~
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:93:3: note: suggested alternative: 'dormitorio'
   b2dormitorio.attachPop(prender_dormitorio);
   ^~~~~~~~~~~~
   dormitorio
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:94:3: error: 'b2dormitorio1' was not declared in this scope
   b2dormitorio1.attachPop(prender_dormitorio1);
   ^~~~~~~~~~~~~
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:94:3: note: suggested alternative: 'dormitorio1'
   b2dormitorio1.attachPop(prender_dormitorio1);
   ^~~~~~~~~~~~~
   dormitorio1
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino: In function 'void loop()':
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:98:11: error: 'nex_listen_list' was not declared in this scope
   nexLoop(nex_listen_list);
           ^~~~~~~~~~~~~~~
C:\Users\jeank\Downloads\iluminacion\arduino\iluminacion\iluminacion.ino:98:3: error: 'nexLoop' was not declared in this scope
   nexLoop(nex_listen_list);
   ^~~~~~~
Se encontraron varias bibliotecas para "Nextion.h"
  Usado: C:\Users\jeank\OneDrive\Documentos\Arduino\libraries\Nextion
  No utilizado: C:\Users\jeank\OneDrive\Documentos\Arduino\libraries\ITEADLIB_Arduino_Nextion
exit status 1

Compilation error: 'NexButton' does not name a type; did you mean 'Nextion'?

y solo me faltan los botones y lo tengo contado en serial1 de mi mega y si también me metí a la librería para modificar la y también hice esto pero tampoco funciono me salen los mismo errores y lo hice paso a paso

▷ Tutorial de pantalla Arduino Nextion (2023) (elosciloscopio.com)

Te faltará añadir entonces #include <NexButton.h>
Como no pones el código completo no puedo decirte mas, parece que tengas alguna llave de cierre de mas y te ignore parte del codigo, te salen funciones no declaradas en los errores.

para cada botón o texto #include <-------->

#include <--------> para los botones #include <NexButton.h>?

y aquí le dejo el código

#include "Nextion.h"
#include <NexButton.h>

#define   sala         2
#define   cocina       3
#define   comedor      4
#define   dormitorio   5
#define   dormitorio1  6

NexButton bsala       = NexButton(0, 1, "bsala");
NexButton b2cocina  = NexButton(0, 2, "b2cocina");
NexButton b2comedor  = NexButton(0, 3, "b2comedor");
NexButton b2dormitorio  = NexButton(0, 4, "b2dormitorio");
NexButton b2dormitorio1  = NexButton(0, 5, "b2dormitorio1");

NexTouch *nex_listen_list[] =
{
  &bsala,
  &b2cocina,
  &b2comedor,
  &b2dormitorio,
  &b2dormitorio1,
  NULL
};

void prender_sala()
{
  digitalWrite(sala, 1);
  delay(100);
  digitalWrite(sala, 0);
}
void prender_cocina()
{
  uint32_t estadococina;
  b2cocina.getValue(&estadococina);
  if (estadococina == 1)
  {
    digitalWrite(cocina, 1);
  }
  else
  {
    digitalWrite(cocina, 0);
  }
}
void prender_comedor()
{
   uint32_t estadocomedor;
  b2comedor.getValue(&estadocomedor);
  if (estadocomedor == 1)
  {
    digitalWrite(comedor, 1);
  }
  else
  {
    digitalWrite(comedor, 0);
  }
}
void prender_dormitorio()
{
  uint32_t estadodormitorio;
  b2dormitorio.getValue(&estadodormitorio);
  if (estadodormitorio == 1)
  {
    digitalWrite(dormitorio, 1);
  }
  else
  {
    digitalWrite(dormitorio, 0);
  } 
}
void prender_dormitorio1()
{
   uint32_t estadodormitorio1;
  b2dormitorio1.getValue(&estadodormitorio1);
  if (estadodormitorio1 == 1)
  {
    digitalWrite(dormitorio1, 1);
  }
  else
  {
    digitalWrite(dormitorio1, 0);
  }
}

void setup() {
  nexInit();
  pinMode(sala, OUTPUT);
  pinMode(cocina, OUTPUT);
  pinMode(comedor, OUTPUT);
  pinMode(dormitorio, OUTPUT);
  pinMode(dormitorio1, OUTPUT);
  bsala.attachPop(prender_sala);
  b2cocina.attachPop(prender_cocina);
  b2comedor.attachPop(prender_comedor);
  b2dormitorio.attachPop(prender_dormitorio);
  b2dormitorio1.attachPop(prender_dormitorio1);
}

void loop() {
  nexLoop(nex_listen_list);
}

y aquí le dejo una foto del poyeto

Estas usando GetValue que es para texto o números en un botón, viendo la imagen de tu proyecto quizá querias referirte al DualStateButton o al switch para eso tendrás que hacer modificaciones tanto en el proyecto como en el código.

Yo en mi proyecto uso el switch pero no puedes ponerle una imagen, dsbutton no lo he probado.

Yo uso algo parecido al dsbutton, cuando recibo el pulso de botón es el Arduino el que le envia por comando para que cambie de color/texto/imagen.

Cambiar texto

Serial1.print(“b0.txt=ON”);
Serial1.print(“\xFF\xFF\xFF”);

Cambiar imagen

Serial1.print(“b0.pic=3”);
Serial1.print(“\xFF\xFF\xFF”);

Cambiar color

Serial1.print(“b0.bco=1024”);
Serial1.print(“\xFF\xFF\xFF”);

Puedes pedir el estado del dsbutton pero te va a ser mas complicado gestionarlo ya que tiene que salir de la función para recibirlo.

Serial1.print(“get b0.val”);
Serial1.print(“\xFF\xFF\xFF”);

hola

Adjunto todos los códigos y archivos HMI para la pantalla Nextion. En la carpeta 'ver_0_3', se encuentra una versión del código en la que intenté implementar los botones en la interfaz de la pantalla, pero lamentablemente no obtuve resultados positivos. Por otro lado, en la carpeta 'peso1.8', el programa funcionaba correctamente con los botones, pero enfrenté desafíos al intentar integrar la pantalla inteligente de Nextion.

La carpeta 'prueba.mia.buena' contiene la versión más reciente de mi programa, en la cual deseo implementar los botones. Sin embargo, me encuentro con dificultades para lograrlo. Las carpetas 'hmi' incluyen las dos versiones utilizadas, una con la interfaz básica y la otra con la interfaz inteligente de Nextion, que aún no he logrado hacer funcionar correctamente.

Agradecería mucho su ayuda y orientación en cuanto a cómo incorporar los botones en la versión más reciente de mi programa.

PROYETO LLENADORA

En tu post inicial consultas sobre la librería de Nextion pero en los archivos ninguno usa la librería.
Tambien dices que no compila pero a mi me compila todo.

Cual es el problema con estos códigos?
Te imprime algo en puerto serial al tocar un botón?
Si la respuesta es no, has juntado el GND de la fuente de alimentación de la pantalla y la del Arduino?RX esta conectado a TX y TX a RX?

  1. Mi programa se carga satisfactoriamente y funciona correctamente, pero me enfrento a dificultades al intentar compilarlo después de agregar la librería. Necesitaría asistencia o consejos sobre cómo resolver este problema.

  2. Cuando utilizo la pantalla básica NX8048TO70_011, específicamente, si presiono un botón, se imprime la información correspondiente en el puerto serie y los movimientos se ejecutan adecuadamente. Sin embargo, al emplear la pantalla NX8048P070-011C-Y, no se imprime nada en el puerto serie y no parece ejecutar ninguna acción. Estoy buscando una solución para lograr que esta pantalla funcione de manera adecuada.

  3. las conexiones las tengo así

aquí tengo un mini video usando la pantalla básica
AQUI

Tu código es incompatible con la librería ya que ambos vacían el buffer del puerto serial y solo uno podrá leerlo. Si quieres usar la librería tienes que eliminar de tu código la lectura del serial y en el HMI poner todos los botones con el "Send Component ID" activo.

El comando print está obsoleto y se ha cambiado a prints, puedes ver todas las instrucciones en la documentación de Nextion.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.