While low-contrast, blue-on-slightly-less-blue 16-character by 2-line LCDs are extremely popular, they really are made specifically for alphanumeric use. They do an admirable job of displaying a few characters, but they don’t exactly spring to mind as a display for non-character purposes. But displaying video on a 16×2 LCD is possible, as long as you’re willing to stretch the definition of “video” a bit and use some imagination while watching.
Normally, a 16×2 display can only display a single character in each spot, chosen from a fixed character set. But [arduinocelantano] was able to leverage the eight custom character slots the display allows to build up images from arbitrary 5×8 pixel bitmaps. After using
ffmpeg to scale the original video to a viewport of eight characters, a Python program was used to turn every frame of the scaled video into code to generate the custom bitmaps for each chunk of the viewport. Even with the low refresh rate of the display and the shrunken frame size, the result is a recognizable video, helped no doubt by the choice of the shadow-puppet Bad Apple!! video. Check it out after the break to see how it looks.
We saw a similar rendering of the same video on LCD a while back; that effort was amazing in that it was an EEPROM-only implementation, along with a somewhat bigger LCD with better contrast. That project served as inspiration for [arduinocelantano]’s build here, which in some ways we think looks a bit better — perhaps it’s the inverted pixels. Either way, hats off to both builders for pushing past the normal constraints and teaching us something interesting.
20 thoughts on “Pushing The Limits Of A 16×2 LCD With Bad Apple!!”
Attack of the Blob.
“One bad apple don’t spoil the whole bunch, girl!”
Admirable. It looks like resolution would be much improved on 20×4 display, due to better aspect ratio and 4 lines.
There is only 8 custom characters in the hd44780 (and compatible) controllers. That 8 you can manipulate per pixel. Even if you had a 20×4, the same 8 character limit applies.
I guess you’d want a fast and smart algorithm to decide which 8 to do custom and which “near enough” ones to use from the character ROM… the freeze frame of the youtube vid is showing 3 that are just blocks, those didn’t need to be custom I’m sure.
Actually, I have done that before on a 4004 display, the algorithm tries to combine similar blocks within a frame, and I was able to display it with 16×4 characters: https://www.bilibili.com/video/BV1CW41157rG
Yeah, like someone said, those 8 characters are enough, so long only 7 are used at a time on the screen, the unused or non-displayed custom characters, can be updated each frame as a new character. The video probably wasn’t playing back from a cashiers counter machine. The lcd was probably pulled and plugged into an arduino, or gpio enabled device.
Only problem there is that you’d have more than 8 total characters to populate, which would exceed the custom character capability of the driver if I understand correctly. Not sure if it’s possible to switch those custom characters between lines.
Again ? how is it different form that last article from February this year ? https://hackaday.com/2022/02/19/its-bad-apple-but-on-a-32k-eprom/
It literally mentions this in the write-up.
You really are an invaluable member of the HaD community, not.
Looks like a different LCD with a different resolution done by a different person. A more interesting question would be in what ways are they similar?
It’s the same type of controller with the same limitations in both cases. While this project here reduced the resolution until the most important limitation – only 8 custom characters – was no longer a limitation, and therefore doesn’t really teach us anything interesting, the other project didn’t compromise and solved the issue in a clever way.
OK, if you’re really that bored, make a holographic display using an tiny RBG LCD or OLED. I would find ‘that’ entertaining!
Hey, great — let’s see the write-up of your latest build so we can share it with the readers.
Bad Apple is really bad ass. I wanted to do something like that myself. Where can I find a high quality source of Bad Apple video without inter-frame artifacts? Specifically, a high quality source to generate sharp black & white stills with little dithering needed.
Here is the original upload. For any higher quality ,I guess you would need to hunt down the creators and re-render the animation from scratch.
Thanks. I’ve seen the original but the original has a lot of artifacts (you can see during movement). I think for the purpose of rendering B&W. It is best to have clean frames. Since so many people are doing adaptions, I bet most of them work on still frames. It would be preferred to have quality stills than smooth video. I have seen upscaled 4K. I wonder if there are cleaned up still frames (like animation cels)
Why are the colours inverted? (Yes, I did read the article, and the project write-up).
Ha ha! I did something similar with one of our server LCDs about 6 years ago. It was fun.
Please be kind and respectful to help make the comments section excellent. (Comment Policy)