/*
Hitachi HD44780 Char ROM A00
*/
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
void printGroup(int group) {
Serial.print("\nShowing ASCII values ");
Serial.print(group);
Serial.print(" through ");
Serial.println(group + 31);
delay(2000);
}
void setup() {
Serial.begin(115200);
Serial.println("\nThis demo shows the chars stored in the");
Serial.println("'A00' ROM commonly shipped with LCD displays");
Serial.println("powered by Hitachi HD44780 chips.");
lcd.init();
lcd.backlight();
bool row = 0;
int charNum = 0;
int groupNum = 0;
printGroup(0);
/*
//for (charNum = 0; charNum < 256; charNum)
for (int group = 0; group <= 8; group++) {
groupNum = group * 32;
//row = 0;
row? row = 1 : row = 0;
for (int col = 0; col < 16; col++) {
lcd.setCursor(col, row);
lcd.print(char((group * 32) + col));
Serial.print("Char ");
Serial.print((group * 32) + col);
Serial.println(" decimal, ");
//charNum++;
//if (charNum == 256) break;
delay(100);
}
//row? row = 1 : row = 0;
//row = 1;
}
*/
///*
for (int group = 0; group < 16; group++) {
groupNum = group * 16;
for (int col = 0; col < 16; col++) {
lcd.setCursor(col, row);
lcd.print(char(charNum + groupNum));
Serial.print("Char ");
Serial.print(charNum + groupNum);
Serial.print(" decimal, ");
Serial.print("0x");
Serial.print(charNum + groupNum, HEX);
Serial.print(" hex, ");
Serial.print((char)(charNum + groupNum));
Serial.println(" unicode.");
delay (500);
charNum++;
if (groupNum + charNum == 256) {
Serial.println("\nValues from 0 - 255 printed.");
break;
}
if (charNum % 16 == 0) {
charNum = 0;
if (row == 0) {
row = 1;
} else {
row = 0;
lcd.clear();
printGroup((group + 1) * 16);
}
}
}
}
//*/
}
void loop() {
// nothing to loop about
}