MENWIZ: una libreria per creare menu su LCD

eddigei:
meglio in italiano :smiley: cmq si l ho usata quella libreria ma purtroppo ho lo stesso problema.. può essere linux?

Occhio che quella nuova la puoi mettere sotto
H:\Arduino_projects\libraries (librerie tue o non fornite con l'IDE)
ma quella vecchia sotto:
H:\Arduino\arduino-IDE\libraries (librerie fornitote con l'IDE)
la devi eliminare

brunialti:
EDIT ho usato la ide 1.5.3 beta Funziona. Ho notato che evidentemente hanno aggiornato la toolchain perchè la dimensione finale dell'esempio è molto più piccola. O è la digestione ]:smiley:

Creerai anche la libreria nel nuovo formato?

Certo. Solo devo verificare la retrocompatibilita. Non vorrei che chi utilizza le versioni precedenti dell Ide abbia problemi.

Non c'è retrocompatibilità.
Per il momento la vecchia struttura funziona anche sulla 1.5.3. Più avanti, molto più avanti, non verrà più accettata.
Se decidi di creare una libreria modello 1.5.3 dovrai averne anche una seconda per la serie 1.0.5 e aggiornarle in contemporanea.

... mi hai convinto. Vecchio formato ....

PaoloP:
Non c'è retrocompatibilità.
Per il momento la vecchia struttura funziona anche sulla 1.5.3. Più avanti, molto più avanti, non verrà più accettata.
Se decidi di creare una libreria modello 1.5.3 dovrai averne anche una seconda per la serie 1.0.5 e aggiornarle in contemporanea.

[OT]
Doppia fatica per chi come me fa diverse lib... mi tocca convertire tutto anche per l'IDE 1.5... :sweat_smile:

PaoloP:
Non c'è retrocompatibilità.
Per il momento la vecchia struttura funziona anche sulla 1.5.3. Più avanti, molto più avanti, non verrà più accettata.
Se decidi di creare una libreria modello 1.5.3 dovrai averne anche una seconda per la serie 1.0.5 e aggiornarle in contemporanea.

Scusa, dove si può leggere come deve essere la struttura delle nuove librerie?
Un link per favore, non trovo nulla :blush:

--> Arduino IDE 1.5: Library specification · arduino/Arduino Wiki · GitHub
Poi scarica l'IDE 1.5.3 e guarda le nuove librerie create dal Team. Si impara di più.

Salve a tutti.

Mi sono affacciato da poco al mondo Arduino e, al momento, sto programmando un Arduino Mega.
:slight_smile: Complimenti per l'ottima gestione del forum e dei consigli e delle soluzioni che vengono elargiti a chi ha dei problemi, spesso risolvendo in tempi brevi quello che ci farebbe perdere del tempo prezioso nella programmazione.

Vorrei chiedere:
Utilizzo un display da 7" con le librerie UTFT ed UTFT_CTE, con queste istruzioni:

UTFT myGLCD(CTE70,38,39,40,41);
UTFT_CTE CTE_LCD(&myGLCD);

posso usare la libreria MenWiz?

Se si, cosa devo cambiare?

Grazie

Enzo1947:
...
posso usare la libreria MenWiz?
...

Se leggi da QUI in poi, vedrai che molto probabilmente è NO, non la puoi usare senza modifiche al codice ... :roll_eyes:

Guglielmo

Confermo. Non si può usare Menwiz.
Bisognerebbe riscrivere le funzioni di visualizzazione e di inizializzazione.
In realtà la visualizzazione è completamente staccata dalla gestione (creazione del menu e logica di navigazione) ma sono anche le funzioni più rognose...
Chissa magari in futuro...

Grazie delle risposte.

Un'altra domanda.
La nuova libreria LiquidCrystal, supporta i display grafici con risoluzione 800x480?

Grazie

La "famiglia" di librerie liquidCrystal supporta solo LCD a caratteri.
Ci sono molte librerie grafiche, ma non avendone mai usata una non ti so consigliare.
Può essere utile seguire questo thread:

http://forum.arduino.cc/index.php?topic=187761.0

Apri un topic nella sezione generale e cancella questo.
Grazie.

Da quello che ho capito hai problemi di gestione del display che vengono prima della gestione del menù con la libreria di Bruno.
Quindi il tuo post qui non ci azzecca (cit.). :sweat_smile:
Una volta risolto quello allora potrai proseguire qui per problemi specifici di questa libreria.

ci provo... visto che è la libreria LiquidCrystal...
prova a sostituire
LiquidCrystal_I2C lcd(0x20); // Set the LCD I2C address

con
LiquidCrystal_I2C lcd(0x20 , BACKLIGHT_PIN, POSITIVE) oppure
LiquidCrystal_I2C lcd(0x20, BACKLIGHT_PIN, NEGATIVE)

.... fammi sapere :slight_smile:

No, purtroppo non funziona. Uguale a prima :~

Però mi viene un serio dubbio: seguendo sempre lo schema preso dal sito postato sopra, al PIN 13 di Arduino non arriva niente. Potrebbe essere questo il problema?

Come suggerito dal moderatore ho aperto un nuovo topic sulla sezione generale:
http://forum.arduino.cc//index.php?topic=193882.0

Analizzando la parte dove vengono analizzati i pin di arduino collegati ai pulsanti:

// DEFINE ARDUINO PINS FOR THE NAVIGATION BUTTONS
#define UP_BUTTON_PIN       9
#define DOWN_BUTTON_PIN     10
#define LEFT_BUTTON_PIN     7 
#define RIGHT_BUTTON_PIN    8
#define CONFIRM_BUTTON_PIN  12
#define ESCAPE_BUTTON_PIN   11

è possibile battezzare invece dei pin 9, 10, 7, 8, 12, 11, degli ingressi di un PCF8574 tipo P0, P1, P2 ....?
Ad esempio, in questo 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>
#include <IOexp.h>


#define IO_ADDR (0x21)  //Definisco l'indirizzo del pcf8574 dei bottoni
IOexp myIOexpander(IO_ADDR);

// 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(0x20);

int  list,sp=110;

void setup(){
  _menu *r,*s1,*s2;
  
  Wire.begin(); // join i2c bus (address optional for master) 
  
  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(); 
  
  int data;
  bool bool1, bool2, bool3, bool4, bool5, bool6; // the bool vars bool1 and bool2 are to store the status of the Inputs we wish to read.
  Serial.print("teste ! ");
  bool1 = myIOexpander.read(P0);
  bool2 = myIOexpander.read(P1);
  bool3 = myIOexpander.read(P2);
  bool4 = myIOexpander.read(P3);
  bool5 = myIOexpander.read(P4);
  bool6 = myIOexpander.read(P5);
  Serial.print(bool1);
  Serial.print(" ");
  Serial.print(bool2);
  Serial.print(" ");
  Serial.print(bool3);
  Serial.print(" ");
  Serial.print(bool4);
  Serial.print(" ");
  Serial.print(bool5);
  Serial.print(" ");
  Serial.print(bool6);
  Serial.print(" \n ");
  delay(500); 
  
  }

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

ho unito l'esempio della libreria MENWIZ con l'esempio della libreria IOexp e quello che ottengo è di vedere il menu sul display collegato al primo PCF8574, e di poter cambiare lo stato degli ingressi (da alto a basso) di un secondo PCF8574 e visualizzarli sul monitor seriale.
Considerando il secondo codice che ho postato, vorrei capire se si può fare una cosa di questo tipo con la giusta sintassi:

#define UP_BOTTON_PIN       myIOexpander.read(P0)
#define DOWN_BOTTON_PIN     myIOexpander.read(P1)
#define LEFT_BOTTON_PIN     myIOexpander.read(P2)
#define RIGHT_BOTTON_PIN    myIOexpander.read(P3)
#define CONFIRM_BOTTON_PIN  myIOexpander.read(P4)
#define ESCAPE_BOTTON_PIN   myIOexpander.read(P5)

Nessuno ha qualche idea su come poter sfruttare un pcf8574 per i pulsanti?

E' un integrato che si pilota via I2C (quindi libreria Wire) e su cui trovi su internet migliaia di esempi :wink:
Uno a caso: