Arduino 7 segment LED display - arduino ile sayaç örneği


    Merhaba arkadaşlar bugün arduino ile Yedi segment LED görüntü modülü yada kısaca 7 segment kullanımına bakıp basit bir örnek yapacağız. 

Yedi segment LED görüntü modülü
    7 segment yanda da gördüğünüz gibi 8 şeklinde 7 adet led çubuğun birleşmesi ile oluşur istediğimiz rakam yerinde ki ledleri yakarak tüm rakamları elde edebiliriz. Renk ve boyut olarak çok çeşitli olsa da asıl farklılık ortak katot ve ortak anot modelleri arasındadır. Ortak anot modelinde tüm ledler eksi uca bağlanırken gereken güç( genelde 5 volt) tek bacaktan verilir, ortak katot ta ise güç her lede ayrı ayrı verilir ground çıkışı tek olur bağlanmaları yanı sıra kodlamaları da terstir. Bu yazıda ortak katot modelini kullandık bu model bana daha kolay geliyor. Ayrıca bu arkadaşı sürmek için 74HC595 veya 7447 entegresi kullanabiliriz nu sayede arduino da daha az pin kullanırız ve kodlamamız daha kısa olur ancak bu entegre olmadan da led display arduino ile sürülebilir bu yazıda entegre kullanmayacağız ancak önümüzde ki günlerde bu entegre ile daha karmaşık bir 7 segment projesi paylaşacağım. Ayrıca 7 segment yönü noktası aşşağıda olacak şekilde kabul edilse de  direk arduino ya bağlanırken şart değil bu örnekte nokta üstte olacak şekilde ayarlamışım. Şimdi örneğimize geçelim. Örnekte her bir saniyede display da gösterilen rakam 1 artacak 9 olunca sıfırlanacak, bu  projeyi ilerde geliştirip saat, klonometre ve zamanlayıcı gibi kullanışlı örnekler yapacağız.

7 segment pin şeması
    Malzemeler
    1 adet 7 segment led display ( ortak katot)
    1 adet arduino
    1 adet bradboard
    8-9 adet jumper yada kablo kesiti
    7 adet direnç (100-220 ohm olabilir ancak ben bu çizim de kullanmadım)

   Devre Kurulumu
     7 segment in ilgili bacaklarını sıra ile  arduino nun  digital pinlerine bağlanır ortak katot ( ground) da GND pinine bağlanır. Şemayı ekliyorum çok kablo olduğu için karışabilir ancak kod içinden kolayca anlayabilirsiniz.
7 segment LED display Arduino örnek devresi
    Programlama
   Her zaman ki gibi burada da söyleyeceklerimi  kod içine ekliyorum ancak bu devreyi çalıştırdıktan sonra 7 segmenti doğru şekilde ( nokta aşşağıda) noktası bağlanmış olarak çalıştırmanız bu anlatımı daha verimli kılacaktır yararlı olacaktır.


void setup()
{
  // pinleri tanımlıyoruz, isterseniz int a = 0; gibi tanımlamalar ile bacak numaralrını adlandırabilirsiniz ancak bu projede pek gerek yok
  pinMode(0, OUTPUT);//a
  pinMode(1, OUTPUT);//b
  pinMode(2, OUTPUT);//c
  pinMode(3, OUTPUT);//d
  pinMode(4, OUTPUT);//e
  pinMode(5, OUTPUT);//f
  pinMode(6, OUTPUT);//g
}
void loop(){
  // istersek kodu while, case filan ekleyerek daha profesyonel hale getirebilirz ancak sonuç aynı olacak :)
  // 0 dan 9 kadar sayıp tekrar 0 a dönecek delay olarak 1 sn ayarladım bu sayede kronometre gibi kullanılabilir
  // 0
   digitalWrite(0,HIGH);
    digitalWrite(1,HIGH);
    digitalWrite(2,HIGH);
    digitalWrite(3,HIGH);
    digitalWrite(4,HIGH);
    digitalWrite(5,LOW);
    digitalWrite(6,HIGH);
  delay(1000);
  // 1
    digitalWrite(0, LOW);
    digitalWrite(1,LOW);
    digitalWrite(2,LOW);
    digitalWrite(3,LOW);
    digitalWrite(4,HIGH);
    digitalWrite(5,LOW);
    digitalWrite(6,HIGH);
  delay(1000);
  // 2
   digitalWrite(0,HIGH);
    digitalWrite(1,HIGH);
    digitalWrite(2,LOW);
    digitalWrite(3,HIGH);
    digitalWrite(4,HIGH);
    digitalWrite(5,HIGH);
    digitalWrite(6,LOW);
  delay(1000);
    // 3
   digitalWrite(0,HIGH);
    digitalWrite(1,LOW);
    digitalWrite(2,LOW);
    digitalWrite(3,HIGH);
    digitalWrite(4,HIGH);
    digitalWrite(5,HIGH);
    digitalWrite(6,HIGH);
  delay(1000);
  //4
     digitalWrite(0,LOW);
    digitalWrite(1,LOW);
    digitalWrite(2,HIGH);
    digitalWrite(3,LOW);
    digitalWrite(4,HIGH);
    digitalWrite(5,HIGH);
    digitalWrite(6,HIGH);
  delay(1000);
  // 5 
     digitalWrite(0,HIGH);
    digitalWrite(1,LOW);
    digitalWrite(2,HIGH);
    digitalWrite(3,HIGH);
    digitalWrite(4,LOW);
    digitalWrite(5,HIGH);
    digitalWrite(6,HIGH);
  delay(1000);
  
  //6
     digitalWrite(0,HIGH);
    digitalWrite(1,HIGH);
    digitalWrite(2,LOW);
    digitalWrite(3,HIGH);
    digitalWrite(4,HIGH);
    digitalWrite(5,HIGH);
    digitalWrite(6,HIGH);
  delay(1000);
  
  //7
     digitalWrite(0,LOW);
    digitalWrite(1,LOW);
    digitalWrite(2,LOW);
    digitalWrite(3,HIGH);
    digitalWrite(4,HIGH);
    digitalWrite(5,LOW);
    digitalWrite(6,HIGH);
  delay(1000);
  
    // 8
   digitalWrite(0,HIGH);
    digitalWrite(1,HIGH);
    digitalWrite(2,HIGH);
    digitalWrite(3,HIGH);
    digitalWrite(4,HIGH);
    digitalWrite(5,HIGH);
    digitalWrite(6,HIGH);
  delay(1000);
  
  // 9
     digitalWrite(0,LOW);
    digitalWrite(1,LOW);
    digitalWrite(2,HIGH);
    digitalWrite(3,HIGH);
    digitalWrite(4,HIGH);
    digitalWrite(5,HIGH);
    digitalWrite(6,HIGH);
  delay(1000);
  }

Başka bir yazıda görüşmek üzere, Devreyi nokta altta olacak şekilde kurmayı unutmayın yoksa gelişmiş 7 segment projelerinde bocalarsınız.

0 yorum: