Hvis du har for få inn-/ utganger kan du bruke en port expander. MCP23008 er en integrert krets som gir deg 8 ekstra inn-/ utganger ved å bruke bare to pinner på Arduino. Den kommuniserer via I²C. Denne kretsen har 3 adressepinner som må kobles enten høy (5V) eller lav (jord) for å bestemme adressen på kretsen. Det vil si at du kan koble opp 8 kretser på den samme bussen, og det vil gi 64 ekstra inn-/ utganger. Det finnes også en 16-ports versjon , MCP23017, som gjør at du maksimalt kan få 128 inn-/ utganger på I2C-bussen på en Arduino Uno.
SCL: Klokkelinje I²C, kobles til A5 på Arduino Uno.
SDA: Datalinje I²C, kobles til A4 på Arduino Uno.
RESET: Denne kobles til +5V gjennom en 10kΩ motstand.
VDD: +5V.
VSS: Jord.
GP0..GP7: General purpose IO. Disse kan konfigureres som inn- eller utganger. De har også intern pullup som Arduino.
A0..A2: Adressepinner (se tabell under).
INT: Interrupt. Denne kan kobles til en interruptlinje på Arduino (D2 eller D3 på Uno). Den gir et signal når det er endring på en inngang.
NC: No connection.
Adressering:
For å kommunisere via I²C må Arduino vite adressen til kretsen den skal kommunisere med. På disse kretsene er det 3 adressepinner, A0, A1 og A2 som kobles enten høy eller lav etter følgende tabell:
A2
A1
A0
Adresse
0
0
0
0
0
0
1
1
0
1
0
2
0
1
1
3
1
0
0
4
1
0
1
5
1
1
0
6
1
1
1
7
Eksempel med en inngang og en utgang
Her er det koblet inn en trykkbryter på GP0, og en LED på GP3. Alle adressepinnene er koblet til jord, altså I²C-adressen er 0.