Raleigh, North Carolina, USA
Offline
Newbie
Karma: 0
Posts: 5
I Void Warranties
|
 |
« on: November 19, 2012, 09:26:19 pm » |
I stumbled across this topic here, but wanted to 'tweak' the look of some of the letters. The original code was really hard to edit, so I started from scratch and wrote up this little sketch+library.The down-side appears to be with these HD44780 Blue/White displays refresh rate. Any scroll rate faster than about 500ms (per screenfull) leaves traces/shadows like crazy. However, I'm fairly inexperienced with Arduino's and LCDs, so maybe my code isn't as efficient as it could be. Any tips for making my code faster or otherwise limiting the appearance of traces/shadows? 
|
|
|
|
|
Logged
|
|
|
|
|
Raleigh, North Carolina, USA
Offline
Newbie
Karma: 0
Posts: 5
I Void Warranties
|
 |
« Reply #1 on: November 19, 2012, 09:27:48 pm » |
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Tesla Member
Karma: 71
Posts: 6596
Arduino rocks
|
 |
« Reply #2 on: November 19, 2012, 09:50:41 pm » |
The down-side appears to be with these HD44780 Blue/White displays refresh rate. Any scroll rate faster than about 500ms (per screenfull) leaves traces/shadows like crazy.
These are passive matrix displays, you don't get fast switching without active matrix (a.k.a. TFT)
|
|
|
|
|
Logged
|
|
|
|
|
Central MN, USA
Offline
Faraday Member
Karma: 35
Posts: 5914
Phi_prompt, phi_interfaces, phi-2 shields, phi-panels
|
 |
« Reply #3 on: November 20, 2012, 12:29:58 am » |
|
|
|
|
|
Logged
|
|
|
|
|
Dallas, TX USA
Offline
Edison Member
Karma: 24
Posts: 1615
|
 |
« Reply #4 on: November 20, 2012, 02:18:15 am » |
Doc, There does not seem to be any code in the repository: http://code.google.com/p/phi-big-font/source/browse/I also tried a git clone and got an empty repository. There are download images but the code does not appear to be in the repository. --- bill
|
|
|
|
|
Logged
|
|
|
|
|
Manchester (England England)
Offline
Brattain Member
Karma: 269
Posts: 25382
Solder is electric glue
|
 |
« Reply #5 on: November 20, 2012, 03:22:06 am » |
As Mark says the problem is with the display technology not the code. If your code were able to make it scroll faster then the display problem would be worse.
|
|
|
|
|
Logged
|
|
|
|
|
Raleigh, North Carolina, USA
Offline
Newbie
Karma: 0
Posts: 5
I Void Warranties
|
 |
« Reply #6 on: November 20, 2012, 07:32:24 am » |
Yeah, I couldn't access any code either. I also wanted sub-character scrolling, not just one at a time, but one column at a time. Besides, I needed the programming practice anyway and am comfortable with github. The other thing I wanted, was to be able to just pass an ASCII string into a function and let it do it's thing. See scrollString() near the end of BigWords.h at https://github.com/cevich/sketchbook/tree/BigWords/BigWordsI took a quick video of what this looks like @ 500ms update (per screenful): http://youtu.be/hjdMBifxWDkThough I noticed something interesting, if I set it less than 500ms, it looks the same! So there's certainly some gross inefficiencies here. I suspect it has to do with rendering directly onto the screen one character at a time 
|
|
|
|
|
Logged
|
|
|
|
|
Raleigh, North Carolina, USA
Offline
Newbie
Karma: 0
Posts: 5
I Void Warranties
|
 |
« Reply #7 on: November 20, 2012, 07:34:30 am » |
As Mark says the problem is with the display technology not the code. If your code were able to make it scroll faster then the display problem would be worse.
Out of curiosity, would a VFD or OLED display not show this artefact so much?
|
|
|
|
|
Logged
|
|
|
|
|
Raleigh, North Carolina, USA
Offline
Newbie
Karma: 0
Posts: 5
I Void Warranties
|
 |
« Reply #8 on: November 20, 2012, 07:45:00 am » |
Thinking about it, yeah, I agree. If I make the code faster, it'll probably just look worse. Though for my own edification, what would be the best optimization strategy here? Could putLCDChar() render into an off-screen buffer during "wait" cycles. Then print the entire buffer when my interval elapses in scrollString()? The only other strategy I know of is "the long way", instrument each function to track and print an average execution speed. Then rework each function starting with the slowest one. I'm a Linux guy, where strace and ltrace will do function-timing for you. Are there any handy debugging libraries or similar tools for Arduino which can do this?
|
|
|
|
« Last Edit: November 20, 2012, 07:47:15 am by r4z0r7o3 »
|
Logged
|
|
|
|
|
Manchester (England England)
Offline
Brattain Member
Karma: 269
Posts: 25382
Solder is electric glue
|
 |
« Reply #9 on: November 20, 2012, 10:23:03 am » |
would a VFD or OLED display not show this artefact so much?
Correct they would not show this because they have a much faster switch time.
|
|
|
|
|
Logged
|
|
|
|
|
Central MN, USA
Offline
Faraday Member
Karma: 35
Posts: 5914
Phi_prompt, phi_interfaces, phi-2 shields, phi-panels
|
 |
« Reply #10 on: November 20, 2012, 12:01:09 pm » |
|
|
|
|
|
Logged
|
|
|
|
|
Dallas, TX USA
Offline
Edison Member
Karma: 24
Posts: 1615
|
 |
« Reply #11 on: November 20, 2012, 12:46:01 pm » |
Yes I saw the zip download images. But it looks like there is not any code in the actual git repository. --- bill
|
|
|
|
|
Logged
|
|
|
|
|
Central MN, USA
Offline
Faraday Member
Karma: 35
Posts: 5914
Phi_prompt, phi_interfaces, phi-2 shields, phi-panels
|
 |
« Reply #12 on: November 20, 2012, 05:08:15 pm » |
Yes I saw the zip download images. But it looks like there is not any code in the actual git repository. --- bill I am new to git repository. Still learning about it. Any quick tutorial you know of?
|
|
|
|
|
Logged
|
|
|
|
|
|