Pages: [1] 2 3 ... 15   Go Down
Author Topic: Menu for Display  (Read 14323 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Sr. Member
****
Karma: 2
Posts: 433
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi All,
do you know something simply procedure to implement for inizialize arduino from a keypad and display the on a display ?

I'm trying to find a base code from start to implement it,

thanks in advance,

Andrea
Logged

East Anglia (UK)
Offline Offline
Faraday Member
**
Karma: 114
Posts: 4225
May all of your blinks be without delay()
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Did the keypad (make/model ?) come with any example programs ?
What do you mean by "inizialize arduino from a keypad" ?
Logged

Please do not send me PMs asking for help.  Post in the forum then everyone will benefit from seeing the questions and answers.

Offline Offline
Sr. Member
****
Karma: 2
Posts: 433
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Yes I'm using the Keypad.h with Adafruit Keypad,

So My focus is built a sketch that for example when I push * appear the menu i then i start to set my parameters,

thanks
Andrea
Logged

Offline Offline
Sr. Member
****
Karma: 2
Posts: 433
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok thanks,
what I was thinking to was to implement a case with if etc etc,
but If is there more simply routines to call should better and more inside the software i thinks, i will check and then I'll to you know,

regards,
gnux
Logged

Offline Offline
Sr. Member
****
Karma: 2
Posts: 433
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I've tried to something with Library Menu but I retrieve several issues with the library ...

:-(

I will see the other suggestion ...

regards,
Andrea
Logged

Germany
Offline Offline
Edison Member
*
Karma: 136
Posts: 1479
If you believe something is right, you won't see what's wrong (David Straker).
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

liudr has once started a new section in playground:
http://playground.arduino.cc//Main/InterfacingWithHardware#ui

I also made a list of menu tools some time ago:
Library Name:             LCDMenu2
Download:             http://arduino.cc/forum/index.php/topic,73816.0.html

Library Name:             LCDMenu
Download:             http://arduino.cc/forum/index.php/topic,96104.0.html

Library Name:             MenuBackend
Download:             http://wiring.uniandes.edu.co/source/trunk/wiring/firmware/libraries/MenuBackend/

Library Name:             LCDMenu
Download:             http://www.metalgecko.com/arduino/LCDMenu.zip (does not exist any more)

Library Name:             Arduino_LCD_Menu
Download:             https://github.com/DavidAndrews/Arduino_LCD_Menu

Library Name:             MENWIZ
Download:             https://github.com/brunialti/MENWIZ

Library Name:             phi_prompt
Download:             http://liudr.wordpress.com/libraries/phi_prompt/

Library Name:             MenuSample
Download:             http://sourceforge.net/projects/arduinowifly/files/MenuSample/

Library Name:             M2tklib
Download:             http://code.google.com/p/m2tklib/

Library Name:             OpenMoCo Menu Manager
Download:             http://arduino.cc/forum/index.php/topic,131614.0.html, http://dynamicperception.com/software/openmoco-avr-libraries


I can say that discussions on MENWIZ and phi_prompt had been very active on the Display forum. I also get a lot of feedback on my own menu lib (M2tklib) and you are always wellcome to contact me if you have any trouble with M2tklib.

Oliver
Logged

Offline Offline
Sr. Member
****
Karma: 2
Posts: 433
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

If you want I can try to use your library for the menu "M2tklib" in this way will be happy togheter :-) ... so i'll learn how to use the menu and you maybe you i'll can be to improve your library ...

So, with the menu I'm starting from zero point ... anyway i'll download the library and I'll start try to understand how it's working ...

thanks in advance,

gnux
Logged

Offline Offline
Sr. Member
****
Karma: 2
Posts: 433
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

So, for start I've available 2 kind of display,

- the first one is  a LCD (4 Rows with 20 character) --> 7 pins
- the second one is a LCD (2 Rows with 16 character) --> 2 pin I2C bus

Which is the best and simple to use :-) ?

Thanks
Gnux
Logged

Germany
Offline Offline
Edison Member
*
Karma: 136
Posts: 1479
If you believe something is right, you won't see what's wrong (David Straker).
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

