Skip to content

Add - Expander Pin Definition#320

Open
brentru wants to merge 14 commits intomainfrom
add/expanders
Open

Add - Expander Pin Definition#320
brentru wants to merge 14 commits intomainfrom
add/expanders

Conversation

@brentru
Copy link
Copy Markdown
Member

@brentru brentru commented Apr 20, 2026

This pull request introduces a new "expanders" component type. The expanders being supported by this pull request are GPIO-specific expanders over I2C. However, it aims to be extensible to support multiple types of peripheral expansions over i2c, not just GPIO.

Addresses: adafruit/Wippersnapper_Protobuf#156


  • Added a new JSON schema components/expanders/schema.json to define the structure and validation rules for expander component definitions.
  • Added initial definition files for several expander chips, including:
    • ads7128 (Texas Instruments, 8-channel GPIO/ADC)
    • aw9523 (Awinic, 16-pin GPIO/LED driver)
    • mcp23017 (Microchip, 16-pin GPIO expander)
    • pcf8574 (TI, 8-pin I2C GPIO)
    • pcf8575 (TI, 16-pin I2C GPIO)
    • pi4ioe5v6408 (Diodes Inc., 8-pin GPIO)
    • tca8418 (TI, 18-pin GPIO/keyboard matrix)

@brentru brentru requested review from lorennorman and tyeth April 20, 2026 17:08
@brentru brentru added the v2 label Apr 20, 2026
@brentru
Copy link
Copy Markdown
Member Author

brentru commented Apr 20, 2026

NOTE: This API is for v2, in development and should not be merged (I think - Loren can correct me) yet.

@brentru brentru changed the title Add - Expander Pins Add - Expander Pin Definition Apr 20, 2026
Comment thread components/expanders/seesaw_attiny1616/definition.json Outdated
Comment thread components/expanders/seesaw_attiny816/definition.json Outdated
Comment thread components/expanders/seesaw_attiny817/definition.json Outdated
@tyeth
Copy link
Copy Markdown
Member

tyeth commented Apr 22, 2026

@brentru had a first pass. Minor changes.
We'll also need to distinguish how many neopixels can be on the strand at max (varies with chip and firmware) along with the pins allowed for neopixel (and the fact only ONE pin can be used at a time).

@tyeth
Copy link
Copy Markdown
Member

tyeth commented Apr 22, 2026

And I forgot to mention that the documentation urls should all point to https://learn.adafruit.com/adafruit-attiny817-seesaw which covers all the seesaw basic boards.

@brentru brentru requested a review from tyeth April 22, 2026 18:53
@brentru
Copy link
Copy Markdown
Member Author

brentru commented Apr 22, 2026

@tyeth I've made the requested changes. Could you please re-review this PR?

@tyeth
Copy link
Copy Markdown
Member

tyeth commented Apr 22, 2026

@brentru had a first pass. Minor changes. We'll also need to distinguish how many neopixels can be on the strand at max (varies with chip and firmware) along with the pins allowed for neopixel (and the fact only ONE pin can be used at a time).

What did you think about this situation? Do we need a flag to distinguish support for the higher clock speed neopixels/dotstars versus basic PWM?

Also, my first review only showed me the 3 attiny component defs, I now see there are ten components that will need verifying so I'll get through them as soon as I can.

@brentru
Copy link
Copy Markdown
Member Author

brentru commented Apr 23, 2026

Do we need a flag to distinguish support for the higher clock speed neopixels/dotstars versus basic PWM?

Yeah - I think we'll want a flag for each pin's API capability. If it is compatible with the WipperSnapper API, we should have IO present the pin as an option in the component.

Comment thread components/expanders/schema.json Outdated
Comment thread components/expanders/schema.json
Comment thread components/expanders/ads7128/definition.json
Comment thread components/expanders/aw9523/definition.json Outdated
Comment thread components/expanders/mcp23017/definition.json Outdated
Comment thread components/expanders/mcp23017/definition.json Outdated
Comment thread components/expanders/pcf8574/definition.json Outdated
Comment thread components/expanders/pcf8574/definition.json Outdated
Comment thread components/expanders/pcf8575/definition.json Outdated
Comment thread components/expanders/pcf8575/definition.json Outdated
Comment thread components/expanders/pi4ioe5v6408/definition.json Outdated
Comment thread components/expanders/tca8418/definition.json Outdated
Comment thread components/expanders/tca8418/definition.json Outdated
@brentru
Copy link
Copy Markdown
Member Author

brentru commented Apr 23, 2026

@lorennorman @tyeth I have changed the board schema (see this PR) and harmonized it with the component repo.

@tyeth Additionally - I have addressed and resolved your comments from above

Copy link
Copy Markdown
Member

@tyeth tyeth left a comment

Choose a reason for hiding this comment

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

Just one minor blip in find+replace, plus the channels field being name as integer (ok)

Comment thread components/expanders/ads7128/definition.json Outdated
Comment thread components/expanders/schema.json Outdated
@brentru brentru requested a review from tyeth April 24, 2026 14:10
Copy link
Copy Markdown
Member

@tyeth tyeth left a comment

Choose a reason for hiding this comment

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

Looks great, thanks Brent (nice update on pattern too)

@brentru
Copy link
Copy Markdown
Member Author

brentru commented Apr 24, 2026

Pattern matches existing component name patterns now

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants