On a standard character LCD the dot matrix for each character is typically a 5X7 dot matrix. The display is physically build that way.
No, you cannot use such a standard character LCD to show the characters rotated by 90 degrees.
You could use the LCD in vertical position and define your own characters in a 7X5 dot matrix... but you do not have enough user definable characters (there are 8 ) to define a character set for printing normal language text. If you can manage with 8 user-defined characters… you can for sure make a nice bar graph.
Depends on what you'd like to display.
If you want to display some bars to indicate the potmeter position, that's not really a problem.
But if you want to display some texts, you'll have a nice challenge.
The 1602 displays (and alike) usually have 5 x 7 pixels per character.
The character to be displayed are retrieved from ROM, and you've got 8 characters you can define yourself.
You can't redefine some character once it is on your display, the already displayed character will change to the new definition too.
So you would need to be very ingenious, for instance by creating partial characters with which you can build multiple different characters, similar to 7 segment displays.
I didn't come up with that myself, read about it here on the forum.
You can find some more info on that by doing a forum search for "big font". This (click !) is one of the threads about that.
You'd have to start over because you want to have rotated fonts, but have a look and see what you can do with it.
It would be your best chance as far as i can see.
If that's not what you want, you might consider a small graphic display.
Well, you need to install the correct library and use that to control your display, so in that respect they work the same.
But because these graphic displays have more to offer, there's also more to control.
It takes a bit more practice to get this going, but it isn't too hard.
There are 32*128 OLED displays, but those are quite small (and relative expensive).
But there's tons of displays like these so you've got some browsing to do.
All the tones consist of a maximum of 2 characters, like for example "C#"
A maximum of 8 tones should be displayed from bottom to top.
Am I right that I can create those letters and signs in an LCD Character Creator (already in 90 degrees rotated form) and then arrange them on my LCD (40x2)?
Any suggestions on how to do that btw. what to keep in mind?
In this case, follow the link and the search term in my first reply.
I think you can come up with something, because you need a limited number of characters to be displayed.
You do need to get creative however.
If you do come up with a solution, please post it here so fellow forum members can benefit from it too.
marl808:
Am I right that I can create those letters and signs in an LCD Character Creator (already in 90 degrees rotated form) and then arrange them on my LCD (40x2)?
Possibly.
Keep in mind that you only get 8 custom characters.
And the actual pixels on the screen does not change.
i.e. the 5x8 pixels (you actually can control 5x8 pixels) are still in the same place after you rotate the display.
So your custom characters will be 8 pixels wide and 5 tall when the screen is physically rotated.
Also, displays like 40x4 are really two separate 20x4 displays.
These require 2 enable signals. There are only 2 libraries that I know of that support this and they are not any of of the popular libraries like LiquidCrystal.
128x64 graphic displays are relatively inexpensive.
You can find ks0108 displays on ebay starting at around $10 USD on ebay.
Some libraries allow rotation which would give you the rotated text.
bperrybap:
Also, displays like 40x4 are really two separate 20x4 displays.
These require 2 enable signals. There are only 2 libraries that I know of that support this and they are not any of of the popular libraries like LiquidCrystal.
How old is the spec for these displays? I'm guessing 25~30 years, at least.
After sleeping on all that I'm thinking about displaying the scale horizontally and having a bar indicator (like an underline of the tone being played) jumping from tone to tone.
Here is the corresponding part of my code:
const char *Amaj0_Names[] = {"A6", "B6", "C#6", "C6", "E6", "F#6", "G#6", "A7"};
const char *Pent8_Names[] = {"C8", "D8", "E8", "G8", "A9"};
}
// if the note has changed, print and play it
if(theNote != OldNote) {
dispNote(theNote);
playNote(theNote);
Serial.println(theNote);
OldNote=theNote;
}
I'd like to use a 40x4 display.
So is there any function that lets me display btw. arrange the characters of the chosen scale (e.g. Amaj0_Names) within one line and putting a line (bar indicator) below the note being played?