Libreria MENWIZ ed LCD - errore di compilazione

Salve a tutti,
lavorando ad un progetto alquanto complesso, avrei bisogno di una libreria capace di gestire in modo asincrono menù complessi per un LCD I²C. Navigando, ho incontrato la libreria MENWIZ (pagina GitHub), che mi permetterebbe, da ciò che sostiene l’autore, di gestire menù in modo asincrono, con pulsanti preconfigurati, menù personalizzabili, preferenze gestite automaticamente e salvate nella EEPROM ed una gestione della memoria migliore rispetto alle altre librerie. Scaricata l’ultima versione, nella guida PDF contenuta nello ZIP ho letto:

The following libraries have to be included in the sketch:
· “new” LiquidCrystal Library by Francisco Malpartida. This library supports I2c, 4, 8 wires and other
lcd devices. the library is a drop replacement for the standard lib LiquidCrystal e LiquidCrystal_I2C.
The latest version can be found at https://bitbucket.org/fmalpartida/newliquidcrystal/
wiki/Home.
· Buttons compact library by Franky (see also “1.4 How to save memory space.” chapter)
· EEPROM library (one of Arduino the builtin libraries); (see also “1.4 How to save memory space”
chapter )
The first two libraries are provided inside the MENWIZ zip file and must be installed before the use of
MENWIZ.

Ho quindi decompresso REQUIRED_LIBRARIES.zip, prendendone le librerie e salvandole nella directory delle librerie assieme a MENWIZ. Siccome la “new” LiquidCrystal Library di Francisco Malpartida richiede (vedi sito libreria e guida PDF) che sia rimossa la libreria LiquidCrystal preinstallata (conflitto con i nomi dei file), ho fatto ciò. Non volendo cambiare il metodo di input (6 pulsanti con INPUT_PULLUP di default), ho aperto direttamente l’esempio quick_tour.ino; nella compilazione di quest’ultimo ho ricevuto un certo errore, descritto con precisione alla presente pagina: #include<…wire/wire.h> error using i2c lcd display. Sistemato l’errore come descitto da PaulS

Look at the I2CIO.cpp file. If it really says

#include <../Wire/Wire.h>

change it to

#include <Wire.h>

ho riavviato l’Arduino IDE 1.6.12 e ricompilato l’esempio. Questa volta l’errore non si è più presentato, anche se ne è giunto un altro, questa volta interno a MENWIZ, che purtroppo mi vedo costretto a non scrivere per non superare il limite di caratteri posto dal Forum. Se poi avete il coraggio e la voglia di leggere i logs, potete trovare 21 pagine di errori a catena QUI (documento Google). L’errore rende quindi la libreria inutilizzabile su nessuna board.

Codice:

//The full code is in library example file Quick_tour.ino
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#include <buttons.h>
#include <MENWIZ.h>
#include <EEPROM.h>

// DEFINE ARDUINO PINS FOR THE NAVIGATION BUTTONS
#define UP_BOTTON_PIN       9
#define DOWN_BOTTON_PIN     10
#define LEFT_BOTTON_PIN     7 
#define RIGHT_BOTTON_PIN    8
#define CONFIRM_BOTTON_PIN  12
#define ESCAPE_BOTTON_PIN   11

menwiz tree;
// create lcd obj using LiquidCrystal lib
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

int  list,sp=110;

void setup(){
  _menu *r,*s1,*s2;

  Serial.begin(19200);    
  tree.begin(&lcd,20,4); //declare lcd object and screen size to menwiz lib

  r=tree.addMenu(MW_ROOT,NULL,F("Root"));
    s1=tree.addMenu(MW_SUBMENU,r, F("Node1"));
      s2=tree.addMenu(MW_VAR,s1, F("Node3"));
        s2->addVar(MW_LIST,&list);
        s2->addItem(MW_LIST, F("Option1"));
        s2->addItem(MW_LIST, F("Option2"));
        s2->addItem(MW_LIST, F("Option3"));
      s2=tree.addMenu(MW_VAR,s1, F("Node4"));
        s2->addVar(MW_AUTO_INT,&sp,0,120,10);  
    s1=tree.addMenu(MW_VAR,r, F("Node2"));
      s1->addVar(MW_ACTION,myfunc);
       tree.navButtons(UP_BOTTON_PIN,DOWN_BOTTON_PIN,LEFT_BOTTON_PIN,RIGHT_BOTTON_PIN,ESCAPE_BOTTON_PIN,CONFIRM_BOTTON_PIN);
  }

void loop(){
  tree.draw(); 
  }

void myfunc(){
  Serial.println("ACTION FIRED");
  }

Ringrazio in anticipo, nella speranza che qualcuno sia in grado di aiutarmi nella compilazione dell’esempio.
SquareBoot

Buongiorno,
essendo il tuo primo post, nel rispetto del regolamento, ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione … possibilmente evitando di scrivere solo una riga di saluto) e di leggere con attenzione il su citato REGOLAMENTO … Grazie. :slight_smile:

Guglielmo

Presentato. Continuando con le prove, non sono riuscito ancora a capire cosa mi impedisce di usare MENWIZ.

Hai visto che in Megatopic c'è un thread di svariate pagine dedicato alla libreria ? QUESTO ...

Guglielmo

Sì, l'ho visto, solo che non vedo nessuno che parla di errori di compilazione simili al mio (e comunque il Megatopic non viene toccato da inizio settembre...).

Hai provato con l'ultima versione della MENWIZ ?

https://github.com/brunialti/MENWIZ_1_3_2

Ho visto già tempo fa quella pagina, però non mi sono fidato del fatto che è una beta, quindi forse instabile (sto infatti usando l’ultimo release stabile). Ora la proverò e vi farò sapere.
Grazie dell’attenzione

Niente. O meglio, peggio. Ho cancellato le vecchie REQUIRED_LIBRARIES per sostituirle con quelle della beta, ho aggiornato MENWIZ alla versione 1.3.2, sistemato nuovamente l'errore della libreria LCD (Wire.h) e aperto l'IDE. Ho copiato ed incollato l'esempio dal PDF della guida (guida per la beta), compilato e...

Uso la libreria Wire alla versione 1.0 nella cartella: C:\Users\Marco\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.14\libraries\Wire 
Uso la libreria LiquidCrystal nella cartella: C:\Users\Marco\Desktop\Arduino\Arduino IDE\libraries\LiquidCrystal (legacy)
Uso la libreria Buttons nella cartella: C:\Users\Marco\Desktop\Arduino\Arduino IDE\libraries\Buttons (legacy)
Uso la libreria MENWIZ nella cartella: C:\Users\Marco\Desktop\Arduino\Arduino IDE\libraries\MENWIZ (legacy)
Uso la libreria EEPROM alla versione 2.0 nella cartella: C:\Users\Marco\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.14\libraries\EEPROM 
exit status 1
'class menwiz' has no member named 'navButtons'

Errore alla riga dell'esempio

tree.navButtons(UP_BOTTON_PIN, DOWN_BOTTON_PIN, LEFT_BOTTON_PIN, RIGHT_BOTTON_PIN, ESCAPE_BOTTON_PIN, CONFIRM_BOTTON_PIN);

Come è possibile? In MENWIZ.cpp esiste veramente navButtons! Perfino nella guida (non quella vecchia, ovviamente) si fa riferimento a questa funzione!

Anche se da regolamento, il cross-posting è proibito, in questo caso ti chiedo io di porre lo stesso quesito nel thread che si trova in Megatopic ... ... quello brunialti lo segue, mentre questo qui magari gli sfugge ;)

Se la discussione di la parte e ricevi risposte, poi io questo lo chiudo e lo cancello :)

Guglielmo

Sarà fatto.
Grazie di tutto lo stesso.