Getting Things to Talk: Arduino + LCDs
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.
BROKEN CITY LAB!
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.
I also connected the backlighting.
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.
Still not the effect I wanted.
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)