Bu yazımızda 7 segment displaylerin kullanımına değinmeye çalışacağım. Bildiğiniz gibi 7 segment displayler ortak anotlu ve ortak katotlu olmak üzere ikiye ayrılıyorlar. Peki nedir ortak anotlu veya ortak katotlu diye düşünüyor olabilirsiniz.
Hemen açıklayayım, pin sayısından tasarruf etmek için 7 segment displaylerimizde 7 segment ve 1 nokta dışında 2 tane ortak pin konmuş durumda. 8 pin ile 8 kısmı kontrol ederken ortak kısımlar ile dörder pinin çıkışını sağlayabiliyoruz. Yani diyelim ki siz ekrandaki tüm kısımları yakmak istiyorsunuz normalde 8 giriş 8 çıkış 16 pin olması gerekirken çıkış pinleri 2 ye indirgendiği için 8 giriş 2 çıkış toplamda 10 pini bağlamanız yeterli oluyor. Ortak anot dediğimiz bu ortak pinlerin VCC, ortak katot dediğimiz ise bu ortak pinlerin GND olmasıdır. Örneğin siz ortak anotta 1 yazmak için b ve c pinlerini gnd ye bağlarken iki ortak anotunuzu da 5V a bağlamak zorundasınız. Oysa ortak katot olsaydı ekrana 1 yazabilmek için b ve c pinlerini 5V a iki ortak katotunuzu ise GND a bağlamak zorundasınız. Benim tavsiyem bu devrede 220 ohm direnç kullanmanız. Şimdi gelin basitçe 0’dan 9’a kadar 7 Segment Displayimize sayıları yazdıralım arkadaşlar…
İhtiyacınız olan şeyler:
1 Adet Arduino Uno
1 Adet Breadboard
1 Adet 7 Segment Display
2 Adet 220 Ohm Direnç
Jumper Kablolar
Ben ortak anot kullanıyorum arkadaşlar. Bu yüzden benim devrem bu şekilde
Eğer ortak anot değil ortak katot kullanıyor olsaydım devrede yapacağım tek değişiklik 5V pinimi çıkarıp GND ya bağlamak olacaktı.
Ortak katot için devre:
Devredeki farklılık bu kadarken kodda ki farklılık ise şöyle arkadaşlar ben ortak anot kullandığım için yanmasını istediğim kısımları LOW yani 0 yapıyorum oysa ortak katot kullanan arkadaşlar yanmasını istediği kısımları HIGH yani 1 yapmalılar…
Ben ortak anot için kodu paylaşıyorum. Ortak katot kullanan arkadaşlar tüm HIGH ları LOW tüm LOW ları HIGH yaptıkları taktirde onlarda da sorunsuz çalışacaktır.
KOD:
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,LOW); digitalWrite(b,LOW); digitalWrite(c,LOW); digitalWrite(d,LOW); digitalWrite(e,LOW); digitalWrite(f,LOW); digitalWrite(g,HIGH); break; case 1: digitalWrite(a, HIGH); digitalWrite(b,LOW); digitalWrite(c,LOW); digitalWrite(d,HIGH); digitalWrite(e,HIGH); digitalWrite(f,HIGH); digitalWrite(g,HIGH); break; case 2: digitalWrite(a, LOW); digitalWrite(b,LOW); digitalWrite(c,HIGH); digitalWrite(d,LOW); digitalWrite(e,LOW); digitalWrite(f,HIGH); digitalWrite(g,LOW); break; case 3: digitalWrite(a, LOW); digitalWrite(b,LOW); digitalWrite(c,LOW); digitalWrite(d,LOW); digitalWrite(e,HIGH); digitalWrite(f,HIGH); digitalWrite(g,LOW); break; case 4: digitalWrite(a, HIGH); digitalWrite(b,LOW); digitalWrite(c,LOW); digitalWrite(d,HIGH); digitalWrite(e,HIGH); digitalWrite(f,LOW); digitalWrite(g,LOW); break; case 5: digitalWrite(a, LOW); digitalWrite(b,HIGH); digitalWrite(c,LOW); digitalWrite(d,LOW); digitalWrite(e,HIGH); digitalWrite(f,LOW); digitalWrite(g,LOW); break; case 6: digitalWrite(a, LOW); digitalWrite(b,HIGH); digitalWrite(c,LOW); digitalWrite(d,LOW); digitalWrite(e,LOW); digitalWrite(f,LOW); digitalWrite(g,LOW); break; case 7: digitalWrite(a, LOW); digitalWrite(b,LOW); digitalWrite(c,LOW); digitalWrite(d,HIGH); digitalWrite(e,HIGH); digitalWrite(f,HIGH); digitalWrite(g,HIGH); break; case 8: digitalWrite(a, LOW); digitalWrite(b,LOW); digitalWrite(c,LOW); digitalWrite(d,LOW); digitalWrite(e,LOW); digitalWrite(f,LOW); digitalWrite(g,LOW); break; case 9: digitalWrite(a,LOW); digitalWrite(b,LOW); digitalWrite(c,LOW); digitalWrite(d,LOW); digitalWrite(e,HIGH); digitalWrite(f,LOW); digitalWrite(g,LOW); break; } } void loop(){ for(int i=0; i<=9;i++){ RakamYaz(i); delay(500); } }
sertan bey teşekkür ederiz. çok faydalı makale olmuş. iyi çalışmalar..