Go Down

Topic: MENWIZ: una libreria per creare menu su LCD (Read 101731 times) previous topic - next topic

carlottavalente

mmmmmmmm..... e strano?

dai ragazzi qualcuno puo' darmi una mano?  :'(

testato

Non posso che quotare quanto già suggeritoti da nid69
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

carlottavalente

buongiorno ragazzi non riesco a superare questo scoglio


Documents\Arduino\libraries\MENWIZ\MENWIZ.cpp:720:12: warning: case label value exceeds maximum value for type [enabled by default]

       case 900: Serial.println(F("E900-Out of memory"));break;


            ^
AppData\Local\Temp\arduino_modified_sketch_246494\Test_all_var_types.ino:7:0:
Documents\Arduino\libraries\MENWIZ/MENWIZ.h:32:17: fatal error: LCD.h: No such file or directory

 #include <LCD.h>

exit status 1
Errore durante la compilazione per la scheda Arduino/Genuino Mega or Mega 2560.

carlottavalente

@nid69 utilizzo un keypad con 6 tasti collegati in analogico display 16x2

brunello22


carlottavalente

#230
Jun 01, 2016, 01:07 pm Last Edit: Jun 01, 2016, 01:12 pm by carlottavalente
si esatto... collegato ai pin 46, 48, 56, 60, 61, 62 della ramp 1.4 i tasti al pin 13 che corrisponde ad un pin analogico

brunello22

ti rispondo nel tuo topic, non inquiniamo questo

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

Teo2086

Ciao a tutti, vorrei realizzare un menù sul LCD che controlla una centralina per un miscelatore che sto realizzando.
Ho trovato questa libreria ma non riesco a far funzionare nemmeno un esempio...

Il problema è proprio alla base il collegamento con LCD.
Ho aggiunto le librerie extra che richiede, quelle che si trovano nello zip REQUIRED_LIBRARIES.zip ma anche con quelle nulla da fare.

Prima avevo un errore sul file I2CIO.cpp che cercava #include <../Wire/Wire.h> corretto in wire.h compila correttamente ma se carico su Arduino LCD inizia a flashare e non scrive nulla.

LCD che vorrei usare è questo LCD 20x4 con controller PCF8574AT

Questo il codice che riesco a compilare ma che manda in crisi l'LCD....

Code: [Select]

#include <FastIO.h>
#include <I2CIO.h>
#include <LCD.h>
#include <LiquidCrystal.h>
#include <LiquidCrystal_I2C.h>
#include <LiquidCrystal_SR.h>
#include <LiquidCrystal_SR2W.h>
#include <LiquidCrystal_SR3W.h>

#define BACKLIGHT_PIN     13

LiquidCrystal_I2C lcd(0x3F);  // Set the LCD I2C address

//LiquidCrystal_I2C lcd(0x38, BACKLIGHT_PIN, POSITIVE);  // Set the LCD I2C address


// Creat a set of new characters
const uint8_t charBitmap[][8] = {
   { 0xc, 0x12, 0x12, 0xc, 0, 0, 0, 0 },
   { 0x6, 0x9, 0x9, 0x6, 0, 0, 0, 0 },
   { 0x0, 0x6, 0x9, 0x9, 0x6, 0, 0, 0x0 },
   { 0x0, 0xc, 0x12, 0x12, 0xc, 0, 0, 0x0 },
   { 0x0, 0x0, 0xc, 0x12, 0x12, 0xc, 0, 0x0 },
   { 0x0, 0x0, 0x6, 0x9, 0x9, 0x6, 0, 0x0 },
   { 0x0, 0x0, 0x0, 0x6, 0x9, 0x9, 0x6, 0x0 },
   { 0x0, 0x0, 0x0, 0xc, 0x12, 0x12, 0xc, 0x0 }
   
};

void setup()
{
   int charBitmapSize = (sizeof(charBitmap ) / sizeof (charBitmap[0]));

  // Switch on the backlight
  pinMode ( BACKLIGHT_PIN, OUTPUT );
  digitalWrite ( BACKLIGHT_PIN, HIGH );
 
  lcd.begin(20,4);               // initialize the lcd

   for ( int i = 0; i < charBitmapSize; i++ )
   {
      lcd.createChar ( i, (uint8_t *)charBitmap[i] );
   }

  lcd.home ();                   // go home
  lcd.print("Hello, ARDUINO "); 
  lcd.setCursor ( 0, 1 );        // go to the next line
  lcd.print (" FORUM - fm   ");
  delay ( 1000 );
}

void loop()
{
   lcd.home ();
   // Do a little animation by writing to the same location
   for ( int i = 0; i < 2; i++ )
   {
      for ( int j = 0; j < 16; j++ )
      {
         lcd.print (char(random(7)));
      }
      lcd.setCursor ( 0, 1 );
   }
   delay (200);
}


Qualcuno ha qualche idee su come posso risolvere???

Grazieeeeee

SquareBoot

Salve a tutti,
lavorando ad un progetto alquanto complesso, sto cercando di usare MENWIZ per gestire i menù di un LCD I²C. Scaricata l'ultima versione, nella guida PDF contenuta nello ZIP ho letto:

Quote
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

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

Code: [Select]
#include <../Wire/Wire.h>
change it to

Code: [Select]
#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:
Code: [Select]
//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");
  }


Detto questo, ho aggirato il problema usando la versione 1.3.2 beta di MENWIZ.
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...

Code: [Select]
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
Code: [Select]
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 (v. 1.3.2) esiste veramente navButtons! Perfino nella guida (non quella vecchia, ovviamente) si fa riferimento a questa funzione!
Ringrazio in anticipo, nella speranza che qualcuno sia in grado di aiutarmi nella compilazione dell'esempio (beta o meno).
SquareBoot

nid69ita

#234
Dec 06, 2016, 11:28 am Last Edit: Dec 06, 2016, 11:29 am by nid69ita
Se guardi dentro il file .h, vedrai che quel comando è opzionale:
#ifdef BUTTON_SUPPORT

infatti all'inizio del file .h si legge:
//#define BUTTON_SUPPORT     //comment if you do'nt want to use the Button methods!

my name is IGOR, not AIGOR

marco3020

Buongiorno a tutti ho una domanda per Brunialti la versione Menwizz che hai postato funziona con la ide 1.65 ? perche a me da tantissimi errori grazie in anticipo

Bitsfromitaly

Buongiorno, sto dando un'occhiata ai vari metodi per gestire i menu su arduino ed ho incontrato questa libreria.

A me servirebbero le seguenti funzioni che non ho trovato esplicitamente supportate:

1. l'utente sceglie una funzione dal menu, avvio la funzione con visualizzazione a display di alcune funzioni, a funzione ultimata il menu ritorna visibile ed utilizzabile
2. una delle funzioni richiede l'avvio di un loop comandato da pulsante: da menu scelgo la funzione ed una volta avviata la comando con un'altra coppia di pulsanti (tipo start/stop) ... allo stop si torna al menu visibile ed utilizzabile.

Menwiz gestisce queste due funzioni?

Ringrazio anticipatamente!

arduale

ciao a tutti,
vorrei chiedervi se secondo voi questa libreria potrebbe fare al caso mio, oppure se è sprecata, data la semplicità di quello che devo fare.

in pratica vorrei usare 2 pulsanti, uno per selezionare e uno per dare l'ok. ad ogni pressione del pulsante SEL, appaiono ciclicamente dei numeri, mentre quando premo OK, viene memorizzato il numero visualizzato in una variabile. serve per selezionare la freq di campionamento di un data logger che sto cercando di fare.

al momento ho quasi risolto con l'utilizzo di una funzione che usa digitalRead sui due pulsanti, ma ho ancora qualche problemino. vale la pena che mi metta a studiare questa libreria, second voi?

grazie!

testato

io direi di no, perche' il tuio caso e' molto semplice, ed in piu' questa libreria non viene aggiornata da tempo ed ha qualche rpoblema con i nuovi ide
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Go Up