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; } }