Arduino Uygulamaları-12 7 Segment Display Kullanımı
Projelerimizi daha da eğlenceli, renkli yapan; rakamları ve harfleri dijital olarak görebileceğimiz 7 Segment Display'ler Arduino ile daha kolay bir kullanım sunuyor. Mesela sayaç devresi düşünebilirsiniz butona her bastığımızda 1 artan; bahçe sulamasında günde kaç defa rölenin aktif olduğunu gösteren bir devrede yine sayaç olarak kullanabilirken; 4-5 adet 7 Segment Display'i yan yana koyarak kayar led uygulamasında adınızı ya da bir kurumun reklam olarak adını gösterdiğiniz bir uygulamada kullanabilirsiniz. Nasıl ama heyecan verici değil mi?:) Şahsen 7 Segment'te ben eğleniyorum.
Biz neler yapacağız; biz bir adet 7 Segment Display ile sadece sayı saydıracağız. Projede kullanacağımız ürün Katot bunu da hatırlatmış olarak devrenin yapımına yavaştan başlayabiliriz.
-->Devrenin Malzemeleri
- 1 adet Arduino Uno
- 1 adet 7 Segment Display
- 1 adet Breadboard
- 2 adet 220Ohm Direnç
- Jumper Kablolar
-->Devrenin Montajı
Montaj kısmına geldiğimizde önemli bir soru 7 Segment'in Anot mu Katot mu olduğu; Anot olursa devreyi 5V'a bağlıyoruz, Katot olursa da Devreyi GND'ye bağlıyoruz. Benim projemde kullandığım katot bir parça olduğu için şekilde de gördüğünüz gibi direk GND'ye bağlıyoruz. Peki nedir bu Anot Katot derseniz; buyrun şemasını bırakıyorum;

Display'in orta bacaklarına baktığımızda bağlantısının ne olduğunu da görebiliyoruz.
Aşağıdaki şemada da a,b,c,, gibi harflerin ne manaya geldiğini anlayıp Kod'da Rakam yazdırırken neden böyle yaptığımızı iyice pekiştiryoruz.

Burada da gördüğümüz gibi aslında "Sıfır" yazdırmak için 6 led yaktırmamız gerek yani A,B,C,D,E,F ledlerini Arduino kodumuzda "HIGH" yapmamız (tabi katotsa) gerektiğini daha iyi anlıyoruz. Bu şemaya bakarak aslında toplamda 7 led olduğu ve bizim onları yakarak ya da söndürerek bir sayı ya da harf üretiyor olduğumuzu görüyoruz ve evet doğru bildiniz 7 Segment Display'deki 7 buradaki toplam led sayısı tebrikler :)
*Dipnot: Parçamız Anot ise hiç telaşlanmayın, Sadece kodda ki "HIGH"'ları "LOW"yapın. "LOW"ları da "HIGH" yapın işte bu kadar.
Evet gelelim Zurnanın Kod dediği kısma :) ;
-->Devrenin Kodlaması
Kod'umuz dediğimiz gibi çok basit bir şekilde input,output olayından başka birşey değil;
int a = 6;
int b = 7;
int c = 9;
int d = 10;
int e = 11;
int f = 5;
int g = 4;
void setup()
{
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
}
void RakamYaz(int rakam)
{
switch(rakam)
{
case 0 :
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,LOW);
break;
case 1:
digitalWrite(a,LOW);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
break;
case 2:
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,LOW);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,HIGH);
break;
case 3:
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,HIGH);
break;
case 4:
digitalWrite(a,LOW);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
break;
case 5:
digitalWrite(a, HIGH);
digitalWrite(b,LOW);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,LOW);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
break;
case 6:
digitalWrite(a, HIGH);
digitalWrite(b,LOW);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
break;
case 7:
digitalWrite(a, HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
break;
case 8:
digitalWrite(a, HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
break;
case 9:
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,LOW);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
break;
}
}
void loop(){
for(int i=0; i<=9;i++){
RakamYaz(i);
delay(500);
}
}