ESP8266 (NodeMCU) ve PCF8574 I2C Port Genişletici

👤 Yazar: admin 📅 Tarih: 05.10.2026 09:32 👁️ Görüntüleme: 21

ESP8266 (NodeMCU) ve PCF8574 I2C Port Genişletici Uygulaması

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.

ESP8266 NodeMCU ve PCF8574 Port Genişletici Bağlantı Şeması


1. Donanım Pin Eşleşme Tablosu

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)
I2C ve Çıkış Mantığı Notu:
PCF8574, I2C protokolü üzerinden 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.

2. C++ Arduino Kodu (Wire Kütüphanesi ile 8 LED Tarama / Flasher)

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:

C++ / ESP8266 PCF8574 8-LED Chaser

#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);
  }
}

💬 Yorumlar

Henüz yorum yapılmamış. İlk yorumu siz yapın!

Bir Yorum Bırakın

Güvenlik Kontrolü:

Yenidir.com
↑ Sayfa Başı
📞 İletişim ✉ E-Posta Gönder 🟥 YouTube
© 2026 Yenidir.com
Yenidir CMS V0.1