Déclenchement fonction arduino depuis un nextion avec easynextionlibrary

Bonjour tout le monde,

Je suis entrain de travailler sur mon écran nextion NX8048T070 avec un arduino mega 2560.

J'arrive à envoyer des données depuis l'arduino vers le nextion mais pas l'inverse. J'essaye de déclencher une fonction trigger0() de l'arduino depuis le nextion ne mettant dans le touch release event : "printh 23 02 54 00" et dans l'arduino j'ai ça :

#include <LiquidCrystal_I2C.h>          // Déclare la bibliothèque LiquidCrystal_I2C
#include "EasyNextionLibrary.h" // Importation de la bibliothèque Nextion pour communiquer avec l'écran Nextion.
LiquidCrystal_I2C lcd_1(0x27, 20, 4);   // Déclare un afficheur nommé lcd_1 20 caractères sur 4 lignes 0x27 est l'adresse des pins A4 et A5
#include <Wire.h>            // Importation de la bibliothèque Wire pour utilisation du protocole de liaison I2C.
EasyNex myNex(Serial); // Create an object of EasyNex class with the name < myNex >

void setup()
{

  myNex.begin(9600); // Liaison série avec l'écran Nextion définit à 9600 Bauds de vitesse.

  delay(2000);
  lcd_1.init();                 // Initialise l'afficheur
  Wire.begin();     // Ouverture de la communication I2C.
  lcd_1.setBacklight(1);        // Allume le rétro éclairage

  if(myNex.currentPageId==0){
  lcd_1.clear();
   lcd_1.setCursor(1, 2);        // Positionne le curseur sur le caractère 1(le 2ème caractère) de la ligne 1 (la 2ème ligne)
   lcd_1.print("En attente trigger");    // Affiche le texte
  }
}

void loop()
{
  
  myNex.NextionListen();
  

}

void trigger0(){
   
   lcd_1.clear();
   lcd_1.setCursor(1, 2);        // Positionne le curseur sur le caractère 1(le 2ème caractère) de la ligne 1 (la 2ème ligne)
   lcd_1.print("Trigger 0 déclenché");    // Affiche le texte sur l'écran lcd
   myNex.writeNum("b1.bco",63521); // Change un objet b1 de l'écran nextion
  delay(250);
   myNex.writeStr("b1.txt","pageXX!");
}

mais rien ne se passe donc j'en conclu que j'ai raté quelque chose sur la réception de données dans l'arduino depuis le nextion.

Merci pour votre aide

Connecter le nextion sur le port Serial est une mauvaise idée si vous avez branché le port USB de votre MEGA à votre ordinateur. La voie série pour charger le code arduino va utiliser Serial

➜ mettez le Nextion sur Serial1, 2 ou 3

Effectivement je n'ai pas fais attention sachant que le nextion était sur le serial 1 mais ça ne change pas le résultat, toujours impossible de déclencher le trigger0 depuis le nextion :confused:

OK - je n'utilise pas ce genre d'écran donc difficile de vous répondre au delà de la connectique

