Arduino Pin Çoğaltma 2 Adet 74HC595 Shift Register ile

👤 Yazar: ozcan 📅 Tarih: 20.07.2026 08:21 👁️ Görüntüleme: 30

Projelerinizde çok sayıda LED, display veya çıkış elemanı kullanmanız gerektiğinde Arduino'nun dijital pinleri yetersiz kalabilir. 74HC595 shift register (kaydırmalı kaydedici) entegresi, mikrodenetleyicinizden sadece 3 pin (Data, Clock, Latch) kullanarak 8 adet dijital çıkış elde etmenizi sağlar. Entegrelerin seri bağlanabilme (daisy-chain) özelliği sayesinde, pin sayısını artırmadan iki adet 74HC595'i arka arkaya bağlayarak tek seferde 16 adet çıkışı bağımsızca kontrol edebilirsiniz.

2 Adet 74HC595 Shift Register ile Arduino Pin Çoğaltma

Kaskad (Seri) Bağlantı Mimarisi: İki entegreyi birbirine bağlarken Latch (ST_CP) ve Clock (SH_CP) pinleri ortak hat olarak birleştirilir ve Arduino'ya aktarılır. İlk entegrenin veri çıkış pini olan Q7S (9. pin), ikinci entegrenin veri giriş pini olan DS (14. pin) hattına bağlanır. Böylece Arduino'dan gönderilen 16 bitlik verinin ilk 8 biti ikinci entegreye kaydırılır.

Arduino Uygulama Kodları

// 74HC595 Entegre Bağlantı Pinleri
const int latchPin = 9;  // Entegrenin ST_CP (12.) pini - Kilitleme
const int clockPin = 10; // Entegrenin SH_CP (11.) pini - Saat Darbesi
const int dataPin = 8;  // İlk entegrenin DS (14.) pini - Veri Girişi

void setup() {
  // Kontrol pinlerini çıkış olarak ayarlıyoruz
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop() {
  // 1. ÖRNEK: Sırayla tüm pinleri tarayarak LED yürüyen ışık uygulaması
  for (int i = 0; i < 16; i++) {
    // 16 bitlik veride sadece ilgili pini lojik 1 (açık) yapıyoruz
    unsigned int veri = 1 << i;
    
    // Veriyi entegrelere göndermeden önce latch pinini LOW yapıyoruz
    digitalWrite(latchPin, LOW);
    
    // 16 bitlik verinin önce yüksek (High) baytını gönderiyoruz (İkinci Entegre)
    shiftOut(dataPin, clockPin, MSBFIRST, (veri >> 8));
    
    // Ardından düşük (Low) baytını gönderiyoruz (Birinci Entegre)
    shiftOut(dataPin, clockPin, MSBFIRST, veri);
    
    // Veriyi çıkış pinlerine aktarmak için latch pinini HIGH yapıyoruz
    digitalWrite(latchPin, HIGH);
    
    delay(100);
  }

  // 2. ÖRNEK: Tüm çıkışları aynı anda açıp kapatma
  // Tüm çıkışları HIGH yapmak için (65535 veya ikilik tabanda 16 adet 1)
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, 0xFF); // 2. Entegre (P8 - P15)
  shiftOut(dataPin, clockPin, MSBFIRST, 0xFF); // 1. Entegre (P0 - P7)
  digitalWrite(latchPin, HIGH);
  delay(1000);

  // Tüm çıkışları LOW yapmak için
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, 0x00);
  shiftOut(dataPin, clockPin, MSBFIRST, 0x00);
  digitalWrite(latchPin, HIGH);
  delay(1000);
}

Kodun Çalışma Mantığı ve shiftOut Fonksiyonu

Arduino'nun gömülü fonksiyonu olan shiftOut, veriyi bit bit donanıma aktarır. Sistem iki adet entegreden oluştuğu için 16 bitlik (2 bayt) bir veri paketini şu mantıkla işler:

  • Bit Kaydırma (Shift) Prensibi: Data hattından gönderilen her yeni bit, clock sinyaliyle birlikte entegrenin ilk hafıza hücresine girerken mevcut bitleri bir yan hücreye öteler. İlk gönderilen 8 bit, ardışık gönderim esnasında Q7S pininden taşarak otomatik olarak ikinci entegrenin hafızasına yerleşir.
  • Latch (Veri Kilitleme) Yönetimi: İletim esnasında çıkış pinlerinde kararsız durumlar veya titremeler oluşmaması için latchPin veri transferi boyunca LOW tutulur. Gönderim tamamlandığında HIGH yapılarak iç hafızadaki tüm veri aynı anda fiziksel pinlere yansıtılır.
  • Bayt Ayrıştırma: Kodda kullanılan (veri >> 8) işlemi, 16 bitlik değişkenin üst sekiz bitini sağa kaydırarak bağımsız bir bayt halinde ikinci entegreye göndermeyi sağlar.

Kurulumu gerçekleştirirken kararlı voltaj takviyesi sağlamak adına her entegrenin VCC ve GND pinleri arasına 100nF değerinde birer adet dekuplaj kondansatörü yerleştirilmesi, yüksek frekanslı sinyal gürültülerini engellemek açısından tavsiye edilir.

💬 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