7 Segment Display’ler LED tabanlı göstergelerdir ve Arduino projelerinde en popüler sayısal gösterge elemanlardır. İçerisinde bulunan 7 adet LED ile aydınlatılan 7 ayrı bölmeden oluşan bu sistemler, 0-9 arası sayısal rakamları görüntülemek için kullanılır.
7 Segment Display’lerde LED’lerin kullanılmasının en önemli nedeni LED’lerin çok küçük hacimlerde olan türlerinin olmasıdır. Bu küçük LED’ler belirli bir kalıp içerisine yerleştirilerek 7 Segment Display’ler oluşturulmaktadır.
Yapısal Özellikler:
aaaa
f | | b
gggg
e | | c
dddd DP
Konumsal olarak kısımlandırılmış 7 bölge “a” ile “g” harfleri arasındaki 7 harfle (a,b,c,d,e,f,g) etiketlendirilir.
| Sıra | Malzeme | Adet | Fonksiyon |
|---|---|---|---|
| 1 | Arduino Uno R3 | 1 | Ana kontrolcü |
| 2 | 7 Segmentli Display KYX-5461AS | 1 | Sayısal gösterge |
| 3 | Mini Breadboard | 1 | Prototip tahtası |
| 4 | 220Ω Direnç | 8 | Akım sınırlama |
| 5 | Jumper Kablo | 10 | Bağlantı kabloları |
Ortak Anot (Common Anode):
Ortak Katot (Common Cathode):
| Özellik | Ortak Anot | Ortak Katot |
|---|---|---|
| Ortak Pin | +5V (VCC) | GND |
| Segment Kontrolü | LOW (0V) | HIGH (5V) |
| LED Yakma | digitalWrite(pin, LOW) | digitalWrite(pin, HIGH) |
| Yüzey Rengi | Gri | Siyah |
| Pin Bağlantısı | 3,8 → +5V | 3,8 → GND |
1 2 3 4 5
E D COM A F
┌──────────────┐
│ KYX-5461AS │
│ │
└──────────────┘
DP G COM B C
10 9 8 7 6
KYX-5461AS → Arduino Uno
Pin 1 (E) → Digital 2
Pin 2 (D) → Digital 3
Pin 3 (COM)→ +5V (220Ω direnç ile)
Pin 4 (A) → Digital 7
Pin 5 (F) → Digital 8
Pin 6 (C) → Digital 4
Pin 7 (B) → Digital 6
Pin 8 (COM)→ +5V (220Ω direnç ile)
Pin 9 (G) → Digital 9
Pin 10(DP) → Digital 5
KYX-5461AS → Arduino Uno
Pin 1 (E) → Digital 2
Pin 2 (D) → Digital 3
Pin 3 (COM)→ GND
Pin 4 (A) → Digital 7
Pin 5 (F) → Digital 8
Pin 6 (C) → Digital 4
Pin 7 (B) → Digital 6
Pin 8 (COM)→ GND
Pin 9 (G) → Digital 9
Pin 10(DP) → Digital 5
// Arduino ile 7 Segmentli Display Sayıcı - Ortak Anot
// KYX-5461AS için özel kodlama
// Segment pinlerini tanımlama
int segmentPins[] = {7, 6, 4, 3, 2, 8, 9, 5};
// Sıralama: A, B, C, D, E, F, G, DP
// Ortak anot için sayı tablosu (LOW = LED yanar)
// Sayılar: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
byte sayiTablosu[10][8] = {
{0,0,0,0,0,0,1,1}, // 0: A,B,C,D,E,F açık
{1,0,0,1,1,1,1,1}, // 1: B,C açık
{0,1,0,0,1,0,0,1}, // 2: A,B,G,E,D açık
{0,0,0,0,1,1,0,1}, // 3: A,B,G,C,D açık
{1,0,0,1,1,0,0,1}, // 4: F,G,B,C açık
{0,1,0,0,0,0,0,1}, // 5: A,F,G,C,D açık
{0,1,0,0,0,0,0,1}, // 6: A,F,G,E,D,C açık
{0,0,0,1,1,1,1,1}, // 7: A,B,C açık
{0,0,0,0,0,0,0,1}, // 8: Tüm segmentler açık
{0,0,0,0,1,0,0,1} // 9: A,B,C,D,F,G açık
};
void setup() {
// Tüm segment pinlerini çıkış yap
for(int i = 0; i < 8; i++) {
pinMode(segmentPins[i], OUTPUT);
}
Serial.begin(9600);
Serial.println("Arduino 7 Segment Display Sayıcı Başlatıldı");
Serial.println("Model: KYX-5461AS (Ortak Anot)");
}
void loop() {
// 0'dan 9'a kadar sayma
for(int sayi = 0; sayi <= 9; sayi++) {
sayiGoster(sayi);
Serial.println("Gösterilen Sayı: " + String(sayi));
delay(1000); // 1 saniye bekle
}
}
void sayiGoster(int sayi) {
// İstenen sayıyı 7 segment display'de göster
for(int segment = 0; segment < 8; segment++) {
digitalWrite(segmentPins[segment], sayiTablosu[sayi][segment]);
}
}
// Tüm segmentleri kapat (ortak anot için HIGH)
void tumSegmentleriKapat() {
for(int i = 0; i < 8; i++) {
digitalWrite(segmentPins[i], HIGH);
}
}
// Tüm segmentleri aç (ortak anot için LOW)
void tumSegmentleriAc() {
for(int i = 0; i < 8; i++) {
digitalWrite(segmentPins[i], LOW);
}
}
// Arduino ile 7 Segmentli Display Sayıcı - Ortak Katot
// KYX-5461AS için özel kodlama
// Segment pinlerini tanımlama
int segmentPins[] = {7, 6, 4, 3, 2, 8, 9, 5};
// Sıralama: A, B, C, D, E, F, G, DP
// Ortak katot için sayı tablosu (HIGH = LED yanar)
byte sayiTablosu[10][8] = {
{1,1,1,1,1,1,0,0}, // 0: A,B,C,D,E,F açık
{0,1,1,0,0,0,0,0}, // 1: B,C açık
{1,1,0,1,1,0,1,0}, // 2: A,B,G,E,D açık
{1,1,1,1,0,0,1,0}, // 3: A,B,G,C,D açık
{0,1,1,0,0,1,1,0}, // 4: F,G,B,C açık
{1,0,1,1,0,1,1,0}, // 5: A,F,G,C,D açık
{1,0,1,1,1,1,1,0}, // 6: A,F,G,E,D,C açık
{1,1,1,0,0,0,0,0}, // 7: A,B,C açık
{1,1,1,1,1,1,1,0}, // 8: Tüm segmentler açık
{1,1,1,1,0,1,1,0} // 9: A,B,C,D,F,G açık
};
void setup() {
// Tüm segment pinlerini çıkış yap
for(int i = 0; i < 8; i++) {
pinMode(segmentPins[i], OUTPUT);
}
Serial.begin(9600);
Serial.println("Arduino 7 Segment Display Sayıcı Başlatıldı");
Serial.println("Model: KYX-5461AS (Ortak Katot)");
}
void loop() {
// 0'dan 9'a kadar sayma
for(int sayi = 0; sayi <= 9; sayi++) {
sayiGoster(sayi);
Serial.println("Gösterilen Sayı: " + String(sayi));
delay(1000);
}
}
void sayiGoster(int sayi) {
// İstenen sayıyı 7 segment display'de göster
for(int segment = 0; segment < 8; segment++) {
digitalWrite(segmentPins[segment], sayiTablosu[sayi][segment]);
}
}
// Buton ile kontrolü sayıcı
int butonArtir = 10;
int butonAzalt = 11;
int butonSifirla = 12;
int sayac = 0;
void setup() {
// Segment pinleri
for(int i = 0; i < 8; i++) {
pinMode(segmentPins[i], OUTPUT);
}
// Buton pinleri
pinMode(butonArtir, INPUT_PULLUP);
pinMode(butonAzalt, INPUT_PULLUP);
pinMode(butonSifirla, INPUT_PULLUP);
}
void loop() {
// Buton kontrolleri
if(digitalRead(butonArtir) == LOW) {
sayac++;
if(sayac > 9) sayac = 0;
delay(200); // Debounce
}
if(digitalRead(butonAzalt) == LOW) {
sayac--;
if(sayac < 0) sayac = 9;
delay(200);
}
if(digitalRead(butonSifirla) == LOW) {
sayac = 0;
delay(200);
}
sayiGoster(sayac);
}
// Saniye sayacı sistemi
unsigned long oncekiZaman = 0;
int saniye = 0;
void loop() {
unsigned long suankiZaman = millis();
if(suankiZaman - oncekiZaman >= 1000) {
saniye++;
if(saniye > 9) saniye = 0;
sayiGoster(saniye);
oncekiZaman = suankiZaman;
}
}
void sayiGosterDP(int sayi, bool dpAktif) {
// Normal sayıyı göster
for(int segment = 0; segment < 7; segment++) {
digitalWrite(segmentPins[segment], sayiTablosu[sayi][segment]);
}
// DP kontrolü (ortak anot için)
digitalWrite(segmentPins[7], dpAktif ? LOW : HIGH);
}
// Kullanım örneği: sayiGosterDP(5, true); // "5." gösterir
Yüzey Rengi Kontrolü:
Multimetre ile Test:
void displayTuruTest() {
// 3 ve 8 numaralı pinleri HIGH yap
digitalWrite(3, HIGH);
digitalWrite(8, HIGH);
// A segmentini test et
digitalWrite(7, LOW);
delay(1000);
// Eğer LED yanıyorsa ortak anot
// Yanmıyorsa ortak katot
}
// 2 haneli display için multiplexing
int display1Pin = A0; // Birler hanesi kontrol
int display2Pin = A1; // Onlar hanesi kontrol
int sayac = 0;
void loop() {
int birler = sayac % 10;
int onlar = sayac / 10;
// Birler hanesini göster
digitalWrite(display1Pin, LOW); // Aktif
digitalWrite(display2Pin, HIGH); // Pasif
sayiGoster(birler);
delay(5);
// Onlar hanesini göster
digitalWrite(display1Pin, HIGH); // Pasif
digitalWrite(display2Pin, LOW); // Aktif
sayiGoster(onlar);
delay(5);
// Sayacı artır
if(millis() % 1000 == 0) {
sayac++;
if(sayac > 99) sayac = 0;
}
}
LED’ler Yanmıyor:
Yanlış Sayılar Görünüyor:
LED’ler Çok Parlak/Soluk:
// Segment pinlerini dizi ile tanımlama
const int SEGMENT_PINS[] = {7,6,4,3,2,8,9,5};
const int SEGMENT_COUNT = 8;
// PROGMEM kullanarak Flash bellek tasarrufu
const byte PROGMEM sayiTablosu[10][8] = {
// ... sayı tablosu
};
// Fonksiyon optimizasyonu
inline void sayiGoster(int sayi) {
for(int i = 0; i < SEGMENT_COUNT; i++) {
digitalWrite(SEGMENT_PINS[i], pgm_read_byte(&sayiTablosu[sayi][i]));
}
}
Bu Arduino 7 segment display projesi şu popüler aramalara yanıt veriyor:
// 0-F hexadecimal sayıları gösterme
byte hexTablosu[16][8] = {
// 0-9 sayıları + A,B,C,D,E,F harfleri
{1,1,1,1,1,1,0,0}, // 0
{0,1,1,0,0,0,0,0}, // 1
// ... diğer sayılar
{1,1,1,0,1,1,1,0}, // A
{0,0,1,1,1,1,1,0}, // B
{1,0,0,1,1,1,0,0}, // C
{0,1,1,1,1,0,1,0}, // D
{1,0,0,1,1,1,1,0}, // E
{1,0,0,0,1,1,1,0} // F
};
void kayanYazi() {
String yazi = "Arduino";
for(int pos = 0; pos < yazi.length(); pos++) {
char karakter = yazi.charAt(pos);
karakterGoster(karakter);
delay(500);
}
}
void parlaklikKontrol(int seviye) {
// PWM ile LED parlaklığını ayarlama
for(int i = 0; i < 8; i++) {
analogWrite(segmentPins[i], seviye); // 0-255 arası
}
}
Arduino ile 7 Segmentli Display Sayıcı KYX-5461AS projesi, LED tabanlı gösterge sistemleri öğrenmek için mükemmel bir başlangıç projesidir. Ortak anot ve ortak katot arasındaki farkları anlayarak, sayısal rakam görüntüleme sistemlerinin temellerini öğrenmiş olursunuz.
✅ Basit bağlantı yapısı ✅ Ekonomik malzeme listesi
✅ Kolay programlama (if-else mantığı) ✅ Genişletilebilir sistem ✅ Pratik öğrenme imkanı
Bu 7 segment display Arduino projesi ile sayısal gösterge sistemleri alanında sağlam bir temel oluşturmuş olacaksınız. KYX-5461AS model gibi yaygın kullanılan display’ler ile edindiğiniz tecrübe, daha karmaşık projelerde de size yardımcı olacaktır.
İyi çalışmalar dileriz! 🔢
🔖 Etiketler: Arduino Uno, 7 Segment Display, KYX-5461AS, Ortak Anot, Ortak Katot, LED Display, Sayıcı Projesi, Arduino Başlangıç, Dijital Gösterge, Breadboard Projesi

