Description
Hello there,
Thanks for this awesome library, I have a project for using an HD44780 LCD display with my pico and it fits perfectly.
For the need of my project, I need to display 4 custom characters to the first 2x2 LCD matrix
So (0,0), (1,0), (0,1) and (1,1).
I've defined my custom characters to be like this
lcd.CreateCharacter(0x0, []byte{0x00, 0x07, 0x07, 0x18, 0x18, 0x18, 0x18, 0x19})
lcd.CreateCharacter(0x1, []byte{0x00, 0x1C, 0x1C, 0x03, 0x03, 0x0F, 0x0F, 0x13})
lcd.CreateCharacter(0x2, []byte{0x19, 0x1E, 0x1E, 0x18, 0x18, 0x07, 0x07, 0x00})
lcd.CreateCharacter(0x3, []byte{0x13, 0x03, 0x03, 0x03, 0x03, 0x1C, 0x1C, 0x00})
and I print them doing
lcd.SetCursor(0, 0)
lcd.Write([]byte{0x0})
lcd.Display()
lcd.SetCursor(1, 0)
lcd.Write([]byte{0x1})
lcd.Display()
lcd.SetCursor(0, 1)
lcd.Write([]byte{0x2})
lcd.Display()
lcd.SetCursor(1, 1)
lcd.Write([]byte{0x3})
lcd.Display()
And when I run it, it show some weird stuff, like all the "custom" chars are merged or something.
I can't figure how it is possible, it seems like when I try to add offset to custom chars the result changes...
I think I might does not understand how it works.
Note that If i do
lcd.CreateCharacter(0x0, []byte{0x00, 0x07, 0x07, 0x18, 0x18, 0x18, 0x18, 0x19})
lcd.Write([]byte{0x0})
lcd.Display()
it works fine.
But using this (so the exact same character but in 0x1 memory place)
lcd.CreateCharacter(0x1, []byte{0x00, 0x07, 0x07, 0x18, 0x18, 0x18, 0x18, 0x19})
lcd.Write([]byte{0x1})
lcd.Display()
then the character is broken...
If anyone could explain to me how it's meant to be used it will be very nice 🙏