Nextion ed Arduino UNO: 'Nextion' does not name a type

Ciao a tutti... ho preso un Nextion, che sembra fatto molto meglio delle cinesate che vendono in giro (pur essendo questo cinese!), anche perchè lascia praticamente tutti i pin liberi...

Problemi: scarico le librerie ufficiali da GitHub, provo a compilarle e....

Arduino:1.6.12 (Mac OS X), Scheda:"Arduino/Genuino Uno"

Receivemessage_netion:6: error: 'Nextion' does not name a type
 Nextion myNextion(nextion, 9600); //create a Nextion object named myNextion using the nextion serial port @ 9600bps
 ^
/Users/Davide/Documents/Arduino/Receivemessage_netion/Receivemessage_netion.ino: In function 'void setup()':
Receivemessage_netion:10: error: 'myNextion' was not declared in this scope
   myNextion.init();
   ^
/Users/Davide/Documents/Arduino/Receivemessage_netion/Receivemessage_netion.ino: In function 'void loop()':
Receivemessage_netion:15: error: 'myNextion' was not declared in this scope
   String message = myNextion.listen(); //check for message
                    ^
exit status 1
'Nextion' does not name a type

Questo report potrebbe essere più ricco di informazioni abilitando l'opzione
"Mostra un output dettagliato durante la compilazione"
in "File -> Impostazioni"

Ho cercato su google, anche su questo forum, ma non ho trovato granchè.... suggerimenti? Grazie!!

dokke:
Problemi: scarico le librerie ufficiali da GitHub, provo a compilarle e....

Ok scaricarle, ma poi ?

Hai scompattato lo zip ? Hai messo la cartella nella cartella delle tue librerie ? Se nell'IDE vai tra gli esempi, vedi gli esempi per i Nextion ? Se SI, carica un esempio e verifica che compili correttamente.

Guglielmo

Certo che ho scaricato lo .ZIP, l'ho messa nelle mie librerie dopo averla unzippata (non è la prima libreria esterna che uso con Arduino) e con gli esempi ho questo risultato:

Arduino:1.6.12 (Mac OS X), Scheda:"Arduino/Genuino Uno"

In file included from /Users/Davide/Documents/Arduino/libraries/Nextion/Nextion.h:21:0,
                 from /Users/Davide/Documents/Arduino/libraries/Nextion/examples/CompCrop/CompCrop.ino:17:
/Users/Davide/Documents/Arduino/libraries/Nextion/examples/CompCrop/CompCrop.ino: In function 'void q0PopCallback(void*)':
/Users/Davide/Documents/Arduino/libraries/Nextion/NexConfig.h:42:29: error: 'dbSerial' was not declared in this scope
 #define dbSerialPrintln(a)  dbSerial.println(a)
                             ^
/Users/Davide/Documents/Arduino/libraries/Nextion/examples/CompCrop/CompCrop.ino:30:5: note: in expansion of macro 'dbSerialPrintln'
     dbSerialPrintln("q0PopCallback");
     ^
/Users/Davide/Documents/Arduino/libraries/Nextion/examples/CompCrop/CompCrop.ino: In function 'void setup()':
/Users/Davide/Documents/Arduino/libraries/Nextion/NexConfig.h:42:29: error: 'dbSerial' was not declared in this scope
 #define dbSerialPrintln(a)  dbSerial.println(a)
                             ^
/Users/Davide/Documents/Arduino/libraries/Nextion/examples/CompCrop/CompCrop.ino:45:5: note: in expansion of macro 'dbSerialPrintln'
     dbSerialPrintln("setup done");
     ^
exit status 1
Errore durante la compilazione per la scheda Arduino/Genuino Uno.

Questo report potrebbe essere più ricco di informazioni abilitando l'opzione
"Mostra un output dettagliato durante la compilazione"
in "File -> Impostazioni"

che mi sembra sovrapponibile all'altro....

Allora ...
... scaricata la libreria ITEADLIB_Arduino_Nextion-0.7.0.zip (che è la STABLE), scompattata, messa tra le mie librerie, caricato l'esempio CompCrop.ino (che mi sembra è lo stesso che stai cercando di compilare tu), selezionata come board Arduino MEGA (dato che l'esempio fa riferimento ad una Serial2 ... che su Arduino UNO non esiste) e ...

Sketch uses 5,146 bytes (2%) of program storage space. Maximum is 253,952 bytes.
Global variables use 539 bytes (6%) of dynamic memory, leaving 7,653 bytes for local variables. Maximum is 8,192 bytes.

... ovvero lo ha compilato senza errori.

Guglielmo

P.S.: e sono anche io su macOS 10.12.1 con IDE 1.6.12

Ora provo e ti dico subito...

Avevo visto delle modifiche per usarla su Arduino UNO, ma vabbè mi faccio andar bene anche il Mega!

dokke:
Avevo visto delle modifiche per usarla su Arduino UNO ...

Probabilmente basta lavorarci un po' e sostituire la VERA Serial2 con una VIRTUALE SoftwareSerial :wink:

Guglielmo

...è andata! Vuol dire che con Arduino UNO non si può usare, speriamo si possa usare in futuro perchè libera molti pin e per i progetti più semplici un UNO può bastare e avanzare!

Grazie mille del supporto! :wink: Proverò in un secondo momento ad usare la SoftwareSerial!

dokke:
Proverò in un secondo momento ad usare la SoftwareSerial!

Non è complesso, i metodi che la classe usa sono gli stessi della Serial, quindi, se fai una ricerca dove lui usa la Serial2 ... dovresti risolvere facilmente :slight_smile:

Guglielmo

... meglio ... basta LEGGERE il readme che accompagna la libreria :smiley:

Configuration

In configuration file NexConfig.h, you can find two macros below:

dbSerial: Debug Serial (baudrate:9600), needed by beginners for debug your nextion applications or sketches. If your complete your work, it will be a wise choice to disable Debug Serial.

nexSerial: Nextion Serial, the bridge of Nextion and your mainboard.

Note: the default configuration is for MEGA2560.

Redirect dbSerial and nexSerial

If you want to change the default serial to debug or communicate with Nextion , you need to modify the line in configuration file:

#define dbSerial Serial ---> #define dbSerial Serialxxx
#define nexSerial Serial2 ---> #define nexSeria Serialxxx
Disable Debug Serial

If you want to disable the debug information,you need to modify the line in configuration file:

#define DEBUG_SERIAL_ENABLE ---> //#define DEBUG_SERIAL_ENABLE

UNO-like Mainboards

If your board has only one hardware serial, such as UNO, you should disable dbSerial and redirect nexSerial to Serial(Refer to section:Serial configuration).

Guglielmo

Ho provato già prima di postare il topic, ad usare quel metodo: non mi ha funzionato....

Mah ... veramente ...

  1. commentando la riga dove definisce la seriale per il debug:
    // #define DEBUG_SERIAL_ENABLE

  2. definendo come seriale per il debug (che tanto non viene usata) la Serial2
    #define dbSerial Serial2

  3. definendo come seriale a cui è connesso il Nextion la Serial
    #define nexSerial Serial

... a me compila correttamente per Arduino/Genuino UNO.

Guglielmo

P.S.: Comunque non mi piace, avrei preferito che, sulla UNO, fosse stato direttamente possibile usare la SoftwareSerial, visto che spesso la Serial si usa proprio per il debug ... ::slight_smile:

Infatti... magari uno può fare lo sviluppo su una MEGA e poi usare una UNO, se la MEGA è troppo.... :wink: