The 16×2 LCD display is a classic in the microcontroller world, and for good reason. Add a couple of wires, download a library, mash out a few lines of code, and your project has a user interface. A utilitarian and somewhat boring UI, though, and one that can be hard to read at a distance. So why not spice it up with these large-type custom fonts?
As [upir] explains, the trick to getting large fonts on a display that’s normally limited to two rows of 16 characters each lies in the eight custom characters the display allows to be added to its preprogrammed character set. These can store carefully crafted patterns that can then be assembled to make reasonable facsimiles of the ten numerals. Each custom pattern forms one-quarter of the finished numeral, which spans what would normally be a two-by-two character matrix on the display. Yes, there’s a one-pixel wide blank space running horizontally and vertically through each big character, but it’s not that distracting.
Composing the custom patterns, and making sure they’re usable across multiple characters, is the real hack here, and [upir] put a lot of work into that. He started out in Illustrator, but quickly switched to a spreadsheet because it allowed him to easily generate the correct binary numbers to pass to the display for each pattern. It seems to have really let his creative juices flow, too — he came up with 24 different fonts! Our favorite is the one he calls “Tron,” which looks a bit like the magnetic character recognition font on the bottom of bank checks. Everyone remembers checks, right?
Hats off to [upir] for a creative and fun way to spice up the humble 16×2 display. We’d love to see someone pick this up and try a complete alphanumeric character set, although that might be a tall order with only eight custom characters to work with. Then again, if Bad Apple on a 16×2 is possible…
Nice, using the full lit character (which is in the default character set) as 9th “caracter”.
Brilliant, or borderline brilliant.
I have a desk calendar with two cubes with numbers that can display all days of the month, by virtue of both of them having 0,1,2, one has the additional 3,4,5, the other 6,7,8,9. How do you fit the seven digits.0,1,2,6,7,8 and 9 on a 6-sided cube? Simple: 6 and 9 are the same side.
I love little tricks like that.
Wow. The character recognition of that font is AWFUL.
I had to stop and look at each glyph one at a time to read it.
Is it “pretty”? Sure.
Is it useful? No.
You forget an old Russian proverb that applies in this situation:
“The true wonder of the dancing bear
is not how well he dances,
but rather that he dances at all.”
Besides, the upper one is close to the machine readable print on the bottom of checks.
After watching the video I give it a thought and then I’ve created a custom font set for double height characters. I’ve ended with thinner but more recognizable numbers. Halfway in size and readability between the standard tiny numbers and the bigger but less recognizable 4 characters numbers
Care to share?
This has been done before but not in the that format https://www.ai6xg.com/post/big-font-clock-relieve-for-old-eyes
Geez. As someone who hasn’t tried using these character LCD screens, I hadn’t realized that they only allowed you to customize just eight characters.
On the other hand, I did inherit a collection of them from my late grandfather, so I guess I should give them a try at some point. I should also experiment with different font concepts, as there might be other ideas to make it a bit more readable.
Compared to the infinite glut of graphics LCDs available today, they’re rather limited. However, they’re very simple to drive, cheap, and do the job well for text-only interfaces.
Only 8 characters *at a time*. So for slow-update situations where you could exclude a few cpmbinations (say: only day of month, where the first digit can only be 1,2,3), you can get away with more combinations as you never need to show a 6 and an 8 at the same time, and you update the custom characters inbetween.
I wrote a few proofs of concept of this in circuitpython last year, if you can drive the display fast enough you can update 4-6 of them quick enough to draw a little video, and I’ve also used the 8 individual char slots as “sprites”, so the char moves around the screen by moving around the string, but the “texture” is updated/animated by swapping the char. Had a decent little 16×2 sonic game with a running sonic and moving collectible rings (2 animations on custom char “sprites”)
Not super useful but fun to play with pushing the limits of these char lcds
My question is how many legible double-width double-height characters can you make without using the custom characters at all?
The spec sheets I’ve found (which may not be accurate) seem to indicate that the upper 128 characters are usually Asian characters (unfortunately I don’t know which language they’re from), so unlike the original ASCII character set using the upper 128 characters for various window-building symbols, I’m going to say not many?
Nice to see some new big fonts being developed. My 13 year old project uses a font I found back then and it looks pretty good / is easy to read. Didn’t see anything like it in the video posted, so here’s an alternative
https://forum.arduino.cc/t/large-alphanumeric-on-lcd/8946
I made the same digits but they are only ONE column wide by 2 rows high. They stand out as to be seen from across the room. BUT I made bigger text and numbers by turning the lcd sideways. I use 8 lcd to make a 2×8 display or a 1×8 display. See my post pictures on instructables under ‘oldmaninSC’. The photos of sideway is ‘big alpha-numeric display’ and ‘lcd date/clock forget the rtc’ Both sets of displays are VERY easy to read.