Problème de communication entre nextion et arduino

Bonjour, j'essaye en vain de connecter un écran nextion avec un arduino mega 2560.

J'ai essayé de commander une led dans un premier essai et d'afficher les valeurs d'un dth11. Mon écran est un NX4832K035_11 et j'ai essayé sur un uno et une Mega 2560

J'ai repris le fichier à télécharger sur le site axiseo que j'ai uplodé dans l'arduino tout comme le fichier HMI. J'ulise la version 2.3.6 arduino et la dernière version de nextion 1.68.1.

J'avais fait quelques petites apli sur nextion qui fonctionaient et ici impossible de faire passer la commande de l'écran vers l'arduino.

Sauf erreur de ma part la semaine dernière j’ai pu j’ai pu faire fonctionner le projet.
J’avais modifié les deux bp pour les remplacer par un bp poussoir en créant un évènement à l'enclenchement et la relache?

Idem j'ai pu afficher les valeurs du capteur dht11, j'ai testé d'autres projets et impossible de faire fonctionner les deux projets?

Si je tape la valeur de la commande dans le moniteur série la led s'allume.

// **************
// * AXISEO.COM *
// **************

#define SERIAL_BAUDRATE 9600
#define NB_BYTES_MSG 7            // Exemple : 65 00 01 01 FF FF FF (bouton "allumer led") ou bien 65 00 03 01 FF FF FF (bouton "éteindre led")
#define NUM_BROCHE_LED 11         // Indique quelle broche de l'arduino sera utilisée pour y brancher la LED à piloter

unsigned char incomingByte;       // variable de stockage des données entrantes (1 octet à la fois)
unsigned char msg[NB_BYTES_MSG];  // variable qui contiendra le message entier
bool msgEnCours = false;          // indique si oui ou non il y a un message en cours de réception
int idx = 0;                      // index

void setup() {
  pinMode(NUM_BROCHE_LED, OUTPUT);      // définition de la broche n°NUM_BROCHE_LED en sortie
  digitalWrite(NUM_BROCHE_LED, LOW);    // extinction de la led
  Serial3.begin(SERIAL_BAUDRATE);       // Vitesse de transmission série (vers ECRAN LCD)
  Serial.begin(SERIAL_BAUDRATE);        // Vitesse de transmission série (vers PC)
  delay(10);                            // Attente (en milli-secondes)
  Serial3.flush();                      // Vide le buffer de réception de données du port série (côté écran tactile)
}

void loop() {

  if(Serial3.available() > 0) {              // Test si quelque chose en attente de lecture sur le port série 3 (côté écran LCD)
    
    incomingByte = (char)Serial3.read();     // Lit 1 octet de ce qu'il y a en attente

    // Affichage de l'octet lu sur le port série de l'ECRAN pour l'afficher sur le port série du PC
    Serial.print("Octet reçu (HEX) = ");
    Serial.println(incomingByte, HEX);

    // Test si c'est le début d'une chaine (commence par 65)
    if(incomingByte == 0x65) {
      msg[0] = 0x65;
      msgEnCours = true;       
      idx = 1;
    }
    else
    {
      // Si c'est la suite, on enregistre
      if(msgEnCours == true) {
        msg[idx] = incomingByte;
        idx++;
      }
  
      // On regarde si on est au bout du message ou pas
      if(idx == NB_BYTES_MSG) {
        afficheResultat();
        msgEnCours = false;
        idx = 0;
      }    
    }
  }
}

void afficheResultat() {
  // Affichage
  Serial.print("Message reçu (HEX) : ");
  Serial.print(msg[0], HEX);    
  Serial.print(":");
  Serial.print(msg[1], HEX);
  Serial.print(":");
  Serial.print(msg[2], HEX);
  Serial.print(":");
  Serial.print(msg[3], HEX);
  Serial.print(":");
  Serial.print(msg[4], HEX);
  Serial.print(":");
  Serial.print(msg[5], HEX);
  Serial.print(":");
  Serial.println(msg[6], HEX);

  // Test si bouton 1 appuyé
  if(msg[0]==0x65 && msg[1]==0x00 && msg[2] == 0x01) {    // On regarde si le message commence par 65 00 01 (bouton "ALLUMER LED")
    digitalWrite(NUM_BROCHE_LED, HIGH);                   // si c'est ça, on allume la LED connectée à l'arduino
    Serial.println("Allumage de la LED !");
    Serial.println("----------------------------------------");
  }

  // Test si bouton 2 appuyé
  if(msg[0]==0x65 && msg[1]==0x00 && msg[2] == 0x03) {    // On regarde si le message commence par 65 00 03 (bouton "ETEINDRE LED")
    digitalWrite(NUM_BROCHE_LED, LOW);                    // si c'est ça, on éteint la LED connectée à l'arduino
    Serial.println("Extinction de la LED.");
    Serial.println("----------------------------------------");
  }
}

J'ai bien sur réinjecté les programmes téélchargés mais rien ne fonctionne?

Rien ne s'affiche dans le moniteur série de l'arduino si je presse un bouton et rien ne s'affiche dans le "teste" humidity et temperature?

Par contre dans le projet dht11 j'ai bien des valeurs dans le moniteur série?

J'ai remplacé écran carte arduino sans résulat?

J'upload à partir du port usb via un convertisseur?

Je pense ne pas avoir rêvé et avoir bien vu fonctionner ces projets?
Merci de votre aide

Le problème vient presque certainement d’une absence de communication série entre le Nextion et la Mega. Le code semble correct et le fait qu’il ait déjà fonctionné prouve que la panne est matérielle ou de configuration.

Le Nextion doit être relié sur Serial3 de la Mega, donc TX3 sur la broche 14 et RX3 sur la broche 15, avec les fils croisés (TX de l’écran vers RX3 de la Mega, RX de l’écran vers TX3). La masse du Nextion doit être reliée à celle de la Mega et son ’alimentation doit être en 5 V avec un courant suffisant.

Bonjour capucine34700

J'ai essayé ton programme et il fonctionne très bien.

Pour aller plus loin, mets moi le fichier Nextion de ton projet, que je puisse l'essayer. Tu dois le zipper pour le mettre sur le forum.

Opening port
Port open
Octet reçu (HEX) = 65
Octet reçu (HEX) = 0
Octet reçu (HEX) = 1
Octet reçu (HEX) = 1
Octet reçu (HEX) = FF
Octet reçu (HEX) = FF
Octet reçu (HEX) = FF
Message reçu (HEX) : 65:0:1:1:FF:FF:FF
Allumage de la LED !
----------------------------------------
Octet reçu (HEX) = 65
Octet reçu (HEX) = 0
Octet reçu (HEX) = 3
Octet reçu (HEX) = 1
Octet reçu (HEX) = FF
Octet reçu (HEX) = FF
Octet reçu (HEX) = FF
Message reçu (HEX) : 65:0:3:1:FF:FF:FF
Extinction de la LED.
----------------------------------------

A+
Cordialement
jpbbricole