- Katılım
- 27 Şubat 2019
- Mesajlar
- 12,769
Burada bir hata var mı?Tamam bağlantı böyle. Ama SRCLR yi de dirençle Vcc ye çek bari de usül yerine gelsin
Bu 4 sinyalli yapı, bu şekilde 1 GPIO kaybediyorsun. Ama kullanımı kolay.
Boot'tan sonraki süreç şu şekilde:
1) SER, SRCLK, RCLK output olarak tanımlıyorsun. OE yi daha ellemiyorsun.
1) SER ve SRCLK ile full 0 yazıyorsun ve bu veri soldaki flip floplara yazılıyor.
2) RCLK'da pozitif bir pals üretiyorsun, bu palsın yükselen kenarında veri sağdaki flip floplara yazılıyor.
3) OE yi output olarak tanımlıyorsun ve 0 yapıyorsun.
Artık bundan sonra OE ile işin yok, hep 0 da tutulacak o. Bundan sonraki işin SER, SRCLK ile veriyi yazmak, sonra da RCLK ile dışarı çıkmasını sağlamak.
Setup kısmında tam doğru yazamamış olabilirim.
		Kod:
	
	int rclk = 5;
int srclk = 6;
int ser = 4;
int oe = 2;
byte leds = 0;
void setup()
{
  pinMode(rclk, OUTPUT);
  pinMode(ser, OUTPUT);
  pinMode(srclk, OUTPUT);
  for (int i = 0; i < 8; i++)
  {
    bitSet(leds, i);
    digitalWrite(rclk, LOW);
    shiftOut(ser, srclk, LSBFIRST, leds);
    digitalWrite(rclk, HIGH);
    delay(10);
  }
  pinMode(oe, OUTPUT);
  digitalWrite(oe, LOW);
}
void loop()
{
  leds = 0;
  registeraYaz();
  delay(100);
  for (int i = 0; i < 8; i++)
  {
    bitSet(leds, i);
    registeraYaz();
    delay(100);
  }
  for (int i = 8; i >= 0; i--)
  {
    bitClear(leds, i);
    registeraYaz();
    delay(100);
  }
}
void registeraYaz()
{
  digitalWrite(rclk, LOW);
  shiftOut(ser, srclk, LSBFIRST, leds);
  digitalWrite(rclk, HIGH);
} 
	

 
						
					 
 
		 
			 
			 
			 
 
		 
 
		
 
 
		 
 
		 
 
		