Arduino ile 0-99 ileri sayıcı uygulaması Arduino 0-99 forward counter application

Arduino devreleri ve uygulamaları

Arduino ile 0-99 ileri sayıcı uygulaması

Şekildeki devre 2 adet ortak anodlu 7 segment display kullanılmış 0-99  ileri sayıcı devresidir.

Otrak anodlu 7 segment display iç yapısı
7 segment display bağlantı ucları

Ortak anodlu demek display içinde bulunan ledlerin artı (+) uçlarının birleşik tek bir uçda toplanmış olması anlamına gelir. yani displayı sürerken ortak anoda sabit artı (+) ve yazılması istenen rakama göre yanması gereken ledler eksi (-) ile sürülecektir.bu nedenle aşağıda verilmiş olan kod da gösterilecek rakama göre yanması gereken ledlere “0” yani (-) ,sönük olması gereken ledlere ise “1” yani (+) verilmiştir.

Örneğin yukarı şekildeki ortak anodlu display e 1 rakamını yazdırmak için B ve C ye ,7 rakamını yazdırmak için ABC ye ,8 rakamını yazdırmak içinse tüm ledlere eksi (-) verilmesi gerekir.Ortak katodlu display de ise bu işlemlerin tersi uygulanır. 

Kod daki  “delay(100);” fonksyonu her rakam yazıldıktan sonra beklenecek sürenin 100 ms olduğunu belirtir yani sayıcının sayma hızını belirler de denebilir.ayrıca if fonksyonu kullanılarak sayıcı ileri,geri veya her basmada bir sayı artırma veya azaltma gibi fonksiyonlar eklenebilir.

Dilenirse çoklayıcı multiplexer kullanarak veya display anodlarının farklı zamanlarda tetiklenmesi sağlanarak display sayısı rahatlıkla artırılabilir fakat bu biraz daha ileri kodlama gerektirecektir. burada anlatımın sade olması açısından mümkün olan en basit kodlamaya yer verilmiştir.

int count = 0; // counter

void setup() {

pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
digitalWrite(7, 1);

}

void loop()

{

digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 0); // “0” rakamı için display pozisyonları
digitalWrite(6, 0);
digitalWrite(1, 0);
digitalWrite(0, 1);
delay(100);

digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 1); // “1” rakamı için display pozisyonları
digitalWrite(6, 1);
digitalWrite(1, 1);
digitalWrite(0, 1);
delay(100);

digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 1);
digitalWrite(5, 0); // “2” rakamı için display pozisyonları
digitalWrite(6, 0);
digitalWrite(1, 1);
digitalWrite(0, 0);

delay(100);

digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 0); // “3” rakamı için display pozisyonları
digitalWrite(6, 1);
digitalWrite(1, 1);
digitalWrite(0, 0);

delay(100);

digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 1); // “4” rakamı için display pozisyonları
digitalWrite(6, 1);
digitalWrite(1, 0);
digitalWrite(0, 0);

delay(100);

digitalWrite(2, 0);
digitalWrite(3, 1);
digitalWrite(4, 0);
digitalWrite(5, 0); // “5” rakamı için display pozisyonları
digitalWrite(6, 1);
digitalWrite(1, 0);
digitalWrite(0, 0);

delay(100);

digitalWrite(2, 0);
digitalWrite(3, 1);
digitalWrite(4, 0);
digitalWrite(5, 0); // “6” rakamı için display pozisyonları
digitalWrite(6, 0);
digitalWrite(1, 0);
digitalWrite(0, 0);

delay(100);

digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 1); // “7” rakamı için display pozisyonları
digitalWrite(6, 1);
digitalWrite(1, 1);
digitalWrite(0, 1);

delay(100);

digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 0); // “8” rakamı için display pozisyonları
digitalWrite(6, 0);
digitalWrite(1, 0);
digitalWrite(0, 0);

delay(100);

digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 0); // “9” rakamı için display pozisyonları
digitalWrite(6, 1);
digitalWrite(1, 0);
digitalWrite(0, 0);

