[Résolu] écran ITEAD

Bonsoir,

J’essai de connecter un écran sur mon ESP32 en utilisant la librairie fournie ITEAD.
Je souhaite “communiquer” avec lui via le port série 2.

J’ai un programme de test :

#include <HardwareSerial.h>
#include <Nextion.h>



void t0PopCallback(void *ptr);
void b0PopCallback(void *ptr);
void b1PopCallback(void *ptr);

/*
 * Declare a text object [page id:0,component id:1, component name: "t0"]. 
 */
NexText t0 = NexText(0, 1, "t0");

/*
 * Declare a button object [page id:0,component id:2, component name: "b0"]. 
 */
NexButton b0 = NexButton(0, 2, "b0");

/*
 * Declare a button object [page id:0,component id:3, component name: "b1"]. 
 */
NexButton b1 = NexButton(0, 3, "b1");

char buffer[100] = {0};

/*
 * Register object t0, b0, b1, to the touch event list.  
 */
NexTouch *nex_listen_list[] = 
{
    &t0,
    &b0,
    &b1,
    NULL
};

/*
 * Text component pop callback function. 
 */
void t0PopCallback(void *ptr)
{
    dbSerialPrintln("t0PopCallback");
    t0.setText("50");
}

/*
 * Button0 component pop callback function.
 * In this example,the value of the text component will plus one every time when button0 is released.
 */
void b0PopCallback(void *ptr)
{
    uint16_t len;
    uint16_t number;
    
    dbSerialPrintln("b0PopCallback");

    memset(buffer, 0, sizeof(buffer));
    t0.getText(buffer, sizeof(buffer));
    
    number = atoi(buffer);
    number += 1;

    memset(buffer, 0, sizeof(buffer));
    itoa(number, buffer, 10);
    
    t0.setText(buffer);
}

/*
 * Button1 component pop callback function.
 * In this example,the value of the text component will minus one every time when button1 is released.
 */
void b1PopCallback(void *ptr)
{
    uint16_t len;
    uint16_t number;
    
    dbSerialPrintln("b1PopCallback");

    memset(buffer, 0, sizeof(buffer));
    t0.getText(buffer, sizeof(buffer));
    
    number = atoi(buffer);
    number -= 1;

    memset(buffer, 0, sizeof(buffer));
    itoa(number, buffer, 10);
    
    t0.setText(buffer);
}

void setup(void)
{
    /* Set the baudrate which is for debug and communicate with Nextion screen. */
    nexInit();

    /* Register the pop event callback function of the current text component. */
    t0.attachPop(t0PopCallback);

    /* Register the pop event callback function of the current button0 component. */
    b0.attachPop(b0PopCallback);

    /* Register the pop event callback function of the current button1 component. */
    b1.attachPop(b1PopCallback);

    dbSerialPrintln("setup done");
}

void loop(void)
{
    /*
     * When a pop or push event occured every time, 
     * the corresponding component[right page id and component id] in touch event list will be asked.
     */
    nexLoop(nex_listen_list);
}

Cependant quand j’essaie de compiler ce programme, j’obtient un message d’erreur :

sketch\NexConfig.h:38:19: error: ‘Serial2’ was not declared in this scope

#define nexSerial Serial2

Dans le fichier d’origine NexConfig.h, j’ai la ligne suivante :

#define nexSerial Serial2

Je ne comprends pas trop d’ou vient le problème à la compilation.

Mercie à l’avance pour l’aide que vous pourrez m’apporter !!

Bonsoir

je ne connais pas cette librairie
Est-elle réellement compatible ESP32 ?
Sait-elle exploiter correctement les ports séries multiples d'un ESP32 ?
(La procédure est distincte de ce qui se fait couramment avec Arduino)

Il ya eu récemment sur ce forum un échange ou je montrais comment gérer Serial2 ou Serial3 sur l'ESP32
Serial2 est ... à construire (choisir un UART interne et le relier à des pins) avent utilisation , il n'est pas pré-défini
Avec la loupe en haut à droire il est j'espère possible retrouver cet échange

-> Voir les messages #24 et #26 de ce fil de discussion

Ici, il ajoute cette ligne en début de code

HardwareSerial Serial2(2);

Bonsoir lesept

Cette ligne est une déclaration qui est maintenant incluse dans l'IDE Arduino, dans le fil de discussion évoqué il avait fallu l'enlever pour ne pas avoir une erreur de re-déclaration (cf messages #26 et #27)

l'UART 2 est désormais 'accroché' à Serial(2) avec l'IDE Arduino ça a été introduit quelque part entre mai 2018 (page web que tu cites) et maintenant

L'ESP32/ARDUINO n'a pas encore sa documentation compléte centralisée contrairement à ESP9266/ARDUINO, il faut encore collecter les infos à droite et à gauche... :confused:

Au temps pour moi...

Well, well, well.

J'ai résolu mon soucis en :

  1. modifiant le ficher ...\Arduino\hardware\espressif\esp32\cores\esp32\HardwareSerial.h. J'ai ajouté en fin de fichier :
extern HardwareSerial Serial1;
extern HardwareSerial Serial2;

#endif
  1. en tête de mon programme, j'ai ajouté les lignes suivantes :
#include "Nextion.h"
HardwareSerial Serial2(2);

Et voilou. Maintenant, je peux gérer l'écran (un NX4024T032_11) via mon SP32. je pense que pour les modèle plus "intelligent", il faille faire la même chose.

En mode geekette, contente :grinning:

Est-il possible de la marquer en "Résolu" ?

Bonjour

Pour mettre résolu il te suffit d’éditer le titre de ton message initial .

Pourrais tu s’il te plait indiquer quelle version des outils ESP32 pour Arduino a rendu nécessaires les modifications effectuées ?
La version actuelle (1.01 à ce jour) contient déjà les définitions de Serial, Serial1 et Serial2 dans HardwareSerial.h.

Bonnes geekeries…!!

al1fch:
Pourrais tu s'il te plait indiquer quelle version des outils ESP32 pour Arduino a rendu nécessaires les modifications effectuées ?
La version actuelle (1.01 à ce jour) contient déjà les définitions de Serial, Serial1 et Serial2 dans HardwareSerial.h.

Chez moi en 1.0.1 mais comme c'est sur un projet pro que je suis, je dois être en version de base :confused:
Faudra que je fasse une mise à jour :wink:

Par contre, pour être sûr, quand tu écrit

version des outils ESP32 pour Arduino

, tu parles du board Arduino ? Pour moi c'est une clone d'Espressif.

je voulais parler la version du 'pack locigiel' permettant d'ajouter la plateforme ES32 à l'IDE Arduino , le "core Arduino for ESP32 platform" (exemple 1.0.1)
Il est en pleine "période de croissance" :slight_smile:

v1.0.1

al1fch : problème définitivement résolu : c'était l'alimentation de l'écran qui le faisait totalement bugger ! :o
la soluce temporaire, une alimentation via un port USB.

J'utilisais cette alimentation achetée sur Amazon : Aukru Raspberry Pi 3 Alimentation 5V 3000mA avec Interrupteur pour Raspberry Pi 3 Model B+, Pi 3 modèle b,Pi 2.

Je remonte le soucis à ITEAD.