7 segment display; 0′ dan 9′ a kadar numerik karakterleri ve bir nokta işaretini göstermek için tasarlanmış, 8 adet ledden oluşan devre elemanıdır.

7 segment displayler, ortak anot ve ortak katot olmak üzere iki çeşit olarak bulunurlar. Led kullanımı dersinde de gösterildiği üzere bir ledin anot (+) ve katot (-) olmak üzere iki bacağı vardır. 7 segment display 8 adet ledden oluştuğu halde 10 adet bacağa sahiptir. Ortak anot 7 segment displayde bulunan 8 ledin tüm anot bacakları displaydeki 2 bacakta birleştirilmiştir. Yani 8 katot ve 2 anot bacak bulunur. Ortak katot 7 segment displayde ise 8 ledin tüm katot bacakları displaydeki 2 bacakta birleştirilmiştir. Yani 8 anot ve 2 katot bacak bulunur. Aşağıdaki şekilde solda ortak anot ve sağda ortak katot 7 segment displayler gösterilmiştir.

Ortak anot ve ortak katot 7 segment display
Malzemeler
- 1 adet Arduino
- 1 adet 7 segment display
Bağlantı şeması
Ortak anot ve ortak katot 7 segment displaylerin bağlantı şekilleri benzerdir. Aşağıdaki bağlantı şeması ortak anot 7 segment display için bağlantıyı göstermektedir.

Aşağıdaki bağlantı şeması ortak katot 7 segment display için bağlantıyı göstermektedir. Ortak anot bağlantıdan farklı olarak 7 segment displayin ortadaki bacakları Arduino kartının 5V pinine değil GND pinine bağlıdır.

Kaynak kod
Bu derste, 0′ dan 9′ a kadar saniyeleri sayan bir 7 segment display kodlanmıştır. Kod yüklendiğinde 7 segment display aşağıdaki şekilde sırasıyla rakamları gösterir.

