PCF8575 este un expander I/O pe 16 biți care comunică cu un microcontroler prin interfața I2C. Vă permite să extindeți numărul de pini de intrare/ieșire pe Arduino, ceea ce îl face perfect pentru proiectele care necesită mulți senzori, butoane sau LED -uri. Acest tutorial vă va ghida prin conectare și utilizarea PCF8575 cu Arduino.
Ce vei avea nevoie
- PCF8575 Modul I/O Expander
- Arduino Board (de exemplu, Uno, Mega, Nano)
- Senzori, butoane sau LED -uri pentru testare
- Tablă de pâine și jumper
- Un computer cu IDE Arduino instalat
Pasul 1: Înțelegerea modulului PCF8575
PCF8575 oferă 16 pini GPIO suplimentari care pot fi configurați ca intrări sau ieșiri. Comunică prin protocolul I2C și are o adresă I2C reglabilă pentru conectarea mai multor module la același autobuz.
Pinout
| Ac | Funcţie |
|---|---|
| VCC | Sursă de alimentare (3.3V/5V) |
| GND | Sol |
| SDA | Linia de date I2C |
| SCL | Linia de ceas I2C |
| P0-P15 | Pinii I/O de scop general |
Configurarea adresei I2C
- Adresa I2C este determinată de pinii A0, A1 și A2:
- Toți pinii către GND:
0x20(adresa implicită) - Toți pinii către VCC:
0x27
- Toți pinii către GND:
Pasul 2: Cablarea PCF8575 către Arduino
Iată cum să conectați PCF8575 la un Arduino:
| Pin PCF8575 | Pinul Arduino |
|---|---|
| VCC | 5V |
| GND | GND |
| SDA | A4 (SDA) |
| SCL | A5 (SCL) |
Conectați-vă perifericele (de exemplu, LED-uri sau butoane) la pinii P0-P15.
Nota: Pentru alte plăci Arduino, asigurați -vă că utilizați pinii I2C corecți.
Pasul 3: Instalați biblioteca necesară
Pentru a simplifica lucrul cu PCF8575, instalați biblioteca „PCF8575”.
Pași pentru instalare:
- Deschideți IDE Arduino.
- Du -te la Schiţa > Include biblioteca > Gestionați bibliotecile.
- Căutați „PCF8575” și faceți clic pe Instala.
Pasul 4: Încărcați codul
Exemplu: Controlul LED -urilor
Acest cod demonstrează cum să porniți și să dezactivați LED -urile folosind 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);
}
Exemplu: Butoane de citire
Acest cod demonstrează cum să citiți intrarea din butoanele conectate la 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);
}
Pasul 5: Testați configurarea
- Conectați Arduino la computer prin USB.
- Deschideți IDE Arduino și selectați corect Bord şi Port sub Instrumente meniu.
- Încărcați codul la Arduino făcând clic pe Încărcați.
- Pentru exemplul LED, observați LED -urile care se pornesc și se opresc. Pentru exemplul butonului, Butonul monitorizează în monitorul serial.
Aplicațiile PCF8575
- Extinderea acelor GPIO pentru proiectele Arduino
- Construirea matricilor LED complexe
- Citirea mai multor senzori sau tablouri de butoane
- Controlul releelor și actuatorilor
Depanare
- Fără răspuns din modul: Verificați conexiunile I2C și configurația adresei.
- Lecturi inconsistente: Asigurați-vă o sursă de alimentare stabilă și rezistențe de tragere adecvate pentru liniile I2C.
- Comportament incorect PIN: Moduri de pin dublu-verificare (intrare/ieșire) în cod.
Concluzie
Ați interfațat cu succes PCF8575 I/O Expander cu Arduino, permițându -vă să controlați sau să citiți din 16 pini GPIO suplimentari. Experimentați cu diferite periferice și extindeți -vă proiectele cu acest modul versatil!





2 comentarii
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’