I have made a couple of projects and have learned a few "problems" with LCD displays, and their drive chips.
Some allow a few "programmable" characters, some allow a lot. Some allow/are "inverted" displays.
I want to make a BASIC clock. USB powered to sit there and show me the time.
It will be plugged into the PC and (maybe) at bootup, the PC will send the new time to the clock. Or maybe only when I want.
The display is the sticking point just now.
Colour, characters, and if it can be "inverted". (As in: Instead of the numbers being the "black" part, it is they numbers are the "lite" part of the display.
I am looking around but the specs don't tell me much. Sure some give the driver chip, but I am asking for a bit of help in which ones have the functions I have listed.
Programmable characters may not be a bit thing, but if I want to add features they may be nice.
A swag of different fonts and icons can be fed to TFT displays. The reversing is simply a matter of setting the colours of the fonts and backgrounds. You might look at the documentation at HenningKarlsen. This is the stuff that goes with his libraries.
Some allow a few "programmable" characters, some allow a lot...
You have not identified which broad category of LCD you intend to use. A 'character mode' lcd has a built in font that has all of the common characters (numbers and letters etc.) inherently available and the ability to create eight 'custom' characters. These generally have numbers such as 2004 or 162 in their part numbers indicating 20 characters on each of 4 rows or 16 characters on each of 2 rows.
A 'graphical' LCD has no built in font. You must provide more than 'a lot' of programmable characters, you must provide all of them. This gives you lots of flexibility at the cost of programming effort. These GLCDs generally have numbers such as 128x64 in their part numbers indicating the number of 'dots' available for programming.
Unless you want to create what looks like an analog clock on your digital display then a 'character mode' LCD is probably what you want. Any of them will work and all of them can be driven by the LiquidCrystal library that comes with the Arduino IDE.
lost_and_confused:
How "easy" is it to REVERSE the standard displays? So instead of them being BLACK on "background light" they are "background light" on BLACK?
Not actually possible.
For a clock, having only 8 programmable characters is in itself, no problem as you are not requiring more than eight digits displayed at once and you can simply program each of those characters "on the fly" to display them as you require.
For a 16 by 2 display, there are "large" fonts constructed by using both rows to display parts of the character using the programmable characters.
But neither of these will suit what you want because generating reverse characters does not alter the parts of the display outside the character blocks, which will continue to be illuminated.
On the other hand, if you have looked at the variety of LCD character displays available, you should have found that there are both "positive" and "negative" displays available, in various colours. Now the cheapest ones at present, in fact produce a white text on a blue (illuminated) background, so they are the "right way round", the only problem is that you seem to want a totally black background.
A graphic OLED would certainly do the job you want,
Nick_Pyner:
But a 4x7 LED display may be what you really want.
Presuming you actually want it illuminated (as you must do, because a non-illuminated, reflective display of "white" on black is particularly difficult to read), modern seven segment LED displays are large and efficient.
This is the reply I got from the person who made a clock as I want to do it.
It was a 2x16 HD77480 compatible controller display.
They only have eight custom characters, but anything is possible when you rewrite them for every frame:
lost_and_confused:
Found this But I don't understand the specs on the driver chip.
There is no need to. It is a white on blue display, so as long as you do not mind the blue background, you can use the "big number" graphics. You use the "lcdguesser" to figure out the descriptor for the LiquidCrystal_I2C library. Note that its I2C address is fixed, but unless you propose using more than one display, that does not matter at all.
lost_and_confused:
and there is this board also mentioned. But I don't know if the second board is included with the first link as it appears to have the board under it anyway.
That corresponds to the "backpack" part alone of the previous one, except that it is a different model and would in all likelihood require a different descriptor (which is no trouble, as it is only a trivial software matter).
Well, that is the display unit only, of a 20 by 4 display whereas the first one is a 16 by 2. You would need to pair it with the second module above, or one similar. Again, it is a white on blue display, and again the library is perfectly simple to use.
But I want to make the numbers scroll. Sure I mentioned that.
This is an example video:
So I understand that I will have to "bash" the scrolling part to the display.
I am not sure how to exactly do the code.
I'm guessing that on each look I would look at the "milliseconds" value and every (say) 200 ms move to the next part of the scroll.
This would be done by sending the code to the display and printing that character in the required position.
I am no expert on how fast the arduino is, but when the tens of seconds/minutes and tens of minutes - etc - are scrolling, it would take a lot of grunt to do it.
lost_and_confused:
This is an example video.
...
I'm guessing that on each look I would look at the "milliseconds" value and every (say) 200 ms move to the next part of the scroll.
There are eight steps to the scroll (seven pixels high plus a clear space); if you want it to happen in one second it you would step about every 100 to 120 ms.
lost_and_confused:
This would be done by sending the code to the display and printing that character in the required position.
Since on a character display, you cannot move the position of a character (unless I have missed something), you do it by generating a custom character using one of the eight available CG-RAM locations. You have to have a local (PROGMEM) font of the numerals to use for this in order to combine the necessary lines of the two adjacent numerals. Actually, not too difficult. You can therefore scroll up to eight characters at a time, more if some are making the same transition at the same time.
lost_and_confused:
I am no expert on how fast the Arduino is, but when the tens of seconds/minutes and tens of minutes - etc - are scrolling, it would take a lot of grunt to do it.
You are talking about animating things in a tenth of a second. In that time, the Arduino processor executes a million instructions. Quite a trivial concern really.
As Paul_B said, the lowest cost displays are white on blue, and the white on black cost significantly more. I have one of the sparkfun white on black displays, and I do prefer the appearance to the white on blue.
If you Google/eBay search for "16x2 Character LCD - White on Black" you might find something.
You should give some thought as to how your clock will be mechanically packaged, and the lcd display mounted. You may or may not want the I2C serial adaptor mounted on the back of the display.