Merhaba arkadaşlar bugünkü yazımda 4’lü 7 segment display ‘in ne olduğu ve nasıl kullanıldığı hakkında bilgi vereceğim.
7 Segment Display Nedir ?
7 segment display hakkında bilginiz yoksa veya merak ettikleriniz varsa daha önce yazmış olduğum bu yazıyatıklayabilirsiniz ve örnek bir uygulama yapabilirsiniz. Bu yazımda bu 7 segment displaylerin 4’lü olanlarından bahsetmek istiyorum. Aslında tekli olanlarla aynı şekilde çalışıyor ama 4 adet tekli kullanırsak çok sayıda pin gerekiyor ve kontrol etmek için arduino unonun pinleri yetersiz kalır. Arduino mega kullanmamız gerekebilir. Bu yüzden özel olarak 4’lü şekilde 7 segment display tasarlanmıştır ve projelerimizde çok kullanışlı oluyor. 4’lü 7 segment displayın bağlantıları aşağıdaki göründüğü gibidir.
Yukarıda gördüğünüz gibi bir sayının oluşturulması için gerekli pinler yani A B C D E F G pinleri vardır ve 4 digit yani 4 basamak olduğu için bu basamakları kontrol etmek için de D1 D2 D3 D4 pinleri vardır. Buradaki DP pini ise rakamlar arasında olan noktayı kullanmak için gereklidir. Eğer uygulamanızda nokta kullanmak istemiyorsanız bu DP pinini takmanıza gerek yok.
4’lü 7 Segment Display Avantajları Nelerdir ?
7 segment displayları çoğu projemizde kullanmak isteriz. Mesela bir sayıyı yazdırmak istersek lcd ekran yerine bunu kullanarak hem daha hoş hem de daha küçük olur. Bu displaylere sadece sayı yazdırmak zorunda değiliz. Hangi ledin yanacağına karar vererek bazı harfleri de yazdırabiliriz. Örnek verirsek A B C D E F gibi harfleri de yazdırabiliriz. 4’lü olanlarının avantajından bahsetmek gerekirse daha iyi anlamanız için size daha önce yazdığım bir yazının üstünden bahsetmek istiyorum. Bu yazımda 2 adet 7 segment display kullanarak 2 basamaklı sayı yazdırma uygulaması yapmıştık. Ama devre şemasına bakarsak 14 adet pinin hepsini kullanmıştık ve 2 adet DP (nokta işareti) pinlerini de kullanmamıştık. Eğer o pinleri de kullansak 16 adet pinimiz olacaktı ve arduino uno da bunu çalıştırmamız zor olacaktır.
Eğer 1’li olanlardan 4 adet kullansak arduino uno daki pin sayıları yetersiz kalacaktır ve yaklaşık 28 adet pin gereklidir. Ama 1’li yerine 4’lü kullanırsak hem sadece 12 pin sayısı ile uygulamamızı çalıştırabileceğiz. 2 adet tek kullanırken bile 14 pin gerekirken 4’lü kullanınca sadece 12 pin yeterli olması bence çok büyük bir avantajdır.
4’lü 7 Segment Display Nasıl Kullanılır ?
Bu devre elemanını kullanabilmek için arduino gereklidir. Arduino yerine başka şeyler de kullanılabilir. Daha önceki 1 ve 2 basamaklı kullanımlarda kodları kendimiz yazarak ilgili pin numarasına 1 veya 0 vererek kendimiz kontrol etmiştik. 4’lü 7 segment displayide bu şekilde yapabiliriz ama biraz daha karışık olduğu için anlamanız çok zor olabilir. Bu yüzden daha önce bu işlemleri yapan ve bizim için kolaylık olması için kütüphane yazan kişiler vardır. Biz de bu kütüphanelerden birini kullanarak çok basit şekilde bir uygulama yapacağız.
4’lü 7 Segment Display İçin Kütüphane Kurulumu
Kütüphane kurulumu yapmak için ilk önce kütüphane dosyasını indirmek gerekiyordur. Bu kütüphaneyi indirmek için öncelikle bu linke tıklayarak github sayfasına gidiyoruz. Burada güncel kütüphaneleri saklıyorum ve zamanla yeni kütüphaneler ekleyeceğim. Linke tıkladığımızda karşımıza böyle bir ekran çıkacaktır.
Buradan bize gerekli olan kütüphaneyi turuncu renk ile işaretledim. SevSeg-master.zip’ e tıklamamız gerekiyor. Tıkladıkdan sonra karşımıza şöyle bir ekran çıkacaktır.
Bu ekran geldikten sonra turuncu ile işaretlediğim sağ tarafta bulunan Download tuşuna basıyoruz ve kütüphanemiz indirilmiş oluyordur.
İndirme işlemi tamamlanmıştır. Bu indirdiğimiz dosyayı arduino’ya kurmak için Arduino programımızı açıyoruz. Daha sonra
Taslak->Library Ekle-> .ZIP Kitaplığı Ekle kısmına tıklıyoruz. Buradan indirdiğimiz dosyanın konumu bularak ve o dosyayı seçerek OPEN diyoruz. Bu şekilde kütüphanemiz yüklenmiş oluyordur.
Kütüphanemizi başarıyla yüklediğimize göre bir uygulama yapalım.
Örnek Uygulama
Örnek uygulama olarak 0’dan 9999’a kadar olan sayıları belirli bir süre ile ekranda gösterme uygulamasını yapacağız. Sayıların geçiş süresini azaltıp arttırabileceğiz. Bu sayede daha yavaş ve daha hızlı sayı yazdırabileceğiz. Hatta 1 saniye olarak ayarlarsak bu bizim için bir kronometre olacaktır. Sayıları yazdırırken de iki seçeneğimiz vardır. Bunlardan birisi örnek verirsek 0005-9999 ve diğeri de 5-9999 olarak yazdırabiliriz. Yani baştaki sıfırları gösterebiliriz veya gizleyebiliriz. Bunu uygulama videosunda daha iyi bir şekilde anlayacaksınız.
Uygulama Videosu
[embedyt] https://www.youtube.com/watch?v=m8Ai-jonGJo[/embedyt]
Devre Şeması
Uygulama Kodları
Bu uygulamamızı yapmak için ilk olarak kütüphanemizi kodumuza ekliyoruz. Daha sonra SevSeg nesnesinden ismi ekran olan bir örnek oluşturuyoruz. Int değişken türünde hız süresi isminde bir değişken oluşturup buna 80 değerini atıyoruz. Bu değer 2 sayı arasında bekleme milisaniyesini ifade etmektedir. Bu değeri yükselterek daha yavaş geçiş olmasını veya azaltarak daha hızlı bir geçiş olmasını sağlayabilirsiniz. Daha sonra unsigned long veri tipinde süre adında bir değişken oluşturup millis() fonskiyonu ile o anki süreyi değişkene aktarıyoruz. Tekrardan int türünde ismi sayı olan bir değişken oluşturup, başlangıç olarak 0 dan başlaması için 0’a eşitliyoruz.
Setup Fonksiyonu
Setup fonksiyonumuzda ise bu ekranımız için gerekli tanımlamaları yapıyoruz. Basamak değerini 4 basamaklı olduğu için 4 olarak ayarlıyoruz. digitPin adında bir dizi oluşturup ekranın D1-…-D4 olan pin numaralarını sırasıyla yazıyoruz. Tekrardan segmentPin adında dizi oluşturup ekranın diğer bağlantılarını yapıyoruz. Tür adında değişkenimize ekranımızın türünü ortak anot veya katot belirtiyoruz. Direnç kullandıysak true yapıyoruz. Ben kullanmadığım için false olarak yaptım. Otomatik yenileme de yapmak istersen otosure kısmını true yapabilirsiniz ama ben kod ile kontrol edeceğim için false yaptım ve burada sizin tercihinize göre değişecek bir kısım bulunuyor. Bu kısım sifirlar değişkenidir. Burayı true yaparsak sıfırlar sürekli gözükür ama false yaparsak gözükmeyecektir. İstediğiniz gibi ayarlayabilirsiniz ve anlamayanlar için uygulama videosuna bakabilirsiniz. Aradaki farkı göreceksiniz. Daha sonra da ekranımızı begin komutu ile kod kısmında gördüğünüz şekilde kurulumunu yapıyoruz. Son olarak da istersek setBrightness komutu ile de parlaklığını değiştirebiliriz.
Loop Fonksiyonu
Loop fonksiyonumuzda ise 0’dan 9999’a kadar olan sayıları belirli aralıklarla ekranda yazdıracağız. İlk olarak if komutu ile ayarladığımız hız süresi kadar zaman geçmiş mi onu kontrol ediyoruz. Eğer o kadar zaman geçtiyse yeni süreyi değişkenimizde aktarıyoruz. Sayımızın 10000 olup olmadığını kontrol ediyoruz. Çünkü bu ekran en fazla 9999 sayısını ekranda yazdırabilir. Eğer 10000 olduysa sayımızı 0 yapıyoruz daha sonra sayımızı ekranda setNumber fonksiyonu ile gösteriyoruz. Sayımızı 1 arttırıyoruz ve if bloğu tamamlanmış oluyor. If bloğundan çıktından sonra ekranımızı yeniliyoruz ve kodumuz sürekli belirli milisaniye aralıklar ile sayı artışı yaparak çalışıyor. Kod kısmında biraz düzenleme yaparak siz de 9999 ‘dan 0 ‘a doğru azalan bir gösterim yapabilirsiniz.
Arduino Kodu
#include "SevSeg.h"
SevSeg ekran;
int hizSuresi = 80; // kaç milisaniyede yenileneceğinin süresi
unsigned long sure = millis();
int sayi = 0;
void setup() {
byte basamak = 4;
byte digitPin[] = {2, 3, 4, 5};
byte segmentPin[] = {6, 7, 8, 9, 10, 11, 12, 13};
byte tur = COMMON_CATHODE; //COMMON_CATHODE veya COMMON_ANODE
bool direnc = false;
bool otosure = false;
bool sifirlar = true;// gizlemek için false yapınız
ekran.begin(tur, basamak, digitPin, segmentPin, direnc, otosure, sifirlar);
ekran.setBrightness(90);
}
void loop() {
if (millis() - sure >= hizSuresi) {
sure = millis();
if (sayi == 10000) //Sayi 10000 olunca 0 yap
sayi = 0;
ekran.setNumber(sayi);
sayi++;
}
ekran.refreshDisplay();
}
0’dan 9999’a kadar sayı yazdırma uygulamamız hakkında merak ettiklerinizi veya anlamadığınız şeyleri yorum olarak sorabilirsiniz. İyi çalışmalar dilerim