Skip to content

not working with 128x64 product 938 #7

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

Closed
dhalbert opened this issue Jan 5, 2018 · 6 comments
Closed

not working with 128x64 product 938 #7

dhalbert opened this issue Jan 5, 2018 · 6 comments
Assignees

Comments

@dhalbert
Copy link
Contributor

dhalbert commented Jan 5, 2018

A user can't get much working with this 128x64 OLED: https://www.adafruit.com/product/938.
See https://forums.adafruit.com/viewtopic.php?f=60&t=128946.

I happen to have one of these and have confirmed the problem. .invert() works, and so does .poweron() and .poweroff(), but nothing else really. Reconfirmed that library works fine with a 128x32 FeatherWing.

@deshipu
Copy link
Contributor

deshipu commented Jan 5, 2018

Are we sure it's SSD1306 and not SH1106? The latter has very similar commands (including invert and power), but different way of accessing the display memory (SH1106 uses pages). I had exactly the same problem myself, and it turned out the display is SH1106 and not SSD1306.

I have a driver for the SH1106 for MicroPython that you could try and see if it works: https://bitbucket.org/thesheep/micropython-oled/src/3caad24615e16343723ccd46eddb3a615be502a6/sh1106_i2c.py?at=default&fileviewer=file-view-default

@dhalbert
Copy link
Contributor Author

dhalbert commented Jan 5, 2018

I'm adding reset-pin support to the library and it looks like it's all working out. The FeatherWing OLED has hardware reset support, so testing didn't encounter this issue. I just have to re-test the other combinations to make sure I didn't break something else.

@dhalbert dhalbert self-assigned this Jan 5, 2018
@deshipu
Copy link
Contributor

deshipu commented Jan 5, 2018

Are you saying that it works when you reset it through the hardware pin?

@dhalbert
Copy link
Contributor Author

dhalbert commented Jan 5, 2018

Yep, doing a reset makes it work fine. Part of __init__() is to call .poweron(). In the SPI subclass this toggles the reset pin. In the I2C class it just sends an I2C command. I made passing the reset pin possible (and optional) to the I2C instance, and if it exists, it will toggle it as well. I'll have a PR soon.

@deshipu
Copy link
Contributor

deshipu commented Jan 5, 2018

I wonder if we are missing something in the initialization sequence then — software reset should work as well.

@ladyada
Copy link
Member

ladyada commented Jan 5, 2018

nah, its def a hardware thing. basically these OLEDs need a clean reset on power on, for the featherwing i add a little resetter chip, but low cost or earlier-designed OLEDs didnt have it, so you have to manually reset.

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