Bu devrede arduino uno ile aşağı yukarı sayıcı uygulaması yaptık. Tek 7 segment üzerinden 0 dan 9' a kadar sayıları oluşturabiliriz. Hatta heksadesimal yani onaltılık sayı sistemi içerisindeki a b c d e f harflerini de oluşturabiliriz.
Biz bu örnekte aşağı-yukarı-sıfırla olmak üzere 3 adet buton kullandık.
Aşağı butonuna basılınca sayıyı bir azaltan,
Yukarı butonuna basılınca sayıyı bir çoğaltan,
Sıfırla butonuna basılınca sayıyı sıfırlayan bir devre çizdik.

Devre şeması aşağıda yer almaktadır.



Arduino Uno' nun A0 bacağına AŞAĞI butonu, A1 bacağına YUKARI butonu, A2 bacağına ise SIFIRLA butonu bağlanmıştır.

Çıkışlarda ise 2 nolu bacaktan itibaren 7 segment display' in bacak bağlantıları yapılmıştır.

Şimdi kodlara göz atalım.

Kod:
int a = 8, b = 7, c = 6, d = 5, e = 4, f = 3, g = 2; //7 parçalı gösterge bacakları değişkenlerle isimlendirildi.
int i = 0; //rakam gönderirken kullanılacak i değişkeni tanımlandı ve ilk değer olarak sıfır verildi.
void setup() {


  pinMode(a, OUTPUT); //segment bacakları çıkış olarak ayarlandı.
  pinMode(b, OUTPUT);
  pinMode(c, OUTPUT);
  pinMode(d, OUTPUT);
  pinMode(e, OUTPUT);
  pinMode(f, OUTPUT);
  pinMode(g, OUTPUT);
  yaz(i); // bir kez çalıştırılmak üzere yaz fonksiyonu üzerinden SIFIR yazıldı.


}


void loop() {
  int asagi = digitalRead(A0); //A0 dijital yöntemle okundu ve asagi değişkenine aktarıldı.
  int yukari = digitalRead(A1); //A1 dijital yöntemle okundu ve yukari değişkenine aktarıldı.
  int sifirla = digitalRead(A2); //A2 dijital yöntemle okundu ve sifirla değişkenine aktarıldı.
  if (asagi == 1) // asagi değişkeni 1 ise yapılacaklar.
  {
    delay(300); //300 ms bekleme verildi. Sürekli geriye saymasın diye.
    if (i == 0) { // burada geriye doğru 0' dan sonra gelecek değer ayarlanıyor.
      i = 9; //0' dan sonra 9 gelecek.
      yaz(i); //yaz fonksiyonu i değişkeni ile çalıştırıldı.
    }
    else //i sıfırdan farklı ise yapılacakları buraya yazdık.
    {
      i--;//i sıfırdan farklı ise bir azalt.
      yaz(i); // yaz fonksiyonu i değişkenine göre çalıştırıldı.
    }
  }
  else if (yukari == 1) //yukarı butonuna basıldıysa yapılacaklar yazıldı.
  {
    delay(300); //300 ms bekleme verildi. Sürekli geriye saymasın diye.
    if (i == 9) { //i değeri 9 ise yapılacaklar.
      i = 0; // i değeri 9 dan sonra sıfırlanacak.
      yaz(i); // yaz fonksiyonu i değeri ile çalıştırıldı.
    }
    else  //i değeri 9 dan farklı ise yapılacaklar. 
    {
      i++; //i değerini bir arttır.
      yaz(i); // yaz fonksiyonu i değeri ile çalıştırıldı.
    }
  }
  else if(sifirla==1) //sifirla butonuna basıldıysa.
  {
    delay(300); //300ms bekleme aralığı.
    i=0; //i yi sıfırla.
    yaz(i); //i yi yaz.
    
  }








}


void yaz(int rakam) //dışarıya değer göndermeyen void türünde, dışarıdan int türünde değişken alan yaz isimli fonksiyon tanımlanıyor.
{
  switch (rakam) //dışarıdan alınan değişkene göre yapılacaklar switch yapısı ile tanımlanıyor.
  {
    //bundan sonraki kısımda ortak anotlu 7 segment displaye göre, gönderilecek kodlar belirleniyor.
    case 0:
      digitalWrite(a, LOW);
      digitalWrite(b, LOW);
      digitalWrite(c, LOW);
      digitalWrite(d, LOW);
      digitalWrite(e, LOW);
      digitalWrite(f, LOW);
      digitalWrite(g, HIGH);
      break;
    case 1:
      digitalWrite(a, HIGH);
      digitalWrite(b, LOW);
      digitalWrite(c, LOW);
      digitalWrite(d, HIGH);
      digitalWrite(e, HIGH);
      digitalWrite(f, HIGH);
      digitalWrite(g, HIGH);
      break;
    case 2:
      digitalWrite(a, LOW);
      digitalWrite(b, LOW);
      digitalWrite(c, HIGH);
      digitalWrite(d, LOW);
      digitalWrite(e, LOW);
      digitalWrite(f, HIGH);
      digitalWrite(g, LOW);
      break;
    case 3:
      digitalWrite(a, LOW);
      digitalWrite(b, LOW);
      digitalWrite(c, LOW);
      digitalWrite(d, LOW);
      digitalWrite(e, HIGH);
      digitalWrite(f, HIGH);
      digitalWrite(g, LOW);
      break;
    case 4:
      digitalWrite(a, HIGH);
      digitalWrite(b, LOW);
      digitalWrite(c, LOW);
      digitalWrite(d, HIGH);
      digitalWrite(e, HIGH);
      digitalWrite(f, LOW);
      digitalWrite(g, LOW);
      break;
    case 5:
      digitalWrite(a, LOW);
      digitalWrite(b, HIGH);
      digitalWrite(c, LOW);
      digitalWrite(d, LOW);
      digitalWrite(e, HIGH);
      digitalWrite(f, LOW);
      digitalWrite(g, LOW);
      break;
    case 6:
      digitalWrite(a, HIGH);
      digitalWrite(b, HIGH);
      digitalWrite(c, LOW);
      digitalWrite(d, LOW);
      digitalWrite(e, LOW);
      digitalWrite(f, LOW);
      digitalWrite(g, LOW);
      break;
    case 7:
      digitalWrite(a, LOW);
      digitalWrite(b, LOW);
      digitalWrite(c, LOW);
      digitalWrite(d, HIGH);
      digitalWrite(e, HIGH);
      digitalWrite(f, HIGH);
      digitalWrite(g, HIGH);
      break;
    case 8:
      digitalWrite(a, LOW);
      digitalWrite(b, LOW);
      digitalWrite(c, LOW);
      digitalWrite(d, LOW);
      digitalWrite(e, LOW);
      digitalWrite(f, LOW);
      digitalWrite(g, LOW);
      break;
    case 9:
      digitalWrite(a, LOW);
      digitalWrite(b, LOW);
      digitalWrite(c, LOW);
      digitalWrite(d, LOW);
      digitalWrite(e, HIGH);
      digitalWrite(f, LOW);
      digitalWrite(g, LOW);
      break;
  }


}