Aşağıdaki kaynak kod ortak anot 7 segment display için yazılmıştır. Burada 7 segmentin yanması istenilen ledine LOW gönderilmektedir.
// 7 segment displayin led kodları ve bunların bağlı olduğu pin numaralarını eşleştir
int EP=2;
int C=3;
int D=4;
int E=5;
int G=6;
int F=7;
int A=8;
int B=9;
void setup() {
// 7 segmentin bağlı olduğu tüm pinleri çıkış pini olarak ayarla
pinMode(E, OUTPUT);
pinMode(D, OUTPUT);
pinMode(C, OUTPUT);
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(EP, OUTPUT);
}
void loop() {
for(int i=0; i<=9;i++) // 0' dan 9' a kadar sayan döngü
{
Numerik(i); // Numerik fonksiyonuna i değerini gönder
delay(1000); // 1 saniye bekle
}
}
// Numerik fonksiyonu kendisine gelen rakama göre Arduino pinlerini LOW veya HIGH konumuna getirir
void Numerik(int rakam)
{
switch(rakam)
{
case 0 : // 0 yazmak için pin durumları
digitalWrite(E,LOW);
digitalWrite(D,LOW);
digitalWrite(C,LOW);
digitalWrite(B,LOW);
digitalWrite(A,LOW);
digitalWrite(F,LOW);
digitalWrite(G,HIGH);
break;
case 1: // 1 yazmak için pin durumları
digitalWrite(E,HIGH);
digitalWrite(D,HIGH);
digitalWrite(C,LOW);
digitalWrite(B,LOW);
digitalWrite(A,HIGH);
digitalWrite(F,HIGH);
digitalWrite(G,HIGH);
break;
case 2: // 2 yazmak için pin durumları
digitalWrite(E,LOW);
digitalWrite(D,LOW);
digitalWrite(C,HIGH);
digitalWrite(B,LOW);
digitalWrite(A,LOW);
digitalWrite(F,HIGH);
digitalWrite(G,LOW);
break;
case 3: // 3 yazmak için pin durumları
digitalWrite(E,HIGH);
digitalWrite(D,LOW);
digitalWrite(C,LOW);
digitalWrite(B,LOW);
digitalWrite(A,LOW);
digitalWrite(F,HIGH);
digitalWrite(G,LOW);
break;
case 4: // 4 yazmak için pin durumları
digitalWrite(E,HIGH);
digitalWrite(D,HIGH);
digitalWrite(C,LOW);
digitalWrite(B,LOW);
digitalWrite(A,HIGH);
digitalWrite(F,LOW);
digitalWrite(G,LOW);
break;
case 5: // 5 yazmak için pin durumları
digitalWrite(E,HIGH);
digitalWrite(D,LOW);
digitalWrite(C,LOW);
digitalWrite(B,HIGH);
digitalWrite(A,LOW);
digitalWrite(F,LOW);
digitalWrite(G,LOW);
break;
case 6: // 6 yazmak için pin durumları
digitalWrite(E,LOW);
digitalWrite(D,LOW);
digitalWrite(C,LOW);
digitalWrite(B,HIGH);
digitalWrite(A,LOW);
digitalWrite(F,LOW);
digitalWrite(G,LOW);
break;
case 7: // 7 yazmak için pin durumları
digitalWrite(E,HIGH);
digitalWrite(D,HIGH);
digitalWrite(C,LOW);
digitalWrite(B,LOW);
digitalWrite(A,LOW);
digitalWrite(F,HIGH);
digitalWrite(G,HIGH);
break;
case 8: // 8 yazmak için pin durumları
digitalWrite(E,LOW);
digitalWrite(D,LOW);
digitalWrite(C,LOW);
digitalWrite(B,LOW);
digitalWrite(A,LOW);
digitalWrite(F,LOW);
digitalWrite(G,LOW);
break;
case 9: // 9 yazmak için pin durumları
digitalWrite(E,HIGH);
digitalWrite(D,LOW);
digitalWrite(C,LOW);
digitalWrite(B,LOW);
digitalWrite(A,LOW);
digitalWrite(F,LOW);
digitalWrite(G,LOW);
break;
}
}
Aşağıdaki kaynak kod ortak katot 7 segment display için yazılmıştır. Burada 7 segmentin yanması istenilen ledine HIGH gönderilmektedir. Yani ortak anot displayin kaynak kodundaki tüm HIGH çıkışları LOW’ a ve tüm LOW çıkışları HIGH’ a çevrilmiştir.
// 7 segment displayin led kodları ve bunların bağlı olduğu pin numaralarını eşleştir
int EP=2;
int C=3;
int D=4;
int E=5;
int G=6;
int F=7;
int A=8;
int B=9;
void setup() {
// 7 segmentin bağlı olduğu tüm pinleri çıkış pini olarak ayarla
pinMode(E, OUTPUT);
pinMode(D, OUTPUT);
pinMode(C, OUTPUT);
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(EP, OUTPUT);
}
void loop() {
for(int i=0; i<=9;i++) // 0' dan 9' a kadar sayan döngü
{
Numerik(i); // Numerik fonksiyonuna i değerini gönder
delay(1000); // 1 saniye bekle
}
}
// Numerik fonksiyonu kendisine gelen rakama göre Arduino pinlerini LOW veya HIGH konumuna getirir
void Numerik(int rakam)
{
switch(rakam)
{
case 0 : // 0 yazmak için pin durumları
digitalWrite(E,HIGH);
digitalWrite(D,HIGH);
digitalWrite(C,HIGH);
digitalWrite(B,HIGH);
digitalWrite(A,HIGH);
digitalWrite(F,HIGH);
digitalWrite(G,LOW);
break;
case 1: // 1 yazmak için pin durumları
digitalWrite(E,LOW);
digitalWrite(D,LOW);
digitalWrite(C,HIGH);
digitalWrite(B,HIGH);
digitalWrite(A,LOW);
digitalWrite(F,LOW);
digitalWrite(G,LOW);
break;
case 2: // 2 yazmak için pin durumları
digitalWrite(E,HIGH);
digitalWrite(D,HIGH);
digitalWrite(C,LOW);
digitalWrite(B,HIGH);
digitalWrite(A,HIGH);
digitalWrite(F,LOW);
digitalWrite(G,HIGH);
break;
case 3: // 3 yazmak için pin durumları
digitalWrite(E,LOW);
digitalWrite(D,HIGH);
digitalWrite(C,HIGH);
digitalWrite(B,HIGH);
digitalWrite(A,HIGH);
digitalWrite(F,LOW);
digitalWrite(G,HIGH);
break;
case 4: // 4 yazmak için pin durumları
digitalWrite(E,LOW);
digitalWrite(D,LOW);
digitalWrite(C,HIGH);
digitalWrite(B,HIGH);
digitalWrite(A,LOW);
digitalWrite(F,HIGH);
digitalWrite(G,HIGH);
break;
case 5: // 5 yazmak için pin durumları
digitalWrite(E,LOW);
digitalWrite(D,HIGH);
digitalWrite(C,HIGH);
digitalWrite(B,LOW);
digitalWrite(A,HIGH);
digitalWrite(F,HIGH);
digitalWrite(G,HIGH);
break;
case 6: // 6 yazmak için pin durumları
digitalWrite(E,HIGH);
digitalWrite(D,HIGH);
digitalWrite(C,HIGH);
digitalWrite(B,LOW);
digitalWrite(A,HIGH);
digitalWrite(F,HIGH);
digitalWrite(G,HIGH);
break;
case 7: // 7 yazmak için pin durumları
digitalWrite(E,LOW);
digitalWrite(D,LOW);
digitalWrite(C,HIGH);
digitalWrite(B,HIGH);
digitalWrite(A,HIGH);
digitalWrite(F,LOW);
digitalWrite(G,LOW);
break;
case 8: // 8 yazmak için pin durumları
digitalWrite(E,HIGH);
digitalWrite(D,HIGH);
digitalWrite(C,HIGH);
digitalWrite(B,HIGH);
digitalWrite(A,HIGH);
digitalWrite(F,HIGH);
digitalWrite(G,HIGH);
break;
case 9: // 9 yazmak için pin durumları
digitalWrite(E,LOW);
digitalWrite(D,HIGH);
digitalWrite(C,HIGH);
digitalWrite(B,HIGH);
digitalWrite(A,HIGH);
digitalWrite(F,HIGH);
digitalWrite(G,HIGH);
break;
}
}
