
Kısaca: 7 segment display, rakamları göstermek için 7 çubuk LED (segment) ve bir noktadan oluşan bir göstergedir; ortak pinin VCC'ye bağlandığı ortak anot ve GND'ye bağlandığı ortak katot olmak üzere iki tipi vardır. Bu yazıda iki tip arasındaki farkı, Arduino bağlantı şemalarını ve tek haneli gösterim ile 0-99 arası sayıcı yapan iki örnek projenin kodlarını bulabilirsiniz.
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 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: Arduino ile Tek Haneli 7 Segment Display
Uygulama 1
İhtiyacımız olan malzemeler:
1 Adet 7 Segment Display
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 :

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.
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: İki Displayle 0-99 Sayıcı
Uygulama 2
2 Adet 7 Segment Display
Arduino 7 Segment Display Kullanımı için Örnek Proje
Ş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));
}
}İlgili Ürünler
- 14mm 7 Segment Display (Anot)
- 7 Segment Display Çeşitleri
- Arduino UNO R3
- 220R 1/4W Direnç
- Breadboard (MB-102)
Sıkça Sorulan Sorular
Ortak anot ve ortak katot 7 segment display farkı nedir?
Ortak anotlu displayde segmentlerin ortak ucu VCC'ye bağlanır ve segment pinine LOW verildiğinde ilgili segment yanar. Ortak katotlu displayde ortak uç GND'ye bağlanır ve segment HIGH ile yanar. Bu yüzden aynı kod, display tipine göre HIGH ve LOW değerleri ters çevrilerek kullanılır.
7 segment displayde neden direnç kullanılır?
Direnç, segmentlerdeki LED'lerden geçen akımı sınırlayarak hem LED'lerin hem de Arduino pinlerinin zarar görmesini önler. Direnç ortak uca da bağlanabilir, ancak bu durumda yanan segment sayısı arttıkça parlaklık azalır; eşit parlaklık için her segment hattına ayrı direnç konur.
7 segment displayin pinleri nasıl bulunur?
Segmentler a'dan g'ye kadar harflerle, nokta ise DP ile adlandırılır. Hangi pinin hangi segmente ait olduğu ve ortak pinlerin yeri ürünün veri sayfasında gösterilir; emin değilseniz ortak pine uygun beslemeyi verip diğer pinleri dirençle tek tek deneyerek segmentleri bulabilirsiniz.
Arduino ile iki haneli 7 segment display nasıl kullanılır?
Her hane için segment pinleri ayrı ayrı Arduino'ya bağlanabilir ya da segment hatları ortak kullanılıp haneler sırayla çok hızlı yakılarak (multiplexing) pin sayısı azaltılabilir. Yazıdaki ikinci örnekte iki display, Arduino'nun dijital pinlerine bağlanarak 0'dan 99'a kadar sayan bir sayıcı yapılmıştır.