Arduino İle TCA9548A I2C Çoklayıcı ve Çoklu OLED Ekran Kullanımı

👤 Yazar: Admin 📅 Tarih: 24.10.2026 07:03 👁️ Görüntüleme: 1

Arduino Veya Mikrokontrolcü İle TCA9548A I2C Çoklayıcı ve Çoklu OLED Ekran Projesi

Aynı I2C adresine sahip birden fazla cihazın (örneğin aynı I2C adresini kullanan birden fazla 0.96 inç OLED ekranın) tek bir mikrokontrolcüye bağlanması gerektiğinde adres çakışması sorunu yaşanır. TCA9548A I2C Multiplexer (Çoklayıcı) entegresi, tek bir I2C kanalını 8 ayrı bağımsız I2C kanalına bölerek aynı adrese sahip birden fazla ekranın veya sensörün aynı anda kullanılmasını sağlar.

TCA9548A I2C Multiplexer ve Çoklu OLED Ekran Bağlantı Şeması


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

Görseldeki devre şemasına göre mikrokontrolcü, TCA9548A çoklayıcı ve OLED ekranlar arasındaki bağlantı haritası şu şekildedir:

Bileşen / Hat TCA9548A Terminali Mikrokontrolcü / Ekran Karşılığı Açıklama / Kablo Rengi
Ana I2C & Güç (Mikrokontrolcü) VIN VCC (5V / 3.3V) Güç Beslemesi (Kırmızı Kablo)
GND GND Toprak Hattı (Siyah Kablo)
SDA MCU SDA Pini Ana I2C Veri Hattı
SCL MCU SCL Pini Ana I2C Saat Sinyali
OLED Ekran Kanalları (Örnek) SD0 / SC0 (Kanal 0) 1. OLED (SDA / SCK) Birinci Ekran Bağlantısı
SD1 / SC1 (Kanal 1) 2. OLED (SDA / SCK) İkinci Ekran Bağlantısı
TCA9548A Çalışma Mantığı:
Çoklayıcı varsayılan olarak 0x70 I2C adresine sahiptir. Kod içerisinden hangi kanala veri gönderileceği seçilerek aynı adrese sahip birden fazla OLED ekrana ayrı ayrı veri yazılabilir.

2. C++ Arduino Kodu (Çoklu Kanal Seçimi ve OLED Kontrolü)

Aşağıdaki C++ kodu, TCA9548A üzerindeki kanalları değiştirerek farklı OLED ekranlara ayrı ayrı metin yazdırmayı sağlar:

C++ / TCA9548A & Multiple OLED Example

#include <Arduino.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

// TCA9548A I2C Adresi
#define TCA_ADDR 0x70

// OLED Ekran Ölçüleri
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET    -1

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

// TCA9548A ilgili kanalını seçme fonksiyonu
void tcaSelect(uint8_t bus) {
  if (bus > 7) return;
  Wire.beginTransmission(TCA_ADDR);
  Wire.write(1 << bus);
  Wire.endTransmission();
}

void setup() {
  Serial.begin(115200);
  Wire.begin();
  delay(100);

  // 1. Ekranı Yapılandır (Kanal 0)
  tcaSelect(0);
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println("Kanal 0 OLED Bulunamadı!");
    while(1);
  }
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(0, 0);
  display.println("Ekran 1 (Kanal 0)");
  display.display();

  // 2. Ekranı Yapılandır (Kanal 1)
  tcaSelect(1);
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println("Kanal 1 OLED Bulunamadı!");
    while(1);
  }
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(0, 0);
  display.println("Ekran 2 (Kanal 1)");
  display.display();
}

void loop() {
  // İhtiyaca göre kanallar arası geçiş yapılarak ekranlar güncellenebilir
  delay(1000);
}

💬 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