With M2tklib only LiquidCrystal lib is supported, so you need to use your 7 pin 4x20 LCD.
Also take care to download M2tklib for LiquidCrystal.

Oliver
Logged

Offline Offline
Sr. Member
****
Karma: 2
Posts: 433
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi,
I've downloaded:

- m2tklib_arduino_lc_1.09.zip

and now I'm looking the examples,

MENU 2L

So, I've understand how structered the menu ..., for the input I've available a keypad that has the characters from 0 to 9 plus * and #

Could i use it ?

if yes how I can define the push button ? and how I can call the right procedure ?

thansk :-) you see that I'm very young with that :-)
Logged

Germany
Offline Offline
Edison Member
*
Karma: 136
Posts: 1479
If you believe something is right, you won't see what's wrong (David Straker).
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi

Input:

By default M2tklib supports aktive low push buttons: Connect an Arduino pin to a push button and the other end of the push button to ground.

A keypad can be used, but you need to define your own "event source", which is not really described at the moment. Let me know if your really want to use your keypad. In this case we need to study the datasheet for the keypad and write a specific event source.

Another way is to simulate input by using the serial monitor.
With the serial monitor you can test your menus without extra input hardware. Instead, input on the serial monitor is used to navigate through the menues. For example look at the Combo.pde:
You will find the following line:
Code:
M2tk m2(&list_element, m2_es_arduino, m2_eh_2bs, m2_gh_lc);
Add "_serial" to the event source:
Code:
M2tk m2(&list_element, m2_es_arduino_serial, m2_eh_2bs, m2_gh_lc);
This enables the serial monitor to navigate through the menu. Remember to activate the serial monitor in your Arduino IDE.
This can be done for all examples, and of course it might be a good starting point for your projects, if you have not yet decided which hardware buttons to use.

Learning M2tklib:

Looking at the examples is a good starting point. And it seems that the examples are already working (I am glad the M2tklib works in your environment). I also suggest to look at the first three tutorials:

Tutorial 1: General setup
Tutorial 2: How to apply the above mentioned push buttons
Tutorial 3: How to build a simple menu/dialog
I also suggest to read
Tutorial 7: How to use the serial monitor interface
as mentioned above for quick success without additional input hardware

Oliver
Logged

Offline Offline
Sr. Member
****
Karma: 2
Posts: 433
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Thanks Oliver,
Then I need to define 2 push button in arduino correct ?

and I not understood bad i can test my menu into Arduino serial monitor without lcd before to deploy it with the display,
this I think it's very useful ...

So, I will read the documentation and then I'll start immediately ...
So i think that for the moment I can implement 2 button without problem for be more confortable ... what do you mean ? Then when I'll be able to manage it maybe we can pass to keypad ...


Thanks for your precious support,
Andrea
Logged

Offline Offline
Sr. Member
****
Karma: 2
Posts: 433
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi Oliver,
So, after reading your indication I've seen how to proceed more or less but I've some question for you. I'd Like to structure my Menu in this way:

Menu --> Activate pushing "Select"
  - "Date/Time 1"
      ". Set D/T 1-1"
      ". View D/T 1-2"

  - "Timer 2":
     ". E/D 2-1"
     ". Sel. Dev. 2-2"
     ". Start  D/T 2-3"
     ". Stop D/T 2-4"

    
for the moment i think should be enough :-)

But the problem is how to do that ? How i can call the procedure, Retrive Value etc?

thanks
Gnux

    
  
  
« Last Edit: January 18, 2013, 08:33:51 am by gnusso » Logged

Germany
Offline Offline
Edison Member
*
Karma: 136
Posts: 1479
If you believe something is right, you won't see what's wrong (David Straker).
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi

M2tklib requires at least 2 buttons. Make sure that you use the correct event handler. With two buttons, the "2bs" handler.
Existing event handler are described here http://code.google.com/p/m2tklib/wiki/fnref#M2tk.

With M2tklib you can describe a dialog / user entry form. Such a form is composed of several elements. These elements have a hierarchie, including one element, which is the root element.

