I use custom characters that I created with this handy tool: http://icontexto.com/charactercreator/
But I have some strange problems...
Sometimes characters do not write correct.
This is a simple example.
This code should show an small "v" for volt and a small "H" on an lcd screen.
But it shows "HH".
I clearly write character 3 and 11, but writes 11 twice.
This is not the first problem, and can solve it with renaming some numbers, but verry unpredictable.
When I change number 11 to 15, it does show an "vh" correctly, why?
Whats the problem here?
I'm not sure how lcd.createChar deals with the numbers above 7 but the controller treats 8-F as foldback addresses. Those values get you to the same memory locations as 0-7.
I see, it works good as long when I use 0-7.
Higher values replace one of those 7 characters.
7byte of memory isn't much, I wanted to use around 15.
Is there a list of all standard characters on the lcd's?
I'm not sure... Liquid crystal only has support for ASCII. Any body know how to print the other characters? page 18 is filled with over 100 special characters that could save some space instead of having to create our own...
I'm no C programmer but the information about lcd.print here LiquidCrystal - Arduino Reference does not support your statement. To print any of the characters on the chart you must first determine the binary character code. You get the upper four bits from the column headings and the lower four bits from the row headings. For example for the capital "Sigma" symbol the column heading is 1001 and the row heading is xxxx0100. You substitute the values from the column heading for the 'xxxx' part of the row heading and you get 10010100. This is your 'data' and the 'BASE' should be BIN. So to print a Sigma you would use
So to print a Sigma you would use lcd.print(10010100, BIN);.
0x94, maybe, but not 10010100, which would be a lowercase 'o' with circumflex (I think)
What's the difference between using 94 hex and 10010100 binary?
The lowercase 'o' with circumflex is 11010100 binary or D4 hex.
This is a prime example of using the appropriate radix. The original information was provided in binary so that is the appropriate radix to use. When you convert to another radix, such as hex, the very best you can do is get it right.
What's the difference between using 94 hex and 10010100 binary?
No difference at all, but you wrote 10010100 in decimal, which is 0x98BDF4
0xf4 in the character ROM is a lowercase 'o' with circumflex (0xD4 is uppercase)
When you convert to another radix, such as hex, the very best you can do is get it right.
From what you are saying it looks like the term BASE refers to the output, not the input. So what would the correct syntax be now that we agree on the value to use? Would these work?