Pages: 1 ... 11 12 [13] 14 15   Go Down
Author Topic: MENWIZ: una libreria per creare menu su LCD  (Read 26394 times)
0 Members and 1 Guest are viewing this topic.
Switzerland
Offline Offline
Faraday Member
**
Karma: 115
Posts: 5991
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bassfender ...
... cosa c'è che non ti è chiaro in quello che ha scritto qua sopra Paolo :

Per domande che non riguardano specificatamente la libreria apri un topic nella sezione Generale, oppure in Hardware o Software.
Se fai una ricerca sul forum (http://forum.arduino.cc/index.php?action=search;advanced), su google o nel playground (http://playground.arduino.cc/) troverai tantissimi esempi.

... quindi ...  smiley-roll

Guglielmo
Logged

Search is Your friend ... or I am Your enemy !

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao Guglielmo, io volevo capire come la libreria vede i bottoni, cioè la libreria è predisposta per i 4 o 6 bottoni, ma dove li dichiara i pin ??? un semplice schema non sarebbe male allegato alla libreria.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

questo è il codice in libreria:

// BUTTON CODES
// ---------------------------------------------------------------------------
#define MW_BTNULL      0   //NOBUTTON
#define MW_BTU         2   //UP
#define MW_BTD         3   //DOWN
#define MW_BTL         4   //RIGTH
#define MW_BTR         5   //LEFT
#define MW_BTE         6   //ESCAPE
#define MW_BTC         7   //CONFIRM

// ------------------
 

i numeri si riferiscono ad i pin digitali di arduino ?
« Last Edit: March 12, 2014, 10:48:17 am by bassfender » Logged

rome
Offline Offline
Sr. Member
****
Karma: 17
Posts: 487
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

suggerimento:
non saltare le tappe. Scordati per il momento menwiz. Fai uno sketch semplice semplice con un bottone e un led.
Quando funziona ritorna a considerare la libreria.  Questo veramente è un topic dedicato alla sola libreria e non un corso introduttivo ad Arduino. Dico questo non per scoraggiarti nè in tono polemico, ma solo perchè se non apprendi le basi non ti puoi muovere su progetti più complessi.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

grazie, ma io tempo fa con arduino riuscivo a gestire schede ethernet e a collegarmi da remoto, è solo che per qunato ho visto la tua libreria legge lo stato analogico del PIN A0 e quindi non usa pin digitali .. o mi sbaglio ?
Logged

rome
Offline Offline
Sr. Member
****
Karma: 17
Posts: 487
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

i pushbutton usano i pin analogici.
La libreria buttons.h fornita insieme alla libreria menwiz gestisce i bottoni.
Bisogna mappare i pin analogici utilizzati e dichiararli alla libreria menwiz, che poi chiamerà la libreria buttons a sua volta.
Tale mappatura si fa con la chiamata
 
Code:
menu.navButtons(UP_BUTTON_PIN,DOWN_BUTTON_PIN,LEFT_BUTTON_PIN,RIGHT_BUTTON_PIN,ESCAPE_BUTTON_PIN,CONFIRM_BUTTON_PIN);
 
dove si passano i "numeri" dei pin analogici che si sono utilizzati per i bottoni.

tutorial base per 1 pushbutton
http://arduino.cc/en/Tutorial/Button#.UyBFAfl5NOg
più bottoni:
http://www.ladyada.net/learn/arduino/lesson5.htm
Se poi si vuole utilizzare un altro device invece dei semplici bottoni (p.es. un keypad) ... bisogna legegre il manuale e fare una ricerca sul forum o leggere anche questo topic, un paio di pagine indietro...
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

quindi in:

menu.navButtons(UP_BUTTON_PIN,DOWN_BUTTON_PIN,LEFT_BUTTON_PIN,RIGHT_BUTTON_PIN,ESCAPE_BUTTON_PIN,CONFIRM_BUTTON_PIN);

metti il valore di resistenza associato ad ogni bottone ?
Logged

rome
Offline Offline
Sr. Member
****
Karma: 17
Posts: 487
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

... metti, come suggerito dal nome dei parametri, il pin di Arduino su cui attesti ciascun pushbutton.
Comunque se non provi a usare i pushbutton indipendentemente da menwiz, capendo come funzionano e come usare i pin analogici di Arduino, seguendo i link che ti ho dato o altri che troverai googlando è inutile continuare a chiedere aiuto su questo topic.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

un ultimissima cosa, leggendo su internet il define si usa per definire una costantname in un constant value,

quando fai define UP_Button_Pin 9 non stai definendo il pin a cui è collegato il pulsante di up ? E quindi non sono più analogici ?
Logged

rome
Offline Offline
Sr. Member
****
Karma: 17
Posts: 487
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ouch! I pushbutton sono connessi con pin digitali. In alcuni casi i pin analogici vengono usati come digitali quando necessario.... come sto facendo io in questo momento ..) ma questa è un'altra storia....
Logged

