Last Updated on 1 March 2022 by Suffocation
I'm always surprised that there are still a few readers on this blog. Recently, Siegfried wrote to me and mentioned that he wanted to display some bars on a Crystal LCD display, asking if I'd ever done it before. The answer was no, but that was about to change.
Facts
Parts list
Arduino One
Areas of application
- Representations of measured values as a function of time
- Equaliser visualisation
Views
It's there at the end 😉
Analyse
Such an LCD display consists of several rows and columns. Only one character fits into each row and column combination.

The pixels of a character cannot be addressed individually, but it is possible to create custom characters.

So I’ve created a symbol for each level. I’ve left out the ‘empty’ symbol because my display shows the same as C8, and as I clear the display beforehand, it makes no difference.

To be able to use both lines, the respective results must be split in two (more splits are needed for more lines); if the lower line is full (i.e. C8), it continues with the upper line.

The values for each bar are stored in an array. The array is then directly converted into the bars.
Programming
Libraries
The library for the display is already included in the Arduino GUI.
#include
Test programme
The test program generates a new random value every 4 seconds. With each new value, the results in the array are shifted one position to the right. If the array is full, the last value is discarded.
And that's how it looks:
Problems
Quirky fragments in the custom characters
If I change the order in the setup, i.e., add the custom characters before I output anything to the display, I get these fragments. I assume the display init still has an error in the library, and it's only properly initialised with the first output.
Miscellaneous
nix.
Conclusion
Once the function of the display was clear and I knew I had to go via the custom characters, it was child's play. Organising the data in an array offers a good way to manipulate it later and process it in loops. I hope you like it, many thanks to Siegfried for the idea, if you have any further wishes for expansion or questions, please leave a comment.
Related Posts
Sources
https://www.arduino.cc/en/Reference/LiquidCrystal
https://de.wikipedia.org/wiki/Fl%C3%BCssigkristallanzeige
https://maxpromer.github.io/LCD-Character-Creator/
https://www.hackster.io/jacoslabbert99/arduino-lcd-icons-custom-characters-548f38