Hi all! I have a question for the low-level hardware guys here on this forum.
I’ve googled it and only found one page that even mentions the fact that LCD screens have “sticky” text → here… attached is a snip of exactly what I’m referring to.
I was wondering if there was some way of possibly disabling this behavior and if so could it be done on a line-by-line basis rather than affecting the entire LCD screen.
How would you have it act? Should it display your text for some period of time and then clear the screen? What if I want the text to stay? Should it clear the screen every time I print something new? What if I want to write on one line and then a little later write on the other line?
You're going to have to define how this "non-sticky" LCD should act. Because I can't see it being very useful in any way I can imagine it.
Have you considered just clearing the screen in your code when you want the text to disappear? Or printing spaces over it if you only want part of it to disappear?
You are looking for a problem that doesn't exist. The only thing of note in the picture you post is the text "this is a really handy feature". What part of "really handy" don't you understand?
No. There is no way. You can fake it by writing blank spaces, but those blank spaces will be sticky.
And as with the others, I'm really wondering how you imagine a screen working if not the way it already does.
1.) No one said there was a “problem”
2.) “Really handy” is relative
So, please… lighten up a little, your post comes across as a bit aggressive / abrasive.
Nick et al -
What I am trying to deduce from the responses of individuals who are more knowledgeable in the areas of electrical engineering, circuit design & low-level hardware manipulation than I am isn’t necessarily a practical answer to any specific issue… I was simply wondering if it was theoretically possible to “reverse” this so-called “sticky” behavior of the text. Is it some inherent feature that is some how “hard coded” into the LCD screen itself or can this be tweaked - either by way of redesigning / tweaking the circuit itself or through modifying the library?
Not all questions are rooted in concrete, real-world problem solving… some of us are theorists, ya know!
Yes, I implemented a few fixes for the unwanted sticky behavior of the text by way of clearing the entire line before printing to it between each “scroll” of my progress bar “graphic” as well as adding leading and trailing spaces to the progress bar. These fixes feel more like band-aids than anything though, hence my curiosity as to whether the sticky behavior can be turned off.
I'm still curious how this thing would be useful as a display if the characters don't stay on the screen after you write them. So I ask again, how would this actually look? Would it be a display where when you print "hello" the "hello" shows up just for a microsecond and then disappears? That doesn't sound very useful but that's what you've described to the best I can tell. Would it be for a longer time? How would you determine how long the text would stay on the screen?
I'm really just confused as hell about what it is that you want. I think that the "stickiness" of the characters isn't something you could even consider "turning off". It's just the way a display works. When you print text to a display you generally want it to be displayed there.
You're not making any sense. Please describe how a non-sticky LCD would look.
2.) "Really handy" is relative
Well perhaps "essential" might be a better, and less relative, description of this feature.
Read reply #6 again, and next week, you will be wondering why you ever raised this matter.
You're getting warmer... "essentially" (lol), I want more granular control of exactly what is going on on-screen. If I can't print a character to a given "coordinate", if you will, and not have to worry about some extraneous action thereafter in order to have the screen be cleared (or a "band-aid solution" as I like to call them), I find that not very handy for my intended purposes - which I'll get to here shortly.
I took to LCD screens during my experimenting with controlling them via an Arduino board for the development of a cable tester (mentioned in one of my other posts on these forums), yet I found that the general openness (read: access to the lowest hardware level and versatility that this lends itself to) that makes the Arduino platform so great is not present within these LCD screens.
I feel that this site has been tremendously helpful in my experimentation and development with the cable tester and would like to repay the favor to the community. My intentions are to develop a library for those Makers out there that want more power, versatility & usefulness out of conveying information on LCD screens because I personally believe that the potential is very great for these little guys but in their current form / implementation, they aren't quite there yet (that is in no way a slight towards the great people that have invested time into the libraries that grant these LCD screens such ease of use - I'm lookin' at you Adafruit, FalconFour, nsayer & Sam C. Lin... thank you all for your contributions).
I am in a way a minimalist though and find elegance in simplicity when coding, designing or in any other creative endeavor... which is why I was wondering if there was simply a method of turning the stickiness off. I believe that the ability to do so would greatly simplify some of the features that I want to incorporate in the library... but in attempting to achieve that elegance through simplicity, I typically make it harder on myself. That's just me, I'm fine with it and have come to accept it. that's all, nothing complex or unreasonable.
That's exactly what I was wondering Delta; is it even capable of being turned off... thanks for your response.
That's what I am trying to deduce.... is this behavior absolutely essential to the function of the LCD screen - given my intended purposes. And no, I do not wonder why I raised this matter, I know exactly why I did. I apologize for not leading with my end-game as I probably should have. Sometimes I feel that doing so up front - in my usual verbose and detailed manner - is a major turn-off for potential commenters or dissuades people from contributing to the discussion due to some possibly feeling that this may be out of their league (but more likely due to the fact that people don't want to read through my long-winded posts, lol... I've been trying to work on that - this topic being a prime example. Start concise, then expound on the details when the questions come, rather than try to answer all potential questions before they are even asked )
Thank you both for your input thus far and I hope that more chime in. Have a good one all!
Again I ask. How would you have the screen behave. You still make no sense when you talk about turning this off. But on the face of it I don't know what turning that off even means. How would the screen act if that was turned off. You can do lots of things with an LCD. You can probably do what you want. But you're going to have to find a way to describe what it is other than calling it "turning off the sticky" because that makes no sense.
You really want an LCD where the characters don't show up when you print them? That's easy. Disconnect the wires from the Arduino. Bam, characters don't show up anymore.
You just wrote that whole long response and still didn't answer this question. I think you can't because it is a ridiculous notion. You can't even describe how it would act and the fact that you can't even imagine it should clue you in to how ridiculous the notion is.
So I ask again, how would a non-sticky LCD behave? Until you can answer that nobody can help you.
I think that he does not understand how to setCursor() to any point on the screen and print blanks wherever he wants.
You can clear a line or part of a line. In fact you can clear both lines of a 16x2 quicker than using clear().
Then setCursor() to a new position and print new data.
In practice, it is easier to overwrite than to blank and write.
You don't even have to print the spaces if you have something else you want to print there. I can't figure out how this guy wants the screen to act. Best I can tell he wants to print to it but have the characters never show up. Or possibly show up and disappear so fast that the human can't see them. All he needs to do for that is to unplug all the wires from it.
Guy claims to be a minimalist, but proceeds to be a 'talks a lot and says very little' kinda guy.
I'm still waiting on an explanation of what the point is of a screen if nothing stays on the screen. The excuse that it's just a question about learning how screens work is circular. Screen gets instruction to light up certain pixels. Screen needs instruction to unlight certain pixels. Screen needs instructions. Period.
Pixels are just LEDs. Take a single LED and a battery. It's as if you're asking 'why oh why does the LED stay lit when I connect it to a battery? this sticky behavior boggles my mind'
It stays lit until you give it instruction by cutting power to it.
My assumption at this point is that the discussion has been dragged down into in XY problem land.
I think the only way you are going to get productive feedback and information is to describe what you are really attempting to do rather than pondering about solutions to a problem you have yet to describe.
I'll admit that I too am one of the people shaking my head wondering what the heck you are wanting to do.
When I read things like:
I want more granular control of exactly what is going on on-screen. If I can't print a character to a given "coordinate", if you will, and not have to worry about some extraneous action thereafter in order to have the screen be cleared (or a "band-aid solution" as I like to call them), I find that not very handy for my intended purposes
My intentions are to develop a library for those Makers out there that want more power, versatility & usefulness out of conveying information on LCD screens because I personally believe that the potential is very great for these little guys but in their current form / implementation, they aren't quite there yet
I makes me think that perhaps you are not familiar with the LiquidCrystal API functions and perhaps do not understand what a hd44780 text based display is capable of doing. Perhaps there is also some confusion between the capabilities of a text based LCD and a graphical LCD.
I simply cannot tell as you have never described the issue you are having nor the problem you are trying to solve.
There are people here on the forum that literally have decades of experience with LCDs.
And even people including myself that have written multiple Arduino LCD libraries and are very familiar with the full capabilities of multiple types of LCDs including text based hd44780 LCDs.
But until you explain what you really wanting to do and what problem you are trying to solve, there will be no real discussion.
And in case you haven't noticed, so far there has been quite a bit of confusion as to what you are trying to do since no one is understanding the problem you are trying to solve since you have yet to describe it.