Sonuçlar 1 to 1 of 1

Konu: Arduino Uno ile 0-9 Aşağı Yukarı Sayıcı-Sıfırlama Özellikli-7 segment display örneği

  1. #1

    Icon1 Arduino Uno ile 0-9 Aşağı Yukarı Sayıcı-Sıfırlama Özellikli-7 segment display örneği

    Bu uygulamada, 0' dan 9' a kadar sayan bir 7 parçalı gösterge (7 segment display) kullanılmıştır.
    Aşağı, yukarı ve sıfırla olmak üzere 3 adet 1 gönderen buton kullanılmıştır.
    Butonlara basılınca bir kez algılama yapabilmesi için programın o noktada beklemesini sağlayan while karar verme döngüsü kullanılmıştır.
    While karar verme yapısı, şart doğru değer ürettiği müddetçe, while yapısı içinde yer alan komut demetinin çalışmasını sağlayan bir mekanizma sunmaktadır. Bu özellikten yararlanarak butondan el çekilene kadar programın buton durumunu güncellemesini sağlayan bir kodlama kullanılmıştır.
    Bahsi geçen özellikle alakalı detaylı bilgiye buradan ulaşabilirsiniz: While yapısı

    Arduino Programımız şu şekilde çalışacaktır:
    -Aşağı butonuna basılınca, son sayı değeri 0' sa sayı 9 olacak; değilse sayı bir azalarak gösterilecek.
    -Yukarı butonuna basılınca, son sayı değeri 9' sa sayı 0 olacak; değilse sayı bir artarak gösterilecek.
    -Sıfırla butonuna basılınca, sayı değeri sıfırlanacak.

    Bu işlemleri yapmak üzere A0 girişine 1 gönderen sıfırla butonu, A1 girişine 1 gönderen yukarı butonu, A2 girişine 1 gönderen aşağı butonu bağlanmıştır.

    Devre bağlantısı aşağıdaki gibi olacaktır.




    Devrede ortak anotlu (common anode) 7 segment display kullanılmıştır. Çalışması şu şekildedir:





    Programı çalıştıran kodlar, açıklamaları ile birlikte aşağıda verilmiştir. Sorularınızı bu başlık altında sorabilirsiniz.

    Kod:
    int a = 7, b = 6, c = 5, d = 4, e = 3, f = 2, g = 1; //int türünde abcdefg değişkenleri tanımlandı ve ilk değerleri belirlendi.
    int sayi = 0;
    void setup() {
      // bir defa çalıştırılacak kodlar buraya yazılır.
      pinMode(a, OUTPUT); //7 segment display bacakları burada çıkış yapıldı.
      pinMode(b, OUTPUT); //www.ilerikontrol.com
      pinMode(c, OUTPUT);
      pinMode(d, OUTPUT);
      pinMode(e, OUTPUT);
      pinMode(f, OUTPUT);
      pinMode(g, OUTPUT);
    pinMode(A0,INPUT);
    pinMode(A1,INPUT);
    pinMode(A2,INPUT);
    }
    
    
    void loop() {
      // sürekli çalışacak ana program kodları buraya yazılır.
      int sifirla = digitalRead(A0); //butonları okuduk.
      int yukari = digitalRead(A1);
      int asagi = digitalRead(A2);
      if (sifirla == 1) //sıfırla butonuna basılmışsa
      {
        goster(0); sayi = 0; //goster alt programına 0 değeri gönderildi. sayi değişkeni de sıfır yapıldı.
        while (sifirla == 1) //butona hala basılı ise
        {
          sifirla = digitalRead(A0); //butonu tekrar oku
        }
      }
      else if (yukari == 1) //yukari butonuna basılmış ise.
      {
        sayi++; //sayıyı bir arttır.
        if (sayi > 9) { //artıştan sonra değer 9 dan büyük ise.
          sayi = 0;//sayıyı sıfırla
        }
        goster(sayi); //sayıyı goster alt programına gönderdik.
        while (yukari == 1) //butona hala basılı ise
        {
          yukari = digitalRead(A1); //butonu tekrar oku
        }
      }
      else if (asagi == 1) //asağı butonuna basılmış ise.
      {
        sayi--; //değerini 1 azalt.
        if (sayi < 0) { //sayı değeri sıfırdan küçük ise.
          sayi = 9; //sayı 9 olsun. www.ilerikontrol.com
        }
        goster(sayi); //alt programa sayi değeri gönderildi. alt programda ona göre çalışacaktır.
        while (asagi == 1) //butona hala basılı ise
        {
          asagi = digitalRead(A2); //butonu tekrar oku
        }
      }
    
    
    }
    void goster(int rakam) //dışarıdan int değişken alan ama kendi dışına
    //değişken döndürmeyen alt program tanımlandı.
    {
      switch (rakam) //rakam değişkeninin durumuna göre
      {
        case 0: //rakam değişkeni sıfır olursa
          digitalWrite(a, 0); //0 sayısı oluşturuldu.
          digitalWrite(b, 0);
          digitalWrite(c, 0);
          digitalWrite(d, 0);
          digitalWrite(e, 0);
          digitalWrite(f, 0);
          digitalWrite(g, 1);
          break;
        case 1://rakam değişkeni 1 olursa
          digitalWrite(a, 1); //1 sayısı oluşturuldu.
          digitalWrite(b, 0);
          digitalWrite(c, 0);
          digitalWrite(d, 1);
          digitalWrite(e, 1);
          digitalWrite(f, 1);
          digitalWrite(g, 1);
          break;
        case 2: //rakam değişkeni 2 olursa
          digitalWrite(a, 0); //2 sayısı oluşturuldu.
          digitalWrite(b, 0);
          digitalWrite(c, 1);
          digitalWrite(d, 0);
          digitalWrite(e, 0);
          digitalWrite(f, 1);
          digitalWrite(g, 0);
          break;
        case 3: //rakam değişkeni 3 olursa
          digitalWrite(a, 0); //3 sayısı oluşturuldu.
          digitalWrite(b, 0);
          digitalWrite(c, 0);
          digitalWrite(d, 0);
          digitalWrite(e, 1);
          digitalWrite(f, 1);
          digitalWrite(g, 0);
          break;
        case 4: //rakam değişkeni 4 olursa
          digitalWrite(a, 1); //4 sayısı oluşturuldu.
          digitalWrite(b, 0);
          digitalWrite(c, 0);
          digitalWrite(d, 1);
          digitalWrite(e, 1);
          digitalWrite(f, 0);
          digitalWrite(g, 0);
          break;
        case 5: //rakam değişkeni 5 olursa
          digitalWrite(a, 0); //5 sayısı oluşturuldu.
          digitalWrite(b, 1);
          digitalWrite(c, 0);
          digitalWrite(d, 0);
          digitalWrite(e, 1);
          digitalWrite(f, 0);
          digitalWrite(g, 0);
          break;
        case 6: //rakam değişkeni 6 olursa
          digitalWrite(a, 0); //6 sayısı oluşturuldu.
          digitalWrite(b, 1);
          digitalWrite(c, 0);
          digitalWrite(d, 0);
          digitalWrite(e, 0);
          digitalWrite(f, 0);
          digitalWrite(g, 0);
          break;
        case 7: //rakam değişkeni 7 olursa
          digitalWrite(a, 0); //7 sayısı oluşturuldu.
          digitalWrite(b, 0);
          digitalWrite(c, 0);
          digitalWrite(d, 1);
          digitalWrite(e, 1);
          digitalWrite(f, 1);
          digitalWrite(g, 1);
          break;
        case 8: //rakam değişkeni 8 olursa
          digitalWrite(a, 0); //8 sayısı oluşturuldu.
          digitalWrite(b, 0);
          digitalWrite(c, 0);
          digitalWrite(d, 0);
          digitalWrite(e, 0);
          digitalWrite(f, 0);
          digitalWrite(g, 0);
          break;
        case 9: //rakam değişkeni 9 olursa
          digitalWrite(a, 0); //9 sayısı oluşturuldu.
          digitalWrite(b, 0);
          digitalWrite(c, 0);
          digitalWrite(d, 0);
          digitalWrite(e, 1);
          digitalWrite(f, 0);
          digitalWrite(g, 0);
          break;
      }
    }
    Last edited by Elektronik; 25-12-18 at 12:17. Sebep: A0,A1,A2 giriş yapma kodları eklendi.

Tags for this Thread

Bookmarks

Gönderme izinleri

  • Yeni Konu açamazsınız
  • Konulara cevap yazamazsınız.
  • Eklenti gönderemezsiniz.
  • Mesajlarınızı düzenleme izniniz yok.
  •