0
Offline Offline
Faraday Member
**
Karma: 47
Posts: 5987
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

credo si stia incasinando sui due metodi possibili per usare dei bottoni. Visto che lui parla di resistenze credo si riferisca all'uso di bottoni paralleli ad una serie di resistenze, e la lettura degli stessi con un unico incresso analogico.
La tua libreria gestisce gia' di per se questo tipo di connessione ?
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

rome
Offline Offline
Sr. Member
****
Karma: 17
Posts: 487
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

la prima cosa che fa menwiz "standard" è quella di verificare se e quale bottone è stato premuto, tramite la seguente funzione "built in":

Code:
int menwiz::scanNavButtons(){

  if(btx->BTU.check()==ON){
    return MW_BTU;}
  else if (btx->BTD.check()==ON){
    return MW_BTD;}
  else if (btx->BTL.check()==ON){
    return MW_BTL;}
  else if (btx->BTR.check()==ON){
    return MW_BTR;}
  else if (btx->BTE.check()==ON){
    return MW_BTE;}
  else if (btx->BTC.check()==ON){
    return MW_BTC;}
  else
    return MW_BTNULL;
  }
Per far conoscere a menwiz quali sono i pin che utilizzo per i bottoni (mappatura) devo usare in setup la seguente funzione:
menu.navButtons(UP_BUTTON_PIN,DOWN_BUTTON_PIN,LEFT_BUTTON_PIN,RIGHT_BUTTON_PIN,ESCAPE_BUTTON_PIN,CONFIRM_BUTTON_PIN);


se un utente invece dei bottoni "standard" vuol usare una altra modalità/device deve semplicemente riscrivere una funzione come la precedente che ritorni gli stessi valori con logica di gestione "custom". Per esempio se voglio usare una keypad 4x4  scriverò la seguente funzione


Code:
int menuKeys()
{
  char keyPressed = customKeypad.getKey(); // read the keypad to see if a key has been pressed
 
  switch (keyPressed)
  {
    case NO_KEY:
      return MW_BTNULL; // no key pressed
    case '2':
      return MW_BTU; // key 2 pressed for direction UP
    case '8':
      return MW_BTD; // key 8 pressed for direction DOWN
    case '4':
      return MW_BTL; // key 4 pressed for direction LEFT
    case '6':
      return MW_BTR; // key 6 pressed for direction RIGHT
    case '*':
      return MW_BTE; // key * pressed for ESCAPE
    case '#':
      return MW_BTC; // key # pressed for CONFIRM
  }
}
per "dire" a menwiz che deve usare la mia funzione e non quella "built in" in setup devo usare al posto della chiamata a navButtons di cui sopra il metodo
menu.addUsrNav(menuKeys,6);

Questo fa si che menwiz non chiami più la funzione "built in" ma chieami quella definita dall'utente.

Un caso particolare è quello in cui per risparmiare pin di Arduino si utilizzi un solo pin analogico associndo a ciascun bottone una resistenza di valore noto e differente per ciascun botton, che permette, misurando il valore del pin analogico, di capire quale tasto è stato premuto sulla base del valore di input. esempi di utilizzo di questo metodo ce ne sonmo nei topics su menwiz in inglese, con esempi di scrittura della funzione "custom" che comunque è abbasAtnza semplice (come vedi tutto si riduce a poche righe di codice). Io non ho però un esempio disponibile, ma ne sono stati messi in linea.

Spero di essere stato chiaro.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Perfetto ... è quello che cercavo di capire ... mi leggo il forum in inglese.

Testato aveva capito la mia esigenza, ovvero usare un pin analogico per non avere troppi pin occupati per una semplice lettura di tasto. Grazie.Mille.
Logged

rome
Offline Offline
Sr. Member
****
Karma: 17
Posts: 487
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Vai in questo topic.
potrai trovare sia il codice che lo schema. E' per 4 bottoni, ma estenderla dovrebbe essere banale.
C'è anche il debouncing.

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

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Perfetto smiley ... ache se nell esempio iniziale mettono:

#define KEY_UP 1
#define KEY_CONFIRM 2
#define KEY_DOWN 3
#define KEY_ESCAPE 4
#define KEY_NONE 11

e poi alla fine del post non lo mettono, se è analogico non aveva senzo mettere questi define.
Logged

Pages: 1 ... 11 12 [13] 14 15   Go Up
Jump to: