Med en MCP23008 kan man utvide systemet med 8 GPIO porter, som blir styrt via I2C.
Last ned datablad: MCP23008-MCP23S08-Data-Sheet-20001919F.pdf
Vdd = Pluss
Vss = Minus
GP0-7 = GPIO porter
SCL/SDA = I2C buss
NC = Ikke i bruk
RESET = Reset registere
INT = Interrupt pin
A0-A2 er adressepinner, hvis man har flere enheter. Kan ha opp til 8 stk.
Koble adressepinne(ne) man vil bruke til Vdd med en 10k resistor per pin. 0x20 er default (alle koblet til Vss)
A0 | A1 | A2 | Adresse |
---|---|---|---|
Vss | Vss | Vss | 0x20 |
Vdd | Vss | Vss | 0x21 |
Vss | Vdd | Vss | 0x22 |
Vdd | Vdd | Vss | 0x23 |
Vss | Vss | Vdd | 0x24 |
Vdd | Vss | Vdd | 0x25 |
Vss | Vdd | Vdd | 0x26 |
Vdd | Vdd | Vdd | 0x27 |
Eksempel på oppkobling med en enkel bryter og adresse 0x20 (default i Adafruit sitt biblotek):
#include "Adafruit_MCP23008.h"
Adafruit_MCP23008 mcp;
void setup() {
mcp.begin(); // begin(ADRESSE) for annen adresse
mcp.pinMode(0, INPUT); // Sett GP0 til input
mcp.pullUp(0, HIGH); // Bruk en intern svak 100k motstand
pinMode(13, OUTPUT); // Sett pin 13 (LED ved usb port på nanoen) til output
}
void loop() {
// Slå LED av og på med bryteren
digitalWrite(13, mcp.digitalRead(0));
}