Expand your project possibilities, with the Adafruit AW9523 GPIO Expander and LED Driver Breakout - a cute and powerful I2C expander with a lot of tricks up its sleeve.
GPIO expanders work like this: you have a board with some number of GPIO but not enough for your project - maybe you need more buttons or LEDs. You could upgrade to a board with massive number of GPIO like the Grand Central, or you could pop on one of these boards. Connect it over I2C and then you can send/receive I2C commands to control the GPIO pins to write and read them. It's going to be slower than direct GPIO access, but maybe that doesn't matter if it takes a millisecond instead of a microsecond. You only need the two I2C pins, and you can even share the I2C port with other sensors and devices. Heck, you can even add more expanders for massive I/O control!
The AW9523 is a twist on the common I2C expander:
First up, its very affordable - who doesn't love that?
It has 16 I/O pins, that'll double most boards' pin count
Four I2C address options, so you can connect 4 expanders to one bus
Each pin can be an input or an output
IRQ output can alert you when input pins change value
This chip does not support internal pull-ups or pull-downs, you will need to add an external resistor if you need one
However, it does have 8-bit linear constant-current LED dimming support so you can connect LEDs without resistors and have great looking dimming without PWM
The first 8 pins can be configured as open drain (as a group)
The lack of internally-configurable pull's is a bit of a bummer, but we think the expander more than makes up for it with the constant-current LED drive. If you're using an expander to add lots of controllable LEDs, this board will make it very easy. Since its constant-current, you don't need resistors in line with each LED (although it won't hurt if you do): simply connect the LED anode to one of the many VIN pads, then connect the cathode to the GPIO pin.
Of course, you can control any buttons or other I/O with the pins - we just think this board is particularly suited to LED driving. There's also an interrupt output, you can enable the pin-change IRQ for any pins so you can be notified when its time to read the I/O states.
One oddity about this chip is the default I2C address determines the initial boot-state of the pins. The libraries immediately soft-reset and configure all the pins to inputs and push-pull so you can expect the same behavior no matter what the I2C address is. However, we recommend you check the datasheet Table 1 to make sure this doesn't affect your hardware.
Adafruit have written both Arduino and CircuitPython/Python libraries for the AW9523, so you can get started whether you have an Arduino-compatible UNO or a Raspberry Pi 4 - or anything in between.
To get you going fast, Adafruit spun up a custom made PCB in the STEMMA QT form factor, making it easy to interface with. The STEMMA QT connectors on either side are compatible with the SparkFun Qwiic I2C connectors. This allows you to make solderless connections between your development board and the AW9523 or to chain it with a wide range of other sensors and accessories using a compatible cable. QT Cable is not included, but we have a variety in the shop.
TECHNICAL DETAILS
AW9523 Features:
16 multi-function I/O, each for LED drive (current-source dimming) or GPIO mode
256 steps linear dimming in LED drive mode
Any GPIO can be configured as an input or an output independently
Support interrupt, 8us deglitch, low-level active
Standard I2C interface, AD1/AD0 select I2C device address
SDA, SCL, SHDN, and all GPIO can accept in 1.8V logic input
ESD protection: ±4000V HBM (MIL-STD-883H Method 3015.8 standard?
Latch-up ?±450mA? JEDEC STANDARD NO.78C SEPTEMBER 2010 standard?
Supply shutdown function, low-level active
2.5V~5.5V power supply
I2C address default 0x58 (can be 0x59, 0x5A or 0x5B)
Product Dimensions: 38.0mm x 17.8mm x 4.5mm / 1.5" x 0.7" x 0.2"
Product Weight: 2.5g / 0.1oz
AW9523 English Datasheet