PCF8574, I2C veri yolu üzerinden çalışan 8 bitlik bir remote I/O (giriş/çıkış) port genişletme entegresidir. ESP8266'nın sınırlı sayıda olan GPIO pinlerini korumak ve sadece iki pin (SDA ve SCL) kullanarak 8 adet ek dijital çıkış (örneğin 8 adet LED) kontrol etmek amacıyla kullanılır.

Görseldeki devre şemasına göre ESP8266 (NodeMCU) ile PCF8574 modülü arasındaki I2C ve güç bağlantı haritası şu şekildedir:
| Bileşen / Hat | NodeMCU Pin | GPIO Karşılığı | İşlev / Kablo Rengi |
|---|---|---|---|
| SDA (I2C Veri) | D1 | GPIO5 | I2C Veri Hattı (Yeşil Kablo) |
| SCL (I2C Saat) | D2 | GPIO4 | I2C Saat Sinyal Hattı (Yeşil Kablo) |
| VCC (Besleme) | 3V3 | 3.3V Power | Entegre Güç Beslemesi (Kırmızı Kablo) |
| GND (Toprak) | GND | Ground | Ortak Toprak Hattı (Siyah Kablo) |
0x20 (adres pinlerinin durumuna göre değişebilir) adres aracıyla haberleşir. Entegre, pini LOW (0V) çektirerek (quasi-bidirectional yapı) LED'lerin üzerindeki akımın akmasını sağlar ve 8 adet LED sırayla ya da toplu şekilde yazılımsal olarak kontrol edilir.
Aşağıdaki C++ kodu, harici bir kütüphane gerektirmeden doğrudan standart Wire.h kütüphanesini kullanarak PCF8574 üzerindeki 8 adet LED'i sırayla yakıp söndürür:
#include <Arduino.h>
#include <Wire.h>
// PCF8574 I2C Adresi (Genellikle 0x20 veya modüle göre 0x27)
const int PCF8574_ADDR = 0x20;
void setup() {
Serial.begin(115200);
delay(10);
// I2C Pinlerini ESP8266 Donanımına Göre Tanımla (D1: SDA, D2: SCL)
Wire.begin(D1, D2);
Serial.println("\nESP8266 PCF8574 Port Genişletici Testi Başlatıldı.");
}
void loop() {
// 0'dan 7'ye kadar olan pinleri sırayla yak (Walking LED Animasyonu)
for (int i = 0; i < 8; i++) {
byte data = ~(1 << i); // İlgili biti LOW yaparak LED'i aktif et
Wire.beginTransmission(PCF8574_ADDR);
Wire.write(data);
Wire.endTransmission();
Serial.print("Aktif LED Pini P");
Serial.println(i);
delay(150);
}
// Geri yönde tarama (7'den 0'a)
for (int i = 7; i >= 0; i--) {
byte data = ~(1 << i);
Wire.beginTransmission(PCF8574_ADDR);
Wire.write(data);
Wire.endTransmission();
Serial.print("Aktif LED Pini P");
Serial.println(i);
delay(150);
}
}
Henüz yorum yapılmamış. İlk yorumu siz yapın!