delay(100);

//////////////////////////////////////////////////////////////////

count++;

if (count == 1){ // döngü sayacı “count” 1 saydığında aşağıdaki işlemi yap

digitalWrite(9, 1);
digitalWrite(10, 0);
digitalWrite(11, 0);
digitalWrite(12, 1); // “1” rakamı için display pozisyonları
digitalWrite(13, 1);
digitalWrite(8, 1);
digitalWrite(7, 1);

}

if (count == 2){ // döngü sayacı “count” 2 saydığında aşağıdaki işlemi yap

digitalWrite(9, 0);
digitalWrite(10, 0);
digitalWrite(11, 1); // “2” rakamı için display pozisyonları
digitalWrite(12, 0);
digitalWrite(13, 0);
digitalWrite(8, 1);
digitalWrite(7, 0);
}
if (count == 3){ // döngü sayacı “count” 3 saydığında aşağıdaki işlemi yap

digitalWrite(9, 0);
digitalWrite(10, 0);
digitalWrite(11, 0); // “3” rakamı için display pozisyonları
digitalWrite(12, 0);
digitalWrite(13, 1);
digitalWrite(8, 1);
digitalWrite(7, 0);
}
if (count == 4){ // döngü sayacı “count” 4 saydığında aşağıdaki işlemi yap
digitalWrite(9, 1);
digitalWrite(10, 0);
digitalWrite(11, 0); // “4” rakamı için display pozisyonları
digitalWrite(12, 1);
digitalWrite(13, 1);
digitalWrite(8, 0);
digitalWrite(7, 0);
}
if (count == 5){ // döngü sayacı “count” 5 saydığında aşağıdaki işlemi yap
digitalWrite(9, 0);
digitalWrite(10, 1);
digitalWrite(11, 0); // “5” rakamı için display pozisyonları
digitalWrite(12, 0);
digitalWrite(13, 1);
digitalWrite(8, 0);
digitalWrite(7, 0);
}
if (count == 6){ // döngü sayacı “count” 6 saydığında aşağıdaki işlemi yap
digitalWrite(9, 0);
digitalWrite(10, 1);
digitalWrite(11, 0); // “6” rakamı için display pozisyonları
digitalWrite(12, 0);
digitalWrite(13, 0);
digitalWrite(8, 0);
digitalWrite(7, 0);
}
if (count == 7){ // döngü sayacı “count” 7 saydığında aşağıdaki işlemi yap
digitalWrite(9, 0);
digitalWrite(10, 0);
digitalWrite(11, 0); // “7” rakamı için display pozisyonları
digitalWrite(12, 1);
digitalWrite(13, 1);
digitalWrite(8, 1);
digitalWrite(7, 1);
}
if (count == 8){ // döngü sayacı “count” 8 saydığında aşağıdaki işlemi yap
digitalWrite(9, 0);
digitalWrite(10, 0);
digitalWrite(11, 0); // “8” rakamı için display pozisyonları
digitalWrite(12, 0);
digitalWrite(13, 0);
digitalWrite(8, 0);
digitalWrite(7, 0);
}

if (count == 9){ // döngü sayacı “count” 9 saydığında aşağıdaki işlemi yap
digitalWrite(9, 0);
digitalWrite(10, 0);
digitalWrite(11, 0); // “9” rakamı için display pozisyonları
digitalWrite(12, 0);
digitalWrite(13, 1);
digitalWrite(8, 0);
digitalWrite(7, 0);
}
if (count == 10){ // döngü sayacı “count” 10 saydığında aşağıdaki işlemi yap
digitalWrite(9, 0);
digitalWrite(10, 0);
digitalWrite(11, 0); // “0” rakamı için display pozisyonları
digitalWrite(12, 0);
digitalWrite(13, 0);
digitalWrite(8, 0);
digitalWrite(7, 1);
count = 0; // counter sayacını resetle
}
}

Şekil ve şemaların çiziminde www.easyeda.com ve www.tinkercad.com sitelerinde ki online editör ve simülasyon programlarından yararlanılmıştır.