2 Dijit Segmentli Display‘ leri Arduino ile nasıl kullanılır inceleyelim. Aslında oldukça basit çünkü displayler 7 adet LED’ den oluşmaktadır. Bu LED’ leri açıp kapayarak rakamları veya bazı harfleri gösterebiliriz.
Bu uygulamamızda 2 digit 7 segmentli display kullanacağız. Bu display ortak katot olarak tasarlanmıştır. Bunun anlamı içindeki LED’ lerin katotları ortak tek pinden çıkış verilecek şekilde tasarlanmıştır.
Bu 2 dijitli displayin ilk dijitni kullanmak için “ds1” pinini GND’ ye verirseniz segment pinlerine verdiğiniz 5V ile sayısınızı gösterebilirsiniz. Direk 5V’ tu pinlere vermeyin, araya 1K lık bir direnç koymalısınız yoksa LED’ ler yanar.
Aşağıdaki 2 digit 7 segmentli display Arduino kodunu kullanarak 2 dijitte aynı anda 0′ dan 9′ a kadar saydırma işlemini yaptırabilirsiniz. Burada dikkat etmeniz gereken segmentlerde sayıları göstermek için belirlediğimiz segment truth table denilen tablonun tarafımızdan yapılması.
7 Segmentli Display Arduino Devre Şeması
Arduino için aşağıdaki gibi bir bağlantı yapabilirsiniz. BD139 transistör yerine NPN serisinden daha düşük akımlı bir transistör kullanabilirsiniz. Sadece pin bağlantılarına dikkat edin.
7 Segmentli Display Arduino Programı
İsterseniz doğruluk tablosunu değiştirerek farklı karakterler oluşturabilirsiniz. İstersenizde aynı anda iki displayde farklı sayılar gösterebilirsiniz. Bunu yapmak için her displayi ayrı ayrı kontrol ederek yapmalısınız. Şimdilik bu uygulamayı bir sonraki sayıcı uygulamamıza bırakıyorum.
/* www.kaizen40.com 2 digit 7 segmentli display alt soldan başlayarak 1: c 2: dp(nokta) 3: e 4: d 5: g 6: f 7: ds1 (1.digit ortak katot) 8: ds2 (2.digit ortak katot) 9: b 10: a */ //**************** DISPLAY ATAMALARI *****************// // 7 segmentli dipslay pin bağlantıları // a, b, c, d, e, f, g const int segmentPin[7] = {3, 4, 5, 6, 7, 8, 9}; const int nDisplayPin[2] = {10, 11}; // dipslay ortak katodu // a, b, c, d, e, f, g int sayi[10][7] = { // satır, sutun {1, 1, 1, 1, 1, 1, 0}, // 0 {0, 1, 1, 0, 0, 0, 0}, // 1 {1, 1, 0, 1, 1, 0, 1}, // 2 {1, 1, 1, 1, 0, 0, 1}, // 3 {0, 1, 1, 0, 0, 1, 1}, // 4 {1, 0, 1, 1, 0, 1, 1}, // 5 {0, 0, 1, 1, 1, 1, 1}, // 6 {1, 1, 1, 0, 0, 0, 0}, // 7 {1, 1, 1, 1, 1, 1, 1}, // 8 {1, 1, 1, 0, 0, 1, 1} // 9 }; //***************** KONFİGURASYONLAR *****************// void setup() { for (int i = 0; i <= 7; i++) { pinMode(segmentPin[i], OUTPUT); } for (int i = 0; i <= 2; i++) { pinMode(nDisplayPin[i], OUTPUT); } } //********************* ANA PROGRAM ******************// void loop() { digitalWrite(nDisplayPin[0], HIGH); // 1. dipslay aktif digitalWrite(nDisplayPin[1], HIGH); // 2. dipslay aktif for (int i = 0; i <= 9; i++) { for (int j = 0; j <= 7; j++) { digitalWrite(segmentPin[j], sayi[i][j]); } delay(1000); } }
2 Dijit Segmentli İyi çalışmalar.
0 yorum