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.

// 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);
}
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:
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.(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.
Henüz yorum yapılmamış. İlk yorumu siz yapın!