Skip to content

Conversation

@joxl
Copy link
Contributor

@joxl joxl commented Dec 4, 2024

This PR refactors @mikeysklar's recent driver addition into a dedicated module, updates the examples and adds a new example which I used while testing the new driver.

I moved the driver into its own module and named it "B" (instead of "Z") to maintain consistency with all the other drivers. While trying to locate datasheet details for the new device, I was initially confused by the "SSD1680Z" name because (as I eventually came to realize) the "Z" suffix refers to one of the die packaging options for the SSD1680, rather than a unique die. I decided to rename the Adafruit driver class to "SSD1680B", which (I think) follows the same convention used for a second variant of the SSD1675 driver. To maintain backwards compatibility (prevent breaking changes), the Adafruit_SSD1680Z name can still be imported from the adafruit_epd.ssd1680 module.

In addition to the class name change, there were a few other minor adjustments made during the refactor, including:

  • maintain type hints
  • clean up unnecessary pylint: disable directives
  • add the "Read RAM Option" command (from the datasheet, for completeness)
  • fix the NOP command (wrong hex value, also for completeness as the NOP isn't currently used in this driver)

I also updated the example scripts that follow the "import lots of drivers with usage comments for each" convention, and also added my own (new) example script (with accompanying "grid" bitmap image) which I found useful during driver testing -- the grid image makes it easier to detect if any rows of pixels are missing or offset.

I'm also preparing another PR for the adafruit/Adafruit_Learning_System_Guides project with updates for the Event Calendar and Weather Station learning guides.

Note to reviewers: (cc @ladyada) I applied license headers to all new files as I observed in other places. I'm pretty confident I got it right, but I wasn't able to find a specific document in the repo that says "do license headers like XYZ". Maybe I didn't look hard enough, but if there is such a document, I'd be happy to read it to make sure I've done it correctly.

Recommended review: commit by commit.

Closes #85

@WillAnd31
Copy link

Thanks for doing this, I was finally able to get me 2.13" bonnet to start working 🙏

@joxl
Copy link
Contributor Author

joxl commented Nov 9, 2025

I resolved the conflicts with the main branch. Looks like there have been some large repo changes since I first submitted this PR (pylint -> ruff, etc). I'll fix the failing code checks and push again.

@joxl
Copy link
Contributor Author

joxl commented Nov 9, 2025

@makermelissa, this should be up-to-date and good to go again. Let me know if there's anything blocking the merge, I'll be happy to adjust it.

@ladyada ladyada requested a review from BlitzCityDIY November 11, 2025 00:48
@joxl
Copy link
Contributor Author

joxl commented Dec 7, 2025

Hey @BlitzCityDIY, is there anything I can do to help get this merged? Without this PR being merged, the adafruit-circuitpython-epd library doesn't actually work as described in a few places in the learning system (for example, here), which is why I originally recommended that this PR get merged before the learning system PR (adafruit/Adafruit_Learning_System_Guides#2935).

joxl on adafruit/Adafruit_Learning_System_Guides#2935

This PR accompanies (and depends on changes within) #86. This PR should be merged after that one.
...

I created both of these PRs in the first place because I was trying to follow the learning system guide and it didn't work. It sounds like the same is still happening to people (e.g. #86 (comment)) at least until they find this PR and realize the learning system is referring to this unmerged branch. It would be nice to get things straightened out.

If there's something about this PR that strictly prohibits being merged, I'm happy to help get the learning system content back in line with the existing release of this package.

@BlitzCityDIY
Copy link
Contributor

hihi- sorry fell off my radar. i will review monday (tomorrow)

Copy link
Contributor

@BlitzCityDIY BlitzCityDIY left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thank you!

@BlitzCityDIY BlitzCityDIY merged commit 0941ed9 into adafruit:main Dec 8, 2025
1 check passed
adafruit-adabot pushed a commit to adafruit/Adafruit_CircuitPython_Bundle that referenced this pull request Dec 9, 2025
Updating https://github.com/adafruit/Adafruit_CircuitPython_EPD to 2.18 from 2.17.1:
  > Merge pull request adafruit/Adafruit_CircuitPython_EPD#86 from joxl/jm/ssd1680b-driver-module
  > Merge pull request adafruit/Adafruit_CircuitPython_EPD#98 from adafruit/il0373_update
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

Successfully merging this pull request may close these issues.

Neither SSD1680 drivers (Adafruit_SSD1680/Adafruit_SSD1680Z) work for the latest GDEY0213B74 E-Ink Bonnets

4 participants