In tutorial 2 (http://code.google.com/p/m2tklib/wiki/t03) you see the following user entry form:

Code:
void fn_ok(m2_el_fnarg_p fnarg) {
  /* do something with the number */
}
M2_LABEL(el_label, NULL, "Num: ");
M2_U32NUM(el_num, "a1c4", &number);
M2_BUTTON(el_ok, "", " ok ", fn_ok);
M2_LIST(list) = { &el_label, &el_num, &el_ok };
M2_HLIST(top_el_hlist, NULL, list);

The root element is "top_el_hlist", it contains "list" and list contains "el_label", "el_num" and "el_ok". So, basically it looks like this:
HLIST
  - LABEL
  - U32NUM
  - BUTTON

The toplevel element "top_el_hlist" is the most important element. If you want to display this complete dialog  box, you must make the toplevel element "top_el_hlist" the so called "root" element.

Making a toplevel element as a root element is just like jumping to this dialog box. There are several ways to make an element the root element: M2_ROOT or m2.setRoot() are two common options. The 2L-Menu element is another option to make other elements the root element. Just add the root element next to the menu title (including &). See the example pde.

Oliver






Logged

Germany
Offline Offline
Edison Member
*
Karma: 136
Posts: 1479
If you believe something is right, you won't see what's wrong (David Straker).
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Here is an example for a date entry dialog box:
Code:
/*=========================================================================*/
/* edit date dialog */

uint8_t dt_day;
uint8_t dt_month;
uint8_t dt_year;

void dt_get_from_RTC(void)
{
  RTC.getTime();
  dt_day = RTC.day;
  dt_month = RTC.month;
  dt_year = (RTC.year-2000);
}

void dt_put_to_RTC(void)
{
  RTC.getTime();
  RTC.fillByYMD(dt_year+2000, dt_month, dt_day);
  RTC.setTime();
  RTC.startClock(); 
}

void dt_ok_fn(m2_el_fnarg_p fnarg)
{
  dt_put_to_RTC();
  m2.setRoot(&el_top);
}

M2_U8NUM(el_dt_day, "c2", 1,31,&dt_day);
M2_LABEL(el_dt_sep1, NULL, ".");
M2_U8NUM(el_dt_month, "c2", 1,12,&dt_month);
M2_LABEL(el_dt_sep2, NULL, ".");
M2_U8NUM(el_dt_year, "c2", 0,99,&dt_year);

M2_LIST(list_date) = { &el_dt_day, &el_dt_sep1, &el_dt_month, &el_dt_sep2, &el_dt_year };
M2_HLIST(el_date, NULL, list_date);

M2_ROOT(el_dt_cancel, NULL, "cancel", &el_top)
M2_BUTTON(el_dt_ok, NULL, "ok", dt_ok_fn);
M2_LIST(list_dt_buttons) = {&el_dt_cancel, &el_dt_ok };
M2_HLIST(el_dt_buttons, NULL, list_dt_buttons);

M2_LIST(list_dt) = {&el_date, &el_dt_buttons };
M2_VLIST(el_top_dt, NULL, list_dt);

The "dt_put_to_RTC" procedure will be different for your, but the element hierarchy might be the same.
The top level element is "el_top_dt".

This means that your data for the 2L-Menu might look like this:

Code:
m2_menu_entry m2_2lmenu_data[] =
{
  { "Date/Time 1", NULL },
   { ". Set Date 1-1", &el_top_dt },
  ...
  { NULL, NULL },
};

The 2L-Menu is another element hierarchy. For example:

Code:
M2_2LMENU(el_2lmenu,"l4F3e15W43",&m2_2lmenu_first,&m2_2lmenu_cnt, m2_2lmenu_data,65,102,'\0');
M2_SPACE(el_space, "W1h1");
M2_VSB(el_vsb, "l4W2r1", &m2_2lmenu_first, &m2_2lmenu_cnt);
M2_LIST(list_2lmenu) = { &el_2lmenu, &el_space, &el_vsb };
M2_HLIST(el_hlist, NULL, list_2lmenu);
M2_ALIGN(top_el_expandable_menu, "-1|1W64H64", &el_hlist);

The toplevel (root) element is "top_el_expandable_menu".

Oliver
« Last Edit: January 18, 2013, 02:14:07 pm by olikraus » Logged

Pages: [1] 2 3 ... 15   Go Up
Jump to: