Başa dön

Arduino ile 7 Segment Display Kullanımı

Eveeet Maker dostlar hepinizi selamlıyorum ve bu yazımızda arduino ile 7 segment display kullanımı öğreneceğiz.

 

7 Segment Display Nedir Nasıl Kullanılır?

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.

7 Segment Display Yapısı

7 Segment Display Yapısı

7 Segment Display Sıralaması

7 Segment Display Sıralaması

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 😊

 

7 Segment Display Bağlantıları

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

Ortak Anot için buyrunuz :

7 Segment Display Bağlantı Şeması Anot

7 Segment Display Bağlantı Şeması Anot

Ortak katot için buyrunuz:

7 Segment Display Bağlantı Şeması Katot

7 Segment Display Bağlantı Şeması Katot

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.

 

Arduino Display Kodları

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

 

Arduino 7 Segment Display Kullanımı için Örnek Proje

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

7 Segment Display Bağlantı Şeması Örneği

7 Segment Display Bağlantı Şeması Örneği

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.