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.

Double 7 Segmentli Display

Double 7 Segmentli Display

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.

Arduino Double Segmentli Display Uygulaması

Arduino Double Segmentli Display Uygulaması

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.

Arduino Double Segmentli Display Devre Şeması

Arduino Double Segmentli Display Devre Şeması

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.