(ils sont incompatibles avec environnement Apple donc je boycotte :slight_smile: et en plus il semble que leur bibliothèque Arduino et le support qu'ils fournissent soit mauvais... )

mauvais est un euphémisme, il n'y a rien à vrai dire et très peu de tuto et encore moins vraiment détaillés qui balayent toutes les possibilités côté arduino

J'ai réussi à dépatouiller un peu la chose mais je me retrouve face à une bizarrerie :

quand j'utilise EasyNex myNex(Serial); je peux envoyer des données vers le nextion qui s'affiche très bien mais je n'arrive pas à déclencher les trigger dans le programme arduino

quand j'utilise EasyNex myNex(Serial3); je peux déclencher les trigger dans l'arduino mais je n'arrive pas envoyer des données vers le nextion.

Ca me dépasse totalement la...

expliquez en détail comment l'écran est branché et postez un code minimal qui montre le souci

Nextion alimenté directement via un micro USB tx du nextion sur rx3 de l'arduino et rx du nextion sur tx3 de l'arduino

Voici le code qui déclenche les triggers mais ne change pas de page du nextion comme demandé dans les triggers

#include <LiquidCrystal_I2C.h>          // Déclare la bibliothèque LiquidCrystal_I2C
#include "EasyNextionLibrary.h" // Importation de la bibliothèque Nextion pour communiquer avec l'écran Nextion.
#include <trigger.h>
LiquidCrystal_I2C lcd_1(0x27, 20, 4);   // Déclare un afficheur nommé lcd_1 20 caractères sur 4 lignes 0x27 est l'adresse des pins A4 et A5
#include <Wire.h>            // Importation de la bibliothèque Wire pour utilisation du protocole de liaison I2C.
EasyNex myNex(Serial3); // Create an object of EasyNex class with the name < myNex >

void setup()
{

  myNex.begin(9600); // Liaison série avec l'écran Nextion définit à 9600 Bauds de vitesse.

  delay(2000);

  lcd_1.init();                 // Initialise l'afficheur
  Wire.begin();     // Ouverture de la communication I2C.
  lcd_1.setBacklight(1);        // Allume le rétro éclairage


  if(myNex.currentPageId==0){

   lcd_1.clear();
   lcd_1.setCursor(1, 2);        // Positionne le curseur sur le caractère 1(le 2ème caractère) de la ligne 1 (la 2ème ligne)
   lcd_1.print("En attente trigger");    // Affiche le texte
   
  }
}

void loop()
{
  
  myNex.NextionListen();
  

}

void trigger0(){

   if(myNex.currentPageId==0){

    lcd_1.clear();
   lcd_1.setCursor(1, 2);        // Positionne le curseur sur le caractère 1(le 2ème caractère) de la ligne 1 (la 2ème ligne)
   lcd_1.print("Trigger 0 OK");    // Affiche le texte
   delay(50); // Some time for Nextion to execute the command
   myNex.writeStr("page LoadingMods");
   delay(50); // Some time for Nextion to execute the command
   }

}

void trigger1(){

   if(myNex.currentPageId==0){

    lcd_1.clear();
   lcd_1.setCursor(1, 2);        // Positionne le curseur sur le caractère 1(le 2ème caractère) de la ligne 1 (la 2ème ligne)
   lcd_1.print("Trigger 1 OK");    // Affiche le texte
   delay(50); // Some time for Nextion to execute the command
   myNex.writeStr("page LoadingMods");
  delay(50); // Some time for Nextion to execute the command
  
   }
   
}

est-ce que les GND sont joints?

euh non, pourquoi faudrait il mettre un GND entre le nextion et l'arduino ? Il y a une raison matériel à cela ?

oui
le GND définit le niveau 0 de la tension - il faut que les 2 cartes soient d'accord (dans le pire des cas vous pouvez griller une carte s'il y a une différence notable de référence)... et ça donne un chemin de retour pour les électrons qui ont été envoyé de Tx Arduino -> Rx Nextion c'est pour cela qu'on appelle ça un "circuit"

J'ai aidé pour ce projet, sans librairie et, comme je n'ai pas de Nextion, j'ai travaillé en mode debug.
Dans le post#109, Dans le même post il y a le programme Nextion.

Si je peux te rendre service?

Cordialement
jpbbricole

D'accord, pour moi le nextion avait son + et son - sur son alim et ensuite la communication se fait juste avec rx tx sans avoir besoin de les lier ensemble, je fais un piquage sur le gnd de l'alim vers l'arduino et je test voir si ca fonctionne, je reviens vous donner des nouvelles.

Merci

Maintenant que je me suis lancé dans l'utilisation de la librairie esaynextion et que je commence à comprendre quelques choses, je vais rester dessus :sweat_smile: mais merci :slight_smile:

ça marche !!! je peux envoyer et recevoir des données.

Merci infiniment, j'éspère que ce post pourra aider de futur débutant qui bloquerait sur le même problème.

:wink:

cool bonne continuation

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