Versions Compared
Key
- This line was added.
- This line was removed.
- Formatting was changed.
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å I2CI²C-bussen på en Arduino Uno.
Forklaring på pinnene
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.
Code Block | ||||
---|---|---|---|---|
| ||||
#include <Wire.h> #include <Adafruit_MCP23008.h> const int addr = 0; Adafruit_MCP23008 mcp; void setup(){ mcp.begin(addr); mcp.pinMode(0, INPUT); mcp.pinMode(3, OUTPUT); } void loop(){ if(mcp.digitalRead(0)) mcp.digitalWrite(3, HIGH); else mcp.digitalWrite(3, LOW); } |