Le MCP23017 est un expander d’E/S 16 bits basé sur I2C, avec deux ports GPIO 8 bits (Port A et Port B) pour lire des entrées numériques et piloter des sorties. Il communique via SDA/SCL à l’adresse I2C 0x20 et utilise des sorties d’interruption (INTA/INTB) pour signaler les changements d’entrée, ainsi que des connexions d’alimentation, de masse et une broche de reset.
| Broche | Signal | Description |
|---|---|---|
SCL |
SCL | I2C clock line for communication with the MCP23017 at address 0x20. |
SDA |
SDA | I2C data line for communication with the MCP23017 at address 0x20. |
GND |
ground | Ground reference for the MCP23017 input expander. |
VCC |
power | Logic supply voltage for the MCP23017 board. |
A2 |
digital | I2C address-select input A2 for setting the MCP23017 address. |
A1 |
digital | I2C address-select input A1 for setting the MCP23017 address. |
A0 |
digital | I2C address-select input A0 for setting the MCP23017 address. |
RESET |
reset | Active-low reset input for the MCP23017 I/O expander. |
NC/SO |
Not connected on I2C use; SPI SO function is unused for MCP23017 wiring. | |
NC/CS |
Not connected on I2C use; SPI chip-select function is unused for MCP23017 wiring. | |
VCC.1 |
power | Logic supply voltage pin for the MCP23017 board. |
INTB |
interrupt | Interrupt output for GPIO port B; signals input changes when enabled. |
B0 |
digital | MCP23017 GPIO port B bit 0 input/output line. |
B1 |
digital | MCP23017 GPIO port B bit 1 input/output line. |
B2 |
digital | MCP23017 GPIO port B bit 2 input/output line. |
B3 |
digital | MCP23017 GPIO port B bit 3 input/output line. |
B4 |
digital | MCP23017 GPIO port B bit 4 input/output line. |
B5 |
digital | MCP23017 GPIO port B bit 5 input/output line. |
B6 |
digital | MCP23017 GPIO port B bit 6 input/output line. |
B7 |
digital | MCP23017 GPIO port B bit 7 input/output line. |
GND.1 |
ground | Ground reference pin for the MCP23017 board. |
INTA |
interrupt | Interrupt output for GPIO port A; signals input changes when enabled. |
A0.1 |
digital | MCP23017 GPIO port A bit 0 input/output line. |
A1.1 |
digital | MCP23017 GPIO port A bit 1 input/output line. |
A2.1 |
digital | MCP23017 GPIO port A bit 2 input/output line. |
A3 |
digital | MCP23017 GPIO port A bit 3 input/output line. |
A4 |
digital | MCP23017 GPIO port A bit 4 input/output line. |
A5 |
digital | MCP23017 GPIO port A bit 5 input/output line. |
A6 |
digital | MCP23017 GPIO port A bit 6 input/output line. |
A7 |
digital | MCP23017 GPIO port A bit 7 input/output line. |
| De | Vers | Fil |
|---|---|---|
board:5V |
x1:VCC |
red |
board:5V |
x1:VCC.1 |
red |
board:GND |
x1:GND |
black |
board:GND.1 |
x1:GND.1 |
black |
board:A4 |
x1:SDA |
green |
board:A5 |
x1:SCL |
blue |
x1:A0 |
board:GND |
black |
x1:A1 |
board:GND.1 |
black |
x1:A2 |
board:GND.2 |
black |
x1:RESET |
board:5V |
red |
Cet exemple a été écrit et vérifié à la compilation pour le arduino-uno. Codey Online l'adapte pour vous à toute autre carte prise en charge.
#include <Wire.h>
#include <Adafruit_MCP23X17.h>
Adafruit_MCP23X17 mcp;
const uint8_t inputPins[] = {0, 1, 2, 3}; // GPA0..GPA3
const char* pinNames[] = {"GPA0", "GPA1", "GPA2", "GPA3"};
void setup() {
Serial.begin(115200);
while (!Serial) {
;
}
Wire.begin();
if (!mcp.begin_I2C(0x20)) {
Serial.println("Could not find MCP23017 at I2C address 0x20.");
while (1) {
delay(10);
}
}
for (uint8_t i = 0; i < 4; i++) {
mcp.pinMode(inputPins[i], INPUT_PULLUP);
}
Serial.println("MCP23017 ready. Inputs are GPA0-GPA3 with internal pull-ups enabled.");
Serial.println("Connect a switch from any input pin to GND to read LOW.");
}
void loop() {
for (uint8_t i = 0; i < 4; i++) {
int state = mcp.digitalRead(inputPins[i]);
Serial.print(pinNames[i]);
Serial.print(": ");
Serial.println(state == LOW ? "PRESSED / LOW" : "RELEASED / HIGH");
}
Serial.println("---");
delay(500);
}
Décrivez ce que vous voulez créer. Codey Online écrit le code, dessine le schéma de câblage, le compile et flashe votre carte directement depuis le navigateur.
Commencez gratuitement