This is now round two. last night I wondered if I popped the MCP23017 or, is the scanner software bad? So the first this I did was to stick an MCP2327  on a breadboard and ran the scanner. It still said No I2C address found. As I relooked at the documentation and other websites I noticed that the device has a reset pin which is low-active, so without it connected to a pull-up it floats. This keeps the device in reset and nothing will work.

Now the scanner is reporting I2C device at address 0x20!

Now to test my MCP23017 on my interface board. I put the device from the breadboard into the interface board, I got no device found again. Ok, I tried again I noticed that the reset pin was grounded after I put the pin to power and it worked. So now I put the original device back on the interface board, and it works. So I have to do a small re-wire on the interface board, the power, and the ground, as well as tie the reset to power the device.

Working BreadboardWorking Interface board with jumpers


With the fixes done, an addition of a wire between the display ground and the MCP23017 ground pin. Doing this will keep the logical ground between both devices the same. Now the scanner is reporting I2C device at address 0x20!

I could have wired the device's reset pin to the Arduino itself, In this way, I could keep the device reset until the software had a chance to initialize. I think that I will hold off on this for the moment.

In the next blog, I will be testing the interrupt circuit on my breadboard and test it with my oscilloscope. Then install it on the interface board.