I just decided to take the plunge and get started with arduino so this post will be riddled with newbie-ness. Last week I received an Arduino UNO R3, a basic LCD (https://www.sparkfun.com/products/9054), and some other stuff to play with including temp/humidity sensor and barometric pressure sensor. I tried a few of the basic sketches, then felt confident enough to play with the LCD. "Hello World" worked just fine and I played with a few others. I hooked up the temp/humidity sensor (DHT22) and that worked easily and perfectly. I've had it outputting to the LCD with no problems. I added the barometric pressure sensor (BMP085, from Adafruit) and got that working too.
I decided to switch from USB power to a 9v battery. It was fine at first, but when I picked it up (arduino, battery, and breadboard) the text became garbled -- output to serial still worked fine and the sensor data was ok. I assumed I shorted something by picking it up, but i can't find where. I used some canned air on it, but it didn't help. I disassembled/re-assembled with no sensors and I can't get the standard "Hello World" sketch to work.
The text is a mix of english, japanese, and symbols. the counter can be seen , but in the wrong place, by 12 seconds, the LCD blanks for a while, but then turns back on with different characters. Of note, the text did change a little after using the canned air so i suspect that helped. But i have no clue what i did. i've been searching high and low since last night and haven't found anything that helped. ANy ideas would be great.
I decided to switch from USB power to a 9v battery....
What happened when you switched back to USB power?
Sorry, I forgot to mention that. That was the first thing I did thinking it was power-related, but the text was still garbled. Re-uploaded sketch and same results. When I saw that sensors were working fine, I started dismantling and starting from scratch with the Hello World sketch.
The text is a mix of english, japanese, and symbols. the counter can be seen , but in the wrong place, by 12 seconds, the LCD blanks for a while, but then turns back on with different characters.
This sounds like it could be caused by a bad data lead, perhaps a cold solder joint.
At any rate you want to test the display with a static message, not one that changes as does the 'hello, world' sketch in the playground. If you are using that sketch then just delete everything between the brackets in loop() and see what happens.
Thanks, I re-wired it again using a different set of jumper wire and commented out all lines in the loop() part of the sketch. The result was 11 characters of gibberish on line 2 and indented 1 space. I played around with it to see if maybe the wires weren't making a connection and discovered that I can pretty much remove all of the data wires and nothing changes on the LCD -- actually contrast shifts slightly when i removed D5.
So my guess is that you're probably right about the cold solder joint (or I messed up the LCD when i picked it up -- static charge, maybe?). I googled for cold solder joints, but they honestly all looked fine to me. Do you have any tips on identifying cold solder joints? Or should I just attempt to re-solder each joint?
Thanks again for the help!
The accepted practice is to run in a circle yelling yabba yabba yabba… Of Course re-solder the joints, If you feel comfortable doing so. Most of the new people here lack certain basic skills and that was why I said If you feel comfortable doing so. Not having a skill is a lack of instruction and practice and that is repairable. If you’re not then please find someone who is. Your problem might be static electrical damage and it just might be a dirty wire (corroded) connection between display and breadboard and breadboards even new are famous for that and the ‘cure’ for that is to move everything down, or up… a few pins and see if everything is the same and while you are at it verify that you haven’t accidently transposed a wire or that there is a short between wires caused by moving your project. Stranded wire is good for doing that and why it’s generally not used, even and particularly when the ends are stripped and tinned as a nicked wire from stripping will Certainly break at that point and become a hazard to the adjacent pins. The other method that is almost as good is to use a fine grade of sandpaper to clean the wire ends NO STEEL WOOL please… Bad for electronics… great for sparks… (I’d bet on a shorted wire or one in the wrong hole)
The result was 11 characters of gibberish on line 2 and indented 1 space.
The display may look like gibberish to you but it could still have some troubleshooting value. For instance, are the third and fourth characters the same (as in 'hello')?
Well, this is interesting. I rewired and started it up again. Then I got 13 characters -- all Japanese -- on the first line. L's and O's were repeated where they should be. Seemed like progress, however, i haven't been able to get anything since. Now when i apply power (via USB) the first character is lit like a block cursor and nothing else. Pressing reset blanks the LCD and nothing returns. I followed Bob's advice and shifted the LCD down the breadboard but same results. Even tried another breadboard and same results.
What do you think of this?
I think I solved the problem: i'm dirty. I sprayed some canned air into the headers of the arduino, rehooked up the LCD, and now it's working. Just before i made a little progress by changing the polarity of the contrast pot (not sure why that would matter, but the correct text showed up).
Well, thanks so much for the help. I'm sure I'll be back when I make more dumb mistakes.
"The display may look like gibberish to you but it could still have some troubleshooting value."
Aren't you interested in finding out what the problem was so you can really fix it when it reoccurs? We need to know what the gibberish looks like.
Well, yes, absolutely. I thought it was just some dust in the headers, but if you have other ideas, I'm curious to heat them. I'm not sure that I have more detail though -- i probably should have photographed it when i had the chance...
There were three basic displays.
- 13 characters printed on the first line. Japanese characters where the L's and O's should be were repeated -- L's at position 3, 4, and 11, and O's at position 5 and 9.
- 11 characters printed on second line. Mostly Japanese, but also random symbols, with no repeating.
- alternating vertical lines (about 4 per character) throughout the LCD except line 2, positions 8 and 9, which were ?'s.This occurred only with the seconds display in the loop. in fact the second ? would periodically change to a slash, /, then turn back.
Other times, it would just appear blank or blank except a block cursor at the first character.
What do you think?
i probably should have photographed it when i had the chance...
I'm pretty sure that you will get another opportunity.