Il PCF8575 è un espansore I/O a 16 bit che comunica con un microcontrollore tramite l'interfaccia I2C. Ti consente di espandere il numero di pin di input/output sul tuo Arduino, rendendolo perfetto per i progetti che richiedono molti sensori, pulsanti o LED. Questo tutorial ti guiderà attraverso la connessione e l'utilizzo del PCF8575 con Arduino.
Cosa avrai bisogno
- Modulo Expander PCF8575 I/O
- Arduino Board (ad es. Uno, Mega, Nano)
- Sensori, pulsanti o LED per il test
- Breadboard e fili jumper
- Un computer con l'IDE Arduino installato
Passaggio 1: comprensione del modulo PCF8575
PCF8575 fornisce 16 pin GPIO aggiuntivi che possono essere configurati come ingressi o uscite. Comunica tramite il protocollo I2C e ha un indirizzo I2C regolabile per collegare più moduli allo stesso bus.
Pinout
| Spillo | Funzione |
|---|---|
| VCC | Alimentazione (3.3V/5V) |
| GND | Terra |
| SDA | Linea di dati I2C |
| SCL | Linea di orologio i2c |
| P0-P15 | Pinni per scopi generici I/O |
Configurazione dell'indirizzo I2C
- L'indirizzo I2C è determinato dai pin A0, A1 e A2:
- Tutti i pin a GND:
0x20(indirizzo predefinito) - Tutti i pin a VCC:
0x27
- Tutti i pin a GND:
Passaggio 2: Cablaggio del PCF8575 ad Arduino
Ecco come collegare il PCF8575 a un Arduino:
| PIN PCF8575 | Arduino Pin |
|---|---|
| VCC | 5v |
| GND | GND |
| SDA | A4 (SDA) |
| SCL | A5 (SCL) |
Collegare le tue periferiche (ad es. LED o pulsanti) ai pin P0-P15.
Nota: Per altre schede Arduino, assicurati di utilizzare i pin i2C corretti.
Passaggio 3: installare la libreria richiesta
Per semplificare il lavoro con PCF8575, installare la libreria "PCF8575".
Passi da installare:
- Apri l'IDE Arduino.
- Vai a Schizzo > Includi la libreria > Gestisci le biblioteche.
- Cerca "PCF8575" e fai clic su Installare.
Passaggio 4: caricare il codice
Esempio: controllo dei LED
Questo codice dimostra come attivare e disattivare i LED utilizzando PCF8575:
#include <Wire.h>
#include <PCF8575.h>
PCF8575 pcf8575(0x20); // Initialize with the default I2C address
void setup() {
Serial.begin(9600);
// Set all pins as outputs
for (int i = 0; i < 16; i++) {
pcf8575.pinMode(i, OUTPUT);
}
Serial.println("PCF8575 initialized.");
}
void loop() {
// Turn all LEDs on
for (int i = 0; i < 16; i++) {
pcf8575.digitalWrite(i, HIGH);
}
delay(1000);
// Turn all LEDs off
for (int i = 0; i < 16; i++) {
pcf8575.digitalWrite(i, LOW);
}
delay(1000);
}
Esempio: pulsanti di lettura
Questo codice dimostra come leggere l'input dai pulsanti connessi a PCF8575:
#include <Wire.h>
#include <PCF8575.h>
PCF8575 pcf8575(0x20); // Initialize with the default I2C address
void setup() {
Serial.begin(9600);
// Set all pins as inputs
for (int i = 0; i < 16; i++) {
pcf8575.pinMode(i, INPUT);
}
Serial.println("PCF8575 initialized.");
}
void loop() {
for (int i = 0; i < 16; i++) {
int state = pcf8575.digitalRead(i);
Serial.print("Pin ");
Serial.print(i);
Serial.print(": ");
Serial.println(state);
}
delay(500);
}
Passaggio 5: testare l'installazione
- Collega l'Arduino al tuo computer tramite USB.
- Apri l'IDE Arduino e seleziona il corretto Asse E Porta sotto il Utensili menu.
- Carica il codice su Arduino facendo clic Caricamento.
- Per l'esempio a LED, osservare i LED accese e spegnere. Per l'esempio del pulsante, gli stati del pulsante di monitoraggio nel monitor seriale.
Applicazioni del PCF8575
- Espandere i pin GPIO per i progetti Arduino
- Costruire matrici a LED complesse
- Leggendo più sensori o array di pulsanti
- Controllo di relè e attuatori
Risoluzione dei problemi
- Nessuna risposta dal modulo: Verifica le connessioni I2C e la configurazione dell'indirizzo.
- Letture incoerenti: Garantire un alimentatore stabile e resistori di pull-up adeguati per le linee I2C.
- Comportamento del pin errato: Modalità PIN a doppio controllo (input/output) nel codice.
Conclusione
Hai interfacciato con successo l'espansore I/O PCF8575 con Arduino, permettendoti di controllare o leggere da 16 pin GPIO aggiuntivi. Sperimenta periferiche diverse ed espandi i tuoi progetti con questo modulo versatile!





2 commenti
Hallo Bruce,
benutze das Library von Renzo Mischianti (kannste nach googlen uind dort auch runterladen) und benenne den Folder in “PCF8575” um. Das Repository von Rob Tillaart hat andere Befehle und passt nicht zu dem o.g. Beispiel.
Ich hoffe das bringt dich weiter.
Gruß
Jochen
I copy the code and get a coplilation error:
C:\Users\Bruce\AppData\Local\Temp\.arduinoIDE-unsaved2025104-14104-1wy2nav.zi0f\sketch_nov4a\sketch_nov4a.ino: In function ‘void setup()’:
C:\Users\Bruce\AppData\Local\Temp\.arduinoIDE-unsaved2025104-14104-1wy2nav.zi0f\sketch_nov4a\sketch_nov4a.ino:11:13: error: ‘class PCF8575’ has no member named ‘pinMode’
pcf8575.pinMode(i, INPUT);
^~~~~~~
C:\Users\Bruce\AppData\Local\Temp\.arduinoIDE-unsaved2025104-14104-1wy2nav.zi0f\sketch_nov4a\sketch_nov4a.ino: In function ‘void loop()’:
C:\Users\Bruce\AppData\Local\Temp\.arduinoIDE-unsaved2025104-14104-1wy2nav.zi0f\sketch_nov4a\sketch_nov4a.ino:19:25: error: ‘class PCF8575’ has no member named ‘digitalRead’
int state = pcf8575.digitalRead(i);
^~~~~~~~~~~
exit status 1
Compilation error: ‘class PCF8575’ has no member named ‘pinMode’