PCF8575 to 16-bitowy ekspander we/wy, który komunikuje się z mikrokontrolerem za pośrednictwem interfejsu I2C. Umożliwia zwiększenie liczby pinów wejściowych/wyjściowych na Arduino, dzięki czemu jest idealny do projektów wymagających wielu czujników, przycisków lub diod LED. Ten samouczek poprowadzi Cię przez podłączenie i korzystanie z PCF8575 z Arduino.
Czego będziesz potrzebować
- PCF8575 Moduł Expander
- Arduino Board (np. UNO, Mega, Nano)
- Czujniki, przyciski lub diody LED do testowania
- Druty chleba i skoczków
- Komputer z zainstalowanym Arduino IDE
Krok 1: Zrozumienie modułu PCF8575
PCF8575 zapewnia 16 dodatkowych pinów GPIO, które można skonfigurować jako wejścia lub wyjścia. Komunikuje się za pośrednictwem protokołu I2C i ma regulowany adres I2C do podłączania wielu modułów do tej samej magistrali.
Pinout
| Szpilka | Funkcjonować |
|---|---|
| VCC | Zasilacz (3,3 V/5 V) |
| GND | Grunt |
| SDA | I2C Linia danych |
| Scl | Linia zegara I2C |
| P0-P15 | Pins I/O ogólny cel |
Konfiguracja adresu I2C
- Adres I2C jest określany przez szpilki A0, A1 i A2:
- Wszystkie szpilki do GND:
0x20(Domyślny adres) - Wszystkie szpilki do VCC:
0x27
- Wszystkie szpilki do GND:
Krok 2: Okablowanie PCF8575 do Arduino
Oto jak podłączyć PCF8575 z Arduino:
| PCF8575 PIN | PIN Arduino |
|---|---|
| VCC | 5v |
| GND | GND |
| SDA | A4 (SDA) |
| Scl | A5 (SCL) |
Podłącz peryferyjne (np. LED lub przyciski) do szpilki P0-P15.
Notatka: W przypadku innych płyt Arduino upewnij się, że używasz odpowiednich pinów I2C.
Krok 3: Zainstaluj wymaganą bibliotekę
Aby uprościć pracę z PCF8575, zainstaluj bibliotekę „PCF8575”.
Kroki do zainstalowania:
- Otwórz Arduino IDE.
- Idź do Naszkicować > Uwzględnij bibliotekę > Zarządzaj bibliotekami.
- Wyszukaj „PCF8575” i kliknij Zainstalować.
Krok 4: Prześlij kod
Przykład: kontrolowanie diod LED
Ten kod pokazuje, jak włączać i wyłączać diody LED za pomocą 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);
}
Przykład: Czytanie przycisków
Ten kod pokazuje, jak odczytać wejście z przycisków podłączonych do 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);
}
Krok 5: Przetestuj konfigurację
- Podłącz Arduino do komputera za pomocą USB.
- Otwórz Arduino IDE i wybierz poprawne Tablica I Port pod Narzędzia menu.
- Prześlij kod do Arduino, klikając Wgrywać.
- Dla przykładu LED obserwuj diody LED włączające się i wyłączające. Dla przykładu przycisku stwierdza się przycisk Monitor w monitorze szeregowym.
Zastosowania PCF8575
- Rozszerzanie pinów GPIO dla projektów Arduino
- Budowanie złożonych macierzy LED
- Odczyt wielu czujników lub tablic przycisków
- Kontrolowanie przekaźników i siłowników
Rozwiązywanie problemów
- Brak odpowiedzi z modułu: Sprawdź połączenia I2C i konfigurację adresu.
- Niespójne odczyty: Zapewnij stabilny zasilacz i odpowiednie rezystory podciągające dla linii I2C.
- Nieprawidłowe zachowanie PIN: Dwukrotnie sprawdź tryby PIN (wejście/wyjście) w kodzie.
Wniosek
Z powodzeniem połączyłeś Expander I/O PCF8575 z Arduino, umożliwiając kontrolę lub odczytanie z 16 dodatkowych pinów GPIO. Eksperymentuj z różnymi urządzeniami peryferyjnymi i rozszerz swoje projekty o ten wszechstronny moduł!





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