• Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

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

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)


Jon's Imaginarium - 400.jpg
 
Last edited:

Pommie

Well-Known Member
Most Helpful Member
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.
 

Visitor

Well-Known Member
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.
 

Nigel Goodwin

Super Moderator
Most Helpful Member
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!!!!
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.
 

Pommie

Well-Known Member
Most Helpful Member
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?
 

granddad

Well-Known Member
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.
 

Latest threads

EE World Online Articles

Loading
Top