Jon's Imaginarium – Dynamic Arduino LCD Menu For HD44780 Character Displays

Status
Not open for further replies.

Visitor

Well-Known Member
Via Hack-A-Day comes this nifty Arduino menu system for use with character LCD displays. It's simple to set up a menu to display and select options using a venerable HD44780 character display.

Dynamic arduino LCD menu (myhomethings.eu)

There are many other interesting Arduino apps on this website.

Another handy routine on the site is a way to detect long button presses from short button presses. It's not earth-shattering, but it may save save some head scratching.

Arduino long-short button press (myhomethings.eu)


 
Last edited:
I tried writing a menu system using a 4x20 I²C LCD and it was unusable. To update a 4x20 LCD via I²C takes 80mS which makes it very slow and unusable. I was hoping that page had a video of it in use but it doesn't. I then looked at the code and (if I'm not mistaken) it's got a key debounce time of 400mS!!!!

Have you tried this code? Unfortunately I don't have any of the standard I²C LCDs so can't try it myself.

Mike.
 
I have not. I'm away from home for an extended period and don't have access to much technology – just a few things I've purchased locally.
 

Why do you need a fast menu system? - LCD's only update slowly anyway, so it shouldn't really be an issue.

I've compared LCD's via normal 4 bit parallel and I2C, it seems to make VERY little difference - in either case you can update the screen faster than makes sense, as it simply blurs.
 
Why do you need a fast menu system? - LCD's only update slowly anyway, so it shouldn't really be an issue.
My 3D printer has a scrolling menu using a rotary encoder. I can turn that fast enough to get to the right item without delay. A delay of 80mS makes it VERY unusable. Why do you say LCDs are slow. My own I²C back pack can update the whole (4x20) display in 6mS. I usually read keys etc. at between 20 and 50Hz and find anything slower to be cludgy (sp?, word even).

Maybe all the code that uses delays instead of reading the busy bit is clouding your judgement as that does make them slow.

Mike.
Edit, sorry about the random graphic that inadvertently got pasted in!!!
BTW, any comment on the 400mS debounce in the above code?
 
I put a PIC16Fxxxx as the I2C slave (asm code ) running the LCD , that way you can buffer the data even do custom characters and save /recall them and backlight . It will run any of the common layouts 2x16 2x20 4x20 etc no delays, no checking the busy , only had it running at 100khz tho.
 
Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…