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 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 :
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
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.
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.