Arduino - Shift Register Uygulaması - Elektrik Elektronik Projeleri

Post Top Ad

13 Ağustos 2015 Perşembe

Arduino - Shift Register Uygulaması

Bu yazımızda 74HC595 shift register entegresini kullanarak iki uygulama yapacağız. Birinci uygulamamızda 8 adet led ile 8-bit sayıcı yapacağız, diğer uygulamada ise ledlerle karaşimşek yapacağız.
Devre:
Uygulamalarımızda kullanacağımız devre yukarıdaki devredir.

74HC595 entegresinin sadece 3 bacağını arduinoya bağlıyoruz. Bunlar latch, data ve clock bacaklarıdır.
DS: Data pini
ST_CP: Latch pini
SH_CP: Clock pini

Kodlar:
Arduinoyu programlarken shiftOut fonksiyonunu kullanmaktayız. Bu fonksiyon shift register kullanımını daha kolay hale getirmektedir. Fonksiyonun dört parametresi vardır. İlk iki parametrede data ve clock pinlerini belirtmekteyiz. Üçüncü parametrede, bitler sıralanırken ilk bitin MSB mi yoksa LSB mi olacağını seçeriz (MSB: Basamak değeri en yüksek bittir, en soldaki bit. LSB:  Basamak değeri en düşük bittir, en sağdaki bit.). Son parametrede ise shift register çıkışından hangi sayının 8-bit yazdırılacağını belirtiriz.

shiftOut fonksiyonunu kullanırken latch pinini önce LOW sonra HIGH yapmaktayız.

i.            8-bit Sayıcı
int latchPin = 8;
int clockPin = 12;
int dataPin = 11;

void setup() {
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop() {
  for (int j = 0; j < 256; j++) {
    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, MSBFIRST, j);
    digitalWrite(latchPin, HIGH);
    delay(1000);
  }
}
ii.            Karaşimşek
int latchPin = 8;
int clockPin = 12;
int dataPin = 11;

int j = 1;

void setup() {
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop() {
  for (j; j < 128; j <<= 1) {
    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, LSBFIRST, j);
    digitalWrite(latchPin, HIGH);
    Serial.println(j);
  }
  for (j; j > 1; j >>= 1){
    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, LSBFIRST, j);
    digitalWrite(latchPin, HIGH);
    Serial.println(j);
  }
}

Hiç yorum yok:

Yorum Gönder

Post Top Ad