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.
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
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
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 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.
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
}
}
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.
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.
Maintenant que je me suis lancé dans l'utilisation de la librairie esaynextion et que je commence à comprendre quelques choses, je vais rester dessus mais merci