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.
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ı
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