Takip Edin
Back
Image Alt

Hayalet ve Yap

Arduino 7 Segment Display Kullanımı

Eveeet Maker dostlar hepinizi selamlıyorum.

Şimdi de 7 segment display nedir nasıl kullanılır bunu hep beraber inceleyeceğiz.

7 segment displayler ortak anotlu ve ortak katotlu olmak üzere ikiye ayrılıyor Peki nedir ortak anotlu veya ortak katotlu da ne diye sorular dolaşıyor sanırım zihninizde.

Sözü uzatmadan ceavaplandıralım, az sayıda pin kullanmak için 7 segment displaylerimizde 7 tane segment ve bir tane nokta dışında 2 tane ortak pin bulunuyor. 8 pin 8 kısmı kontrol ederken ortak kısımlar ile dörder pinin çıkışını sağlayabiliyoruz. Gerçekten kim düşünmüşse helal olsun. Ekranımızda 16 adet kısım var hali hazır da dolayısıyla eğer tümünü birde açmak istiyorsak normal şartlarda 16 adet pin gerekirdi bize. Ama ortak uçlar sayesinde çıkış pinleri 8 pinden 2 pine indirmiş oluyoruz. Sanırım şimdi daha iyi anlaşıldı.

Ortak anot demek ortak pinlerin Vcc olması durumu Adı üstünde “Anot” 😉

Ortak katot ise anladınız zaten ama hadi yazalım yine de: Ortak pinlerin  Gnd olması durumu.

Şimdi sıra nasıl çalıştığını anlamaya geldi.

Resimde görüldüğü üzere aslında 8 yazmak için bütün anahtarları tetiklememiz gerekiyor.

Sağdaki resimde daha net anlaşılıyor sanırsam çıkış pinlerinin 2 adet olduğu .

Nasıl çalıştığını da öğrendiğimize göre artık uygulamaya geçebiliriz.

Uygulama 1

İhtiyacımız olan malzemeler:

1 Adet 7 Segment Display

1 Adet Arduino Uno

1 Adet Breadboard

1 Adet 7 Segment Display

Jumper kablolar

2 adet 220 ohm direnç (Displayin içindeki ledleri yüksek akım yakmasın diye ordalar hani merak edersiniz 😊

Projenin çizimini sizler için ellerimle yaptım. Simetri hastaları varsa sorumluluk kabul etmiyorum baştan belirteyim. 😊

Ortak Anot için buyrunuz :

Ortak katot için buyrunuz:

gördüğünüz gibi sadece 5v yerine Gnd’ye bağladık.

Sırada projemizin kodları var. (Benden size küçük bir sır, Arduino kodlamayı öğrenmek gerçekten çok kolay ve tamamen hakim olmanız çok extreme koşullar hariç gerekmiyor. temelini öğrendikten sonra kodlarla oynaya oynaya düzenleye düzenleye kendi projeniz için kod bloğu oluşturabilirsiniz. 😉)

Ortak katot kullananlar koddaki “LOW” yazan yerleri “HIGH”, “HIGH” yazan yerleri ise “LOW” ile değiştirmelidir.

Kodlar için

int a = 6; // Pinleri tanımlıyoruz
int b = 7;
int c = 9;
int d = 10;
int e = 11;
int f = 5;
int g = 4;
void setup()
{
pinMode(a, OUTPUT); // Pinlerin çıkış pini olduğunu belirtiyoruz.
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
}
void loop() {
// "9" Sayısını yazar.
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
delay(1000);
// "8" Sayısını yazar.
digitalWrite(a, LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
delay(1000);
// "7" Sayısını yazar.
digitalWrite(a, LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
delay(1000);
// "6" Sayısını yazar.
digitalWrite(a, LOW);
digitalWrite(b,HIGH);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
delay(1000);
// "5" Sayısını yazar.
digitalWrite(a, LOW);
digitalWrite(b,HIGH);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
delay(1000);
// "4" Sayısını yazar.
digitalWrite(a, HIGH);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
delay(1000);
// "3" Sayısını yazar.
digitalWrite(a, LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,LOW);
delay(1000);
// "2" Sayısını yazar.
digitalWrite(a, LOW);
digitalWrite(b,LOW);
digitalWrite(c,HIGH);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,HIGH);
digitalWrite(g,LOW);
delay(1000);
// "1" Sayısını yazar.
digitalWrite(a, HIGH);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
delay(1000);
// "0" Sayısını yazar.
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,HIGH);
delay(1000);

}

Uygulama 2

2 Adet 7 Segment Display

1 Adet Arduino Uno

1 Adet Breadboard

Şimdi de 0-99 arası sayan bir proje yapalım.

Bağlantıyı resimdeki gibi gerçekleştiriyoruz.

Farkettiğiniz üzere 3.3 v çıkışına bağladık eğer 5v kullanmak isterseniz dirençle beraber kullanmanızı tavsiye ederim.

Kodlar için buyrun.

//SSD is Seven-Segment Display

void setup()
{
  for (int i = 0; i <= 13; i++)
    pinMode(i, OUTPUT); //Set all pins from 0 to 13 as OUTPUT
}
//Aşağıdaki satır, 0'dan 9'a kadar bir SSD'deki rakamlar için tüm ikili sayıları içeren diziyi oluşturma çabalarının ürünüdür 🙂 (ssd =seven segment display)
const int number[11] = {0b1000000, 0b1111001, 0b0100100, 0b0110000, 0b0011001, 0b0010010, 0b0000010, 0b1111000, 0b0000000, 0b0010000};

void loop()
{
  for (int tens = 0; tens < 10; tens++)

  {
    display_tens(tens);
  }
}

void display_tens(const int tens)
{
  int pin1, a, ones;     
  //pin1  1.SSD'nin pinleri ile alakalıdır.

  for (pin1 = 0, a = 0; pin1 < 7; pin1++, a++)
  {
    digitalWrite(pin1, bitRead(number[tens], a));
  }
  for (ones = 0; ones < 10; ones++)
  {
    display_ones(ones);
    delay(300); 
    //300 ms periyotla sayılar bir bir artar.
  }
}

void display_ones(const int x)
{ int pin2, b;             
//pin2  2.SSD'nin pinleri ile alakalıdır.

  for (pin2 = 7, b = 0; pin2 <= 13; pin2++, b++)
  {
    digitalWrite(pin2, bitRead(number[x], b));

  }

}

Gerekli malzemeleri  buradan alabilirsiniz.

Post a Comment