Hi,
I'm new to Arduino but having a lot of fun. Most things have worked fine, but I connected an I2C 2004 display and it works fine with letters and special characters.
I decided to try to make a smile. Everything is straight forward, and it works fine as I add each additional block (up through lcd.createChar(7,H); it works perfect - see photo #1. But when I add lcd.creatChar(8,I); it stops displaying the first box. Then adding lcd.creatChar(9,J) it adds an completely new, undefined box (see photo #2) I have tried starting over on a new design and the same problem happens after 8 commands again.
The attached sketch has those last too commands removed (actually just //) and then it gives Photo #1. Then the // is removed on those two commands then I get Photo#2.
Thanks so much for any help or direction.
Jim
//* Make an LCD Smile
// Include the library:
#include <LiquidCrystal_I2C.h>
// Create lcd object of class LiquidCrystal_I2C:
LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 20, 4); // Change to (0x27,16,2) for 16x2 LCD.
// Make custom design:
byte A[] = {
B11000,
B11000,
B01100,
B01100,
B01100,
B00110,
B00110,
B00011
};
byte B[] = {
B00011,
B00001,
B00000,
B00000,
B00000,
B00000,
B00000,
B00000
};
byte C[] = {
B00000,
B10000,
B11000,
B11000,
B01100,
B00110,
B00011,
B00001
};
byte D[] = {
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B11000
};
byte E[] = {
B11100,
B00111,
B00011,
B00000,
B00000,
B00000,
B00000,
B00000
};
byte F[] = {
B00000,
B10000,
B11111,
B01111,
B00000,
B00000,
B00000,
B00000
};
byte G[] = {
B00000,
B00001,
B11111,
B11110,
B00000,
B00000,
B00000,
B00000
};
byte H[] = {
B01111,
B11100,
B10000,
B00000,
B00000,
B00000,
B00000,
B00000
};
byte I[] = {
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B00011
};
byte J[] = {
B00000,
B00001,
B00001,
B00011,
B00110,
B01100,
B11000,
B10000
};
void setup() {
// Initialize LCD and turn on the backlight:
lcd.init();
lcd.backlight();
// Create new characters:
lcd.createChar(0, A);
lcd.createChar(1, B);
lcd.createChar(2, C);
lcd.createChar(3, D);
lcd.createChar(4, E);
lcd.createChar(5, F);
lcd.createChar(6, G);
lcd.createChar(7, H);
//lcd.createChar(8, I);
//lcd.createChar(9, J);
// Clear the LCD screen:
lcd.clear();
// Print a message to the lcd:
//lcd.print("Custom Character");
}
// Print all the custom characters:
void loop() {
lcd.setCursor(6, 1);
lcd.write(0);
lcd.setCursor(6, 2);
lcd.write(1);
lcd.setCursor(7, 2);
lcd.write(2);
lcd.setCursor(8, 2);
lcd.write(3);
lcd.setCursor(8, 3);
lcd.write(4);
lcd.setCursor(9, 3);
lcd.write(5);
lcd.setCursor(10, 3);
lcd.write(6);
lcd.setCursor(11, 3);
lcd.write(7);
//lcd.setCursor(11, 2);
//lcd.write(8);
//lcd.setCursor(12, 2);
//lcd.write(9);
}