The examples in this guide are no longer supported. Check out the MCP23xx guide for CircuitPython and Python usage: https://learn.adafruit.com/using-mcp23008-mcp23017-with-circuitpython/overview

The way that you hook the chip up to your breadboard will depend on the package you use (8-pin MCP23008 or 16-pin MCP23017). The pinouts are quite different between the two chips, so check the datasheet carefully first.

The MCP23017 is shown above with two LEDs connected, on GPA0 and GPA1.

  1. The yellow line is SDA
  2. The green line is SCL
  3. The three black lines on top are the address pins
  4. The brown pin is RESET which must be pulled high for normal operation
  5. Red is 3.3V
  6. Black is GND.

Since these io expander chips use i2c to communiate, you can theoretically power them from 5V while still connecting the i2c data lines to a 3.3V device like the pi. That's because the Pi has two i2c resistors that pull up SDA/SCL to 3.3V. Just make sure not to connect any resistors to SDA/SCL to 5V and you can power the chip from 5V (and have 5V input/output on the MCP chip). Its also fine of course to power the MCP chip from 3.3V but the 5V line on the Pi has more current capability so you might find its better to go that way.

BUT if your Pi power supply drifts a little higher than 5V, it might stop being able to register the 3.3V signal. So we recommend starting with 3.3V, and if you need 5V GPIO signalling on the MCP expander, try swapping the red wire to 5.0V

You can compare the two pinouts below to figure out how the 8-pin package should be hooked up depending on the pin names:

You're free to hook anything you want up to the 8 or 16 GPIO pins, but LEDs are used here since most people have one or two laying around and it's an easy way to verify the pin outputs.  Be sure to connect a resistor in series to GND, though, to prevent the LED from burning out (if you don't know what value or the details of your LED try something large like 1K to start with).

Here's a quick video of the setup I was using during testing and development.  An MCP23017 is used here, running out to a mixed-signal oscilloscope with an 8-channel logic analyzer (ergo the white clip-ons on all the GPIO pins).

This guide was first published on Oct 26, 2012. It was last updated on Oct 26, 2012.

This page (Hooking it all up) was last updated on Oct 26, 2012.

Text editor powered by tinymce.