|
|
| Line 1: |
Line 1: |
| − | ==Introduction==
| |
| | | | |
| | [[File:IOExpand shield 1.jpg|400px]] | | [[File:IOExpand shield 1.jpg|400px]] |
| | [[File:IOExpand shield 2.jpg|400px]] | | [[File:IOExpand shield 2.jpg|400px]] |
| − |
| |
| − | ==Schematic==
| |
| − |
| |
| − |
| |
| − |
| |
| − | ==Application Ideas==
| |
| − |
| |
| − | '''test'''
| |
| − | <syntaxhighlight lang="c">
| |
| − |
| |
| − | #include <Wire.h>
| |
| − |
| |
| − | const byte mcp_address=0x20; // I2C Address of MCP23017 Chip
| |
| − | const byte GPIOA=0x12; // Register Address of Port A
| |
| − | const byte GPIOB=0x13; // Register Address of Port B
| |
| − | const byte IODIRA=0x00; // IODIRA register
| |
| − | const byte IODIRB=0x01; // IODIRB register
| |
| − |
| |
| − | void setup()
| |
| − | {
| |
| − | //Send settings to MCP device
| |
| − | Wire.begin(); // join i2c bus (address optional for master)
| |
| − | Wire.beginTransmission(mcp_address);
| |
| − | Wire.write((byte)IODIRA); // IODIRA register
| |
| − | Wire.write((byte)0x03); // set GPIOA-0/GPIOA-1 to inputs
| |
| − | Wire.endTransmission();
| |
| − | }
| |
| − |
| |
| − | void loop()
| |
| − | {
| |
| − | Wire.beginTransmission(mcp_address);
| |
| − | Wire.write((byte)GPIOA); // set MCP23017 memory pointer to GPIOB address
| |
| − | Wire.endTransmission();
| |
| − | Wire.requestFrom(0x20, 1); // request one byte of data from MCP20317
| |
| − | int inputs=Wire.read(); // store the incoming byte into "inputs"
| |
| − |
| |
| − | if((inputs&0x01)==0)
| |
| − | {
| |
| − | Wire.beginTransmission(mcp_address);
| |
| − | Wire.write(GPIOA); // address bank A
| |
| − | Wire.write((byte)0x04); // value to send GPIOA-2 HIGH
| |
| − | Wire.endTransmission();
| |
| − | }
| |
| − | if((inputs&0x02)==0)
| |
| − | {
| |
| − | Wire.beginTransmission(mcp_address);
| |
| − | Wire.write(GPIOA); // address bank A
| |
| − | Wire.write((byte)0x08); // value to send GPIOA-3 HIGH
| |
| − | Wire.endTransmission();
| |
| − | }
| |
| − | else
| |
| − | {
| |
| − | Wire.beginTransmission(mcp_address);
| |
| − | Wire.write(GPIOA); // address bank A
| |
| − | Wire.write((byte)0x00); // value to send GPIOA LOW
| |
| − | Wire.endTransmission();
| |
| − | }
| |
| − | }
| |
| − | </syntaxhighlight>
| |
| − |
| |
| − | ==Resources==
| |
| − | *[http://cnlearn.linksprite.com/?p=5598 Turial]
| |