Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HD44780: Can't understand how CreateCharacter works #618

Open
quentin7b opened this issue Nov 15, 2023 · 0 comments
Open

HD44780: Can't understand how CreateCharacter works #618

quentin7b opened this issue Nov 15, 2023 · 0 comments

Comments

@quentin7b
Copy link

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 🙏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant