More about different LCD backpacks

Last time I discussed what serial LCD to buy. This time, as a response to some Arduino forum questions regarding I2C LCDs, I’ve written the following short comparison to prove that serial LCDs are better choice than I2C LCDs in most projects.

First, there is no official I2C liquid crystal library. Anything not included in arduino IDE 1.0 is contributed by one person or another and some get active support but the rest don’t so they are dead. Most ebay sellers are just selling I2C LCDs because they think they make money selling but not able to do any support and that’s why I put support at top priority. Just read comments on my blog you will see. Unfortunately mine is not I2C (IE cheapest, for good reasons). Just to clarify, although you can get a lib for an I2C LCD, the library goes with the particular I2C LCD and is not useful if you switch to another I2C LCD. Also arduino still does the heavy lifting to communicate with the LCD so your code will be long with the included lib and arduino spends processing time to do the LCD control. On the other hand, serial LCDs (on TTL serial) require no library so there won’t be a time when you want lib and the lib is not up to date and won’t compile. Also the serial LCD controller does all the heavy lifting for arduino. Your code is small since there’s no lib to include. Those are some of the reasons I make and sell serial LCDs and not I2C IO extender LCDs.

Two different I2C LCDs and why one is so much cheaper than the other/serial LCD:
1) LCD with I2C IO port extender (cheap). The port extender is a buck each. There is no “brain” on this type of I2C LCDs. The extender simply adds more IO ports to arduino. Arduino still does all heavy lifting and is prone to long compiled sketch and broken library problems.
2) LCD with controller that talks I2C with arduino (expensive). The controller is a few bucks and needs support such as crystal caps etc. There is a “brain” on this type of I2L LCDs. The controller does all heavy lifting so arduino has short sketch but there is still potential for broken library problems since most of these come with libraries to tell the controller what to do.

3) Then the serial LCD. It’s around the same price and complexity as 2) in terms of price and sometimes a serial LCD offers I2C connectivity as well. It’s not prone to broken library since everything is sent in serial text streams and arduino also has short sketch. You can also connect this type of LCD directly to a PC with a USB TTL adapter! The input and output are both asynchronous and buffered against overflow on arduino and serial LCD. — I’d go with this one, especially the best ones, designed by Liudr. 😉


Reply from brunialti at Arduino forum (agreed to be reposted here):

That is a really good introduction on choosing an lcd!
I like your approach, and I saw your serial LCD. There is a lot of “brain” inside. I think that it could be the appropriate choice for many projects and you tempted me to buy it (damn!).
On my side, as I’m going to integrate as many I2c device as possible, I would prefer not to manage two interfaces at the same time. The I2c has a strong point on its bus. You can buy a passive, small and cheap backplane and connect all the i2c devices you like, using 4 mu pins at all!

There is also a drawback in putting too much “brain” into devices: with the “brain” you put also logics, syntax and structure. That make impossible a drop-in substitution of a smart LCD with an other one.
That is similar to the broken library problem: you have to change the app code instead of the library code.

My reply to brunialti:

Very good points! Indeed I worried about that (different serial LCDs speak different commands), so, I have used all ANSI escape codes as much as I can so all functions are ANSI escape code driven or ASCII control code driven. So if you want to clear screen, that is \f (old speak for printer to spit out the entire sheet and ready a new sheet, feed). If you want to change LCD coordinates, you do the ANSI escape sequence “CSI n ; m H”, which is say “\e[2,4H” for 2 row and 4 column with 1-based numbers. I wish every serial LCD speaks ANSI, which is by far the most appropriate standard for a character display, but only few do and mine speaks the most ANSI words. All specific functions such as menus and scrolling texts are also implemented as custom ANSI escape sequence for maximal standardization. I’m pretty sure Sparkfun serial LCD won’t speak ANSI since it has a big brain but little intelligence inside. smiley-wink

Thank you for donating!

Thanks to all your interest in my library codes. Today I have received my first donation for supplying these library source codes to Arduino community (actually two donations today!). I am setting up a list of donors for my library donation to thank these individuals and companies. At the moment, I will be just using initial letters and country of origin. If you are a donor and would like more details listed, please leave a comment here or on the donation page. I also encourage you to leave a website or project page as well. Again thank you!

Update: 02/17/2012 One more donation has been made ! Thanks you! Your name initials are on the donors’ list now!

phi_prompt 1.0 beta release

I am happy to release the beta version of the phi_prompt library. There are sample codes to get you started while I work on adding a few functions for beginner programmers and finishing the documentation. Except for the init function, everything is the same as the 523 version. Now it’s compatible with arduino 1.0 and uses phi_interfaces library as the physical layer for inputs.

Library download includes phi_prompt, phi_interfaces, sample codes, and modified TinyGPS (by Mike Hart) to run on arduino 1.0:

GPS logger program version 5 is also available if you have a phi-2 shield 2004 and a GPS module:

LEDs vs. CFLs

There are lots of discussions of how LEDs are the ultimate power savers that beats all other methods of lighting. On the other hand, it only beats some lighting methods but not all. Compact fluorescent light (CFL), for instance, has similar efficiency in converting electricity into light to LEDs.

It’s funny that most people thought that vacuum tube technology was useless and CFL is just one of them that is still kicking! After reading some wiki I was reaffirmed that LEDs and CFLs actually have similar principles of operation, that is when you compare them with incandescent light. The two still have some slight differences if you care to know:

*While LEDs have conduction electrons moving inside semiconductor, CFLs have free electrons moving in glass vacuum tube.
*While conduction electrons excite semiconductor bonds in LEDs, free electrons excite gas molecules in CFL.
*While excited semiconductor bonds decay and directly emit light in LEDs, excited gas molecules emit UV light in CFL, which strikes fluorescent powder, which turns UV into visible light.
*There is electrical resistance in semiconductors against electron motion but no electrical resistance in vacuum tubes, but the fluorescent powder does waste energy converting UV into visible light.

I guess that’s why these trade-offs made them similar in efficiency. So what is your take on LED vs. CFL?