Summary of Getting Things to Talk: Arduino + LCDs
The author researched connecting an Arduino to an LCD, initially facing issues with two-line text display and poor contrast. Despite trying soldering and adjusting wiring, the contrast remained unreadable at normal viewing angles. The project involved basic "hello world" programs and flashing text but required further troubleshooting. Future steps include ordering a different LCD (possibly 4×20) and refining text processing.
Parts used in the Arduino + LCD Project:
- Arduino board
- LCD display (Hitachi HD44780 based)
- Breadboard
- Data wires
- Power and ground connections
I spent the better part of the day on Saturday doing some more basic research into connecting an Arduino and LCD for this ongoing project. For the most part, it’s pretty basic and following the wiring diagrams and tutorials online is fine. I ran into a problem with getting text on two lines, which I’ll detail below. Next on the to do list is to order a different LCD, maybe a 4×20 display and maybe something even smaller and then do some work on the text processing part of this whole thing. Overall, it was a good start and I’m anxious for later this week when I’ll have a block of time to continue with the next steps in this early research. First thing after pulling this stuff out again, I followed the wiring diagrams and I connected the data wires, leaving the power and ground until the end.
An initial sketch. Really, really basic “hello, world!” program. However, this was before I installed the newest version of Arduino, which is why that error came up.
Installing version 0017 helped and I finished connecting the LCD.
It’s not ideal, but quick and dirty. Also, it seems like there are better screens out there in terms of connections.
The arduino side of things.
I figured that it would be better to not be so tightly tethered to the Arduino, so I used the breadboard.
Trying to make connections a little cleaner.
My first program, working!
All the wires, still a mess, but I was just too anxious to get something on the screen.
Then I worked on another program that would flash different texts.
This one switched between BCL and make things happen!
Here’s the code, trying also to change the position of the cursor, which didn’t work as anticipated because I didn’t initialize the screen with lcd.begin().
I switched the wiring around to try to figure out how to get text on two lines. Lots of confusion, I just couldn’t get two lines to work, so I went back to one line. I had momentarily wondered why I couldn’t get any decent contrast on the screen when trying to use two lines and the lcd.begin() line in my code. I wondered if it was just my poor connections, so I tried a bit of soldering, but it didn’t help. I went back to the drawing board, trying different wiring set up again.
I can’t seem to get the correct contrast when using the lcd.begin() line, that is to say that at a very severe angle it’s possible to read the screen, but under normal viewing it’s no where near what it should be (as pictured above). I didn’t post a picture of that because it basically just looks like the backlight is on with nothing on the screen itself. I couldn’t find an answer online, so I’m going to try this again with a different LCD. Although it could be a number of other things, this seems to be the simplest way to move forward. All these screens are based on the Hitachi HD44780 LCD, so it shouldn’t be an issue, but I’m not sue what else could be causing the problem at the moment… As frustrating as it can be sometimes, I think troubleshooting is where I learn the most.
Here’s a bit of an annotated bibliography: http://www.arduinoprojects.com/node/13 (for whatever reason, this was the most successful wiring setup, though I have my suspicions that I messed up the contrast at some point due to my shoddy and impermanent wiring) http://arduino.cc/en/uploads/Tutorial/lcd_schem.png (a diagram for the wiring setup recommended on the Arduino site) http://www.jamie.net/tag/arduino/ (a quick example of using the 4-bit LCD library, I haven’t tried it) http://dawes.wordpress.com/2009/12/23/twitter-to-lcd/ (interesting project connecting twitter and Arduino) http://blog.tinyenormous.com/2008/12/02/arduino-based-rss-reader-with-lcd/ (lots of interesting projects, hooking up Arduino + Twitter and Gmail + Arduino using Python) http://www.alfonsomartone.itb.it/kwztcq.html (some helpful troubleshooting stuff) http://www.arduino.cc/en/Reference/AnalogWrite (analog write, I used this to correct the contrast problem I had) http://arduino.cc/en/Reference/LiquidCrystal (LCD library for Arduino)
For more detail: Getting Things to Talk: Arduino + LCDs
- How did I start the project?
I followed online wiring diagrams and tutorials, connecting data wires first while leaving power and ground for later. - What caused the initial error?
The error occurred because the newest version of Arduino had not been installed yet. - Did using a breadboard help?
Yes, using a breadboard made it less tethered to the Arduino and allowed for cleaner connections. - Why didn't the cursor position code work?
The cursor position code failed because the screen was not initialized with lcd.begin(). - Can I get text on two lines?
No, I could not get text on two lines to work despite switching wiring setups multiple times. - Why is the contrast poor?
The contrast is poor at normal viewing angles, likely due to shoddy wiring or initialization issues. - What will be done next?
The next step is to order a different LCD, possibly a 4×20 display, and work on text processing.
