I ran across an interesting 1 line LCD display that had 5x10 characters instead of the normal 5x8.
I searched google a bunch and found the source table for the 32 extended characters (http://lcd-linux.sourceforge.net/pdfdocs/hd44780.pdf; Table 4) but could not find anywhere how to get them to display properly.
I tried a number of things to to get it to display the extended characters with no success. But when I dug into the library source code I found that there was a hidden option in lcd.begin() that allowed me to define the extended 5x10 font support. (yeah!)
If the documentation could be updated to something along the lines of this, that would be great.
lcd.begin(cols, rows [, font])
Optional Parameters:
font: enable 5x10 extended fonts on compatible one line displays (1 = Enable 5x10, 0 = Enable 5x8)
The third optional parameter font is set to a 1 to enable drop fonts for displays with 5x10 characters. This allows for printing characters like g,j,p,q and y that extend below the virtual line. These extending characters can be found in the lcd character map between xE0 and xFF.
If set to a 0, the extended characters are truncated to 5x8.
It should be noted that some 5x8 two line displays will display the drop portion of the font on the second row if initialized as a single row.
As far as I know only the true 1-line displays are capable of displaying the 5x10 pixel font. The problem is that those displays are quite rare since the majority of 16x1 displays are actually configured as 8x2 displays. The displays that use only a single HD44780U (or equivalent) controller fall in that category. In order to be a true 16x1 display there must also be an auxiliary controller (HD44100 or equivalent) present. I believe that displays wider than 16x1 (if there are any) would require additional auxiliary controllers.
Some confusion comes from the fact that the number of rows of characters that can be displayed is not what the the term line (above) refers to. The term line refers to how many lines of memory are being used as far as LCD controller is concerned.
I don't think you will have much luck getting the LiquidCrystal library code revised to accommodate these rare displays. Something you may have more luck with is getting provisions added for one to send any command to the controller rather than just the commands that they have decided to implement. This may be as simple as changing one or more of the library functions from 'private' to 'public'.
The funny thing is that the library DOES already support it and it is only the documentation that needs to be updated here on the LiquidCrystal document page. In the C++ code library, the parameter is called 'dotsize'
from LiquidCrystal,cpp:
void LiquidCrystal::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) {
floresta is totally correct. The display I grabbed out of a junk pile does have 2x HD44100 in addition to the HD44780U.
I have included pictures of the cool 1x24 with the 5x10 characters with and without the extra parameter running, as well as the same code running on a standard 1602a 2x16 display with the parameter set.
To make this work, I just used this:
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(24, 1, 1); // Extra dotsize Parameter here for 5x10 support
lcd.clear();
// Print a message to the LCD.
lcd.print(" Amon");
lcd.write(231);
lcd.print(" ");
lcd.write(234);
lcd.write(240);
lcd.write(241);
lcd.write(249);
lcd.write(255);
lcd.print("----->24");
}
wolfman1138:
The funny thing is that the library DOES already support it and it is only the documentation that needs to be updated here on the LiquidCrystal document page. In the C++ code library, the parameter is called 'dotsize'
Sure.
But because the documentation is controlled by the devs, the only way to get it updated is to file an issue to let them know what needs to be updated.
(The process does work, I've gotten several of the documentation pages updated/corrected in the past)