Arduino ile Binary Sayıcı Yapımı

Arduino ile binary sayıcı yapımı, ikili sayı sisteminin, bilgisayarların hatta bir çok devrenin çalışma mantığını anlamak için oldukça kolay ve eğitici bir uygulamadır. Bu içeriğimizde, Arduino ikili sayıcı devresini ve kodunu, hem port manipülasyonu hem de normal fonksiyonlarla yapacağız. Port manipülasyonu konusuna uzaksanız, bu yazı sizin için güzel bir başlangıç olabilir. Ayrıca yaptığımız bu ikili sayıcı 4-bit’tir.

Devre Şeması

Arduino ile Binary Sayıcı Yapımı arduino ile binary sayıcı,arduino binary counter,arduino ikili sayıcı,ikili saymaç,binary counter

Program Kodu

Port Manipülasyonu ile

Port manipülasyonu kullanılan bir kod, normal fonksiyonların kullanımına göre daha az yer kaplar ve daha hızlı çalışır.

int i=0;
void setup()
{
  DDRD = B10100000;
  DDRB = B00001010;
}

void loop() {
PORTD = B00000000;
PORTB = B00000000;
delay(1000);
i++;

if((i % 2) > 0) { PORTD = B00100000; } else {PORTD = B00000000; }
delay(250);
if((i % 4) > 1) {  PORTD = B10000000; } else {  PORTD = B00000000; }
delay(250);
if((i % 8) > 3) { PORTB = B00000010; } else { PORTB = B00000000; }
delay(250);
if((i % 16) > 7) { PORTB = B00001000; } else { PORTB = B00000000; }
  delay(250);
}

DRRD, ile Arduino’nun 0. ve 7. pinleri arasındakı pinlerin durumunu yani OUTPUT/INPUT olduğunu kontrol edebiliyoruz. DDRD = B10100000; satırı ile sağdan sola 0. pinden sayarak, 5. ve 7. pini “1” yani OUTPUT olarak ayarladık.

DRRB, ile Arduino’nun 8. ve 13. pinleri arasındakı pinlerin durumunu yani OUTPUT/INPUT olduğunu kontrol edebiliyoruz. DDRB = B00001010; satırı ile sağdan sola 0. pinden sayarak, 9. ve 11. pini “1” yani OUTPUT olarak ayarladık.

void loop()

Bu kısımda PORTD ve PORTB ile her döngü başında tüm pinlerin dijital çıkışını sıfırlıyoruz, devamında i++; sayacı ile beraber artışlarda sırasıyla, 21, 22, 23, 24 değerlerine göre ikili sayımı gerçekleştiriyoruz.

Klasik Fonksiyonlar ile

Aslında yukarıda yaptığımız anlatımla tamamen aynı mantıkta ilerliyor, yukarıda sadece port manipülasyonu yapıldı, burada alışık olduğumuz şekilde kodları görebilirsiniz.

int i = 0;
void setup()
{
  pinMode(5, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(11, OUTPUT);
}


void loop() {

  digitalWrite(5, LOW);
  digitalWrite(7, LOW);
  digitalWrite(9, LOW);
  digitalWrite(11, LOW);
  delay(1000);
  i++;

  if ((i % 2) > 0) {
    digitalWrite(5, HIGH);
  } else {
    digitalWrite(5, LOW);
  }
  delay(250);
  if ((i % 4) > 1) {
    digitalWrite(7, HIGH);
  } else {
    digitalWrite(7, LOW);
  }
  delay(250);
  if ((i % 8) > 3) {
    digitalWrite(9, HIGH);
  } else {
    digitalWrite(9, LOW);
  }
  delay(250);
  if ((i % 16) > 7) {
    digitalWrite(11, HIGH);
  } else {
    digitalWrite(11, LOW);
  }
  delay(250);
}

Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.