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

Differences with sh1107 #24

Open
PvdBerg1998 opened this issue Jan 2, 2021 · 4 comments
Open

Differences with sh1107 #24

PvdBerg1998 opened this issue Jan 2, 2021 · 4 comments

Comments

@PvdBerg1998
Copy link

PvdBerg1998 commented Jan 2, 2021

Happy new year!

I've got some sh1107's lying around and they seem very similar to the sh1106. In fact, they appear to work with this crate, or at least I was able to render some text. However, their resolution is 64x128 instead of 128x64. I've tried to add this resolution to your code but I got stuck on the i2c send implementation assuming a 128 byte array. Do you know if this is easily fixable?

Thanks in advance!

Edit: I've tried rendering at 90 degrees, which works sort of. The coordinate 0,0 renders to 0,32 (left middle), so something is wrong with the coordinate transform.

@PvdBerg1998
Copy link
Author

I've implemented my own tiny driver. Just fyi, it appears that the screen is shifted 32 pixels to the right, meaning 0,0 is actually 32,0.

@aaron-hardin
Copy link

I would also be interested in the sh1107, though I guess that would be it's own crate.
I found these resources but haven't verified the command differences with the datasheets:

It seems that (according to the code above) the following commands are different:

  • 2 suggested ratio
  • 3 set multiplex
  • 5 display offset
  • 18 set vcom detect

@aaron-hardin
Copy link

I got a fork working here: https://github.com/aaron-hardin/sh1107
It's not pretty but it's working for the most part. It has some stray pixels along the top but other than that uses the full display.

@DanCrank
Copy link

DanCrank commented May 28, 2022

I found that bumping the DisplayOffset from 0x60 to 0x62 cleaned up the two uninitialized columns of pixels on my hardware (Adafruit 64x128 OLED FeatherWing). I have no idea why this is the case, since the C++ driver uses 0x60 and works fine on the same hardware.

@aaron-hardin, thanks for the fork!

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

3 participants