Arduino Devreleri #41 Arduino 7 Segment Display İki Butonlu Sayıcı
Merhabalar, bu yazımızda Arduino 7 Segment Display İki Butonlu Sayıcı – Scoreboard uygulaması hakkında bilgi vereceğim. 7 Segment Display (7 Parçalı Ekran) nedir? Nasıl çalışır? 7 Segment Display bağlantı uçları nasıldır? 7 Segment Display ile scoreboard Arduino’ da nasıl yapılır? bunlar hakkında bilgilendirme yapacağım.
Arduino programı ayrıntılı kod kısmı, devre bağlantı şeması, devre kurulumu detaylı anlatımı ve devre çalışma videosu şu şekildedir.
7 SEGMENT DISPLAY – 7 PARÇALI EKRAN
7 segment display, elektronik devrelerde kullanılan LED tabanlı sayısal göstergeli bir devre elemanıdır. 7 segment display ekranların üzerinde 7 adet LED bulunmaktadır. İsmini de buradan almıştır. Ayrıca 7 segment display ‘in sağ veya sol alt kısmında 1 adet nokta led daha bulunmaktadır. Bu led, sayısal göstergelerde küsuratlı sayıların ondalık noktalarının gösterilmesi için kullanılır. DP (Decimal Point) ile adlandırılır. Sayı değerleri oluşturacak şekilde dikdörtgen yapıda konumlandırılmış 7 led, a, b, c, d, e, f, g harfleri ile adlandırılmıştır. 7 segment display’in iç yapısında 7 adet led diyotun ortak uçları birbirleri ile bağlanır ve dışarıya ortak bir uç çıkarılır. Diğer uçlar ise kontrol yani bağlantı uçlarıdır. Devrede istenilen bağlantı uçlarına enerji verilerek o kısımdaki led diyotların ışık vermesi sağlanır ve bu şekilde 0 – 9 arasındaki istenilen rakamlar görüntülenmiş olur.
7 segment display’in iç kısmında led diyotların eksi uçları birbirleri ile bağlanıp dışarıya ortak uç olarak çıkartılmış ise, bu şekilde olan ekranlara 7 Segment Display Ortak Katot adı verilir. Eğer iç kısımda led diyotların artı uçları birbirleri ile bağlanıp dışarıya ortak uç olarak çıkartılmış ise, bu şekilde olan ekranlara 7 Segment Display Ortak Anot adı verilir. Kullanım amacı aynı olmakla birlikte tek fark bağlantı pinleridir. Display in ortak anot veya ortak katot olduğunu anlamak için ölçü aleti kullanabiliriz. Ölçü aleti ile buzzer kademesinde kırmızı prob ortak uçlardan birine, diğer prob diğer uçlardan herhangi birine değdirilir. Eğer ledlerden birisi yanarsa display ortak anottur. Eğer yanmazsa ölçü aleti uçları ters çevrilir. Bu sefer led yanarsa display ortak katottur diyebiliriz.
Ortak uç pinleri ekrana üstten baktığımızda ortadaki pinlere denk gelmektedir. Bu pinler 3. Ve 8. pinlerdir. Bu ekranları Arduino’ da kullanacak isek, ortak anot 7 segment display ekranlarda 3. ve 8. pinler, Arduino’ nun +5V pinine bağlanırken, ortak katot 7 segment display ekranlarda 3. ve 8. pinler Arduino’ da GND pinlerine bağlanır.
Arduino’ da her iki display arasındaki kodlama farkı da şu şekildedir. 7 segment display eğer ortak anot ise, yanması istenen ledlere, digitalWrite komutu ile LOW gönderilmelidir, eğer 7 segment display ortak katot ise yanması istenen ledlere, digitalWrite komutu ile HIGH gönderilmelidir.
NOT: Kod bölümü içerisinde yer alan ve // işareti ile başlayan satırlar açıklama satırlarıdır. O satırdaki kod bloğunun ne anlama geldiği ve nasıl çalıştığı ile ilgili bilgi verir. Arduino // işaretli alanı çalıştırmaz. Kod satırından isterseniz // işaret ile başlayan açıklama satırlarını silebilirsiniz.
Aşağıda hem ortak katot hem de ortak anot uygulaması yer almaktadır.
7 SEGMENT DISPLAY İKİ BUTONLU SAYICI SCOREBOARD – ORTAK KATOT
KOD BÖLÜMÜ:
//7 Segment Display Ortak Katot İki Butonlu İleri Geri Sayaç Uygulaması
// Pinleri tanımlıyoruz
int A = 6;
int B = 7;
int C = 11;
int D = 12;
int E = 13;
int F = 5;
int G = 4;
int DP = 10;
int butonileri = 9;
int butongeri = 8;
int sayi = 0; // sayi değişkeni de tanımlıyoruz
void setup()
{
// Pinlerin çıkış pini olduğunu belirtiyoruz.
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(DP, OUTPUT);
pinMode(butonileri, INPUT);
pinMode(butongeri, INPUT);
}
void loop()
{
int butonartir=digitalRead(butonileri); // ileri buton durumunu okuyoruz
if (butonartir==HIGH) //butona her basıldığında;
{sayi=sayi+1;} // sayi değeri 1 artacak
if (sayi > 9) // Eğer sayi 9 dan büyükse,
sayi = 0; // Sayi 0 değerini ata
delay(100);
int butonazalt=digitalRead(butongeri); // geri buton durumunu okuyoruz
if (butonazalt==HIGH) //butona her basıldığında;
{sayi=sayi-1;} // sayi değeri 1 azalacak
if (sayi < 0) // Eğer sayi 0 dan küçükse,
sayi = 9; // Sayi 9 değerini ata
delay(100);
// "0" Sayısını yazar.
if (sayi==0)
{
digitalWrite(A,HIGH);
digitalWrite(B,HIGH);
digitalWrite(C,HIGH);
digitalWrite(D,HIGH);
digitalWrite(E,HIGH);
digitalWrite(F,HIGH);
digitalWrite(G,LOW);
digitalWrite(DP,HIGH);
delay(100);
}
// "1" Sayısını yazar.
if (sayi==1)
{
digitalWrite(A,LOW);
digitalWrite(B,HIGH);
digitalWrite(C,HIGH);
digitalWrite(D,LOW);
digitalWrite(E,LOW);
digitalWrite(F,LOW);
digitalWrite(G,LOW);
digitalWrite(DP,HIGH);
delay(100);
}
// "2" Sayısını yazar.
if (sayi==2)
{
digitalWrite(A,HIGH);
digitalWrite(B,HIGH);
digitalWrite(C,LOW);
digitalWrite(D,HIGH);
digitalWrite(E,HIGH);
digitalWrite(F,LOW);
digitalWrite(G,HIGH);
digitalWrite(DP,HIGH);
delay(100);
}
// "3" Sayısını yazar.
if (sayi==3)
{
digitalWrite(A,HIGH);
digitalWrite(B,HIGH);
digitalWrite(C,HIGH);
digitalWrite(D,HIGH);
digitalWrite(E,LOW);
digitalWrite(F,LOW);
digitalWrite(G,HIGH);
digitalWrite(DP,HIGH);
delay(100);
}
// "4" Sayısını yazar.
if (sayi==4)
{
digitalWrite(A,LOW);
digitalWrite(B,HIGH);
digitalWrite(C,HIGH);
digitalWrite(D,LOW);
digitalWrite(E,LOW);
digitalWrite(F,HIGH);
digitalWrite(G,HIGH);
digitalWrite(DP,HIGH);
delay(100);
}
// "5" Sayısını yazar.
if (sayi==5)
{
digitalWrite(A,HIGH);
digitalWrite(B,LOW);
digitalWrite(C,HIGH);
digitalWrite(D,HIGH);
digitalWrite(E,LOW);
digitalWrite(F,HIGH);
digitalWrite(G,HIGH);
digitalWrite(DP,HIGH);
delay(100);
}
// "6" Sayısını yazar.
if (sayi==6)
{
digitalWrite(A,HIGH);
digitalWrite(B,LOW);
digitalWrite(C,HIGH);
digitalWrite(D,HIGH);
digitalWrite(E,HIGH);
digitalWrite(F,HIGH);
digitalWrite(G,HIGH);
digitalWrite(DP,HIGH);
delay(100);
}
// "7" Sayısını yazar.
if (sayi==7)
{
digitalWrite(A,HIGH);
digitalWrite(B,HIGH);
digitalWrite(C,HIGH);
digitalWrite(D,LOW);
digitalWrite(E,LOW);
digitalWrite(F,LOW);
digitalWrite(G,LOW);
digitalWrite(DP,HIGH);
delay(100);
}
// "8" Sayısını yazar.
if (sayi==8)
{
digitalWrite(A,HIGH);
digitalWrite(B,HIGH);
digitalWrite(C,HIGH);
digitalWrite(D,HIGH);
digitalWrite(E,HIGH);
digitalWrite(F,HIGH);
digitalWrite(G,HIGH);
digitalWrite(DP,HIGH);
delay(100);
}
// "9" Sayısını yazar.
if (sayi==9)
{
digitalWrite(A,HIGH);
digitalWrite(B,HIGH);
digitalWrite(C,HIGH);
digitalWrite(D,HIGH);
digitalWrite(E,LOW);
digitalWrite(F,HIGH);
digitalWrite(G,HIGH);
digitalWrite(DP,HIGH);
delay(100);
}
}
DEVRENİN ÇALIŞMASI:
İleri butonuna her bastığımızda display üzerindeki sayılar 0 dan 9 a kadar artacak ve tekrar 0 dan başlayarak devam edecektir. Geri butonuna bastığımızda ise sayılar 9 dan 0 a kadar inecek ve tekrar 9 dan başlayarak devam edecektir. Butonlar üzerine çok hızlı basmayıp belirli aralıklarla basmak devremizin daha kararlı halde çalışmasını sağlayacaktır.
DEVRE BAĞLANTI ŞEMASI:
DEVRE KURULUMU:
Malzemeler:
Arduino Uno
Breadboard
1 adet 7 Segment Display Ortak Katot
2 adet 220 Ω Direnç
2 adet 10 kΩ Direnç
2 adet 4 pinli push buton
15 adet iki ucu erkek jumper kablo
7 segment display, breadboard üzerine yerleştirilir. 3 ve 8 numaralı ortadaki pinlere 220 ohm direnç bağlanır. Dirençlerin diğer uçları breadboard üst ve alt kısımlarında eksi şeride bağlanır. 7 segment display üzerindeki led uçları, Arduino’ da 4, 5, 6, 7, 10, 11, 12, 13 numaralı pinlere bağlanır. Dirençlerin birer uçları breadboard üzerinde kablo ile birleştirilir. Breadboard üzerinde birleştirilen eksi şerit üzerinden bir kablo ile Arduino nun GND çıkışına bağlantı yapılır.
Breadboard üzerine iki adet buton yerleştirilir. Butonların birer bacakları breadboard alt kısımdaki artı şeride bağlanır. Butonların diğer bacaklarına 10 kΩ direnç bağlanır ve dirençlerin diğer ucu breadboard üst kısımdaki eksi şeride bağlanır. Her iki butonla direnç bağlantısı arasından kablo çıkartılarak Arduino’ nun 8 ve 9 numaralı pinlerine bağlanır.
Breadboard artı şeridine kablo bağlanarak Arduino’nun +5V. çıkışına bağlantı yapılıp devre tamamlanır.
7 SEGMENT DISPLAY İKİ BUTONLU SAYICI SCOREBOARD – ORTAK ANOT
KOD BÖLÜMÜ:
//7 Segment Display Ortak Anot İki Butonlu İleri Geri Sayaç Uygulaması
// Pinleri tanımlıyoruz
int A = 6;
int B = 7;
int C = 11;
int D = 12;
int E = 13;
int F = 5;
int G = 4;
int DP = 10;
int butonileri = 9;
int butongeri = 8;
int sayi = 0; // sayi değişkeni de tanımlıyoruz
void setup()
{
// Pinlerin çıkış pini olduğunu belirtiyoruz.
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(DP, OUTPUT);
pinMode(butonileri, INPUT);
pinMode(butongeri, INPUT);
}
void loop()
{
int butonartir=digitalRead(butonileri); // ileri buton durumunu okuyoruz
if (butonartir==HIGH) //butona her basıldığında;
{sayi=sayi+1;} // sayi değeri 1 artacak
if (sayi > 9) // Eğer sayi 9 dan büyükse,
sayi = 0; // Sayi 0 değerini ata
delay(100);
int butonazalt=digitalRead(butongeri); // geri buton durumunu okuyoruz
if (butonazalt==HIGH) //butona her basıldığında;
{sayi=sayi-1;} // sayi değeri 1 azalacak
if (sayi < 0) // Eğer sayi 0 dan küçükse,
sayi = 9; // Sayi 9 değerini ata
delay(100);
// "0" Sayısını yazar.
if (sayi==0)
{
digitalWrite(A,LOW);
digitalWrite(B,LOW);
digitalWrite(C,LOW);
digitalWrite(D,LOW);
digitalWrite(E,LOW);
digitalWrite(F,LOW);
digitalWrite(G,HIGH);
digitalWrite(DP,LOW);
delay(100);
}
// "1" Sayısını yazar.
if (sayi==1)
{
digitalWrite(A,HIGH);
digitalWrite(B,LOW);
digitalWrite(C,LOW);
digitalWrite(D,HIGH);
digitalWrite(E,HIGH);
digitalWrite(F,HIGH);
digitalWrite(G,HIGH);
digitalWrite(DP,LOW);
delay(100);
}
// "2" Sayısını yazar.
if (sayi==2)
{
digitalWrite(A,LOW);
digitalWrite(B,LOW);
digitalWrite(C,HIGH);
digitalWrite(D,LOW);
digitalWrite(E,LOW);
digitalWrite(F,HIGH);
digitalWrite(G,LOW);
digitalWrite(DP,LOW);
delay(100);
}
// "3" Sayısını yazar.
if (sayi==3)
{
digitalWrite(A,LOW);
digitalWrite(B,LOW);
digitalWrite(C,LOW);
digitalWrite(D,LOW);
digitalWrite(E,HIGH);
digitalWrite(F,HIGH);
digitalWrite(G,LOW);
digitalWrite(DP,LOW);
delay(100);
}
// "4" Sayısını yazar.
if (sayi==4)
{
digitalWrite(A,HIGH);
digitalWrite(B,LOW);
digitalWrite(C,LOW);
digitalWrite(D,HIGH);
digitalWrite(E,HIGH);
digitalWrite(F,LOW);
digitalWrite(G,LOW);
digitalWrite(DP,LOW);
delay(100);
}
// "5" Sayısını yazar.
if (sayi==5)
{
digitalWrite(A,LOW);
digitalWrite(B,HIGH);
digitalWrite(C,LOW);
digitalWrite(D,LOW);
digitalWrite(E,HIGH);
digitalWrite(F,LOW);
digitalWrite(G,LOW);
digitalWrite(DP,LOW);
delay(100);
}
// "6" Sayısını yazar.
if (sayi==6)
{
digitalWrite(A,LOW);
digitalWrite(B,HIGH);
digitalWrite(C,LOW);
digitalWrite(D,LOW);
digitalWrite(E,LOW);
digitalWrite(F,LOW);
digitalWrite(G,LOW);
digitalWrite(DP,LOW);
delay(100);
}
// "7" Sayısını yazar.
if (sayi==7)
{
digitalWrite(A,LOW);
digitalWrite(B,LOW);
digitalWrite(C,LOW);
digitalWrite(D,HIGH);
digitalWrite(E,HIGH);
digitalWrite(F,HIGH);
digitalWrite(G,HIGH);
digitalWrite(DP,LOW);
delay(100);
}
// "8" Sayısını yazar.
if (sayi==8)
{
digitalWrite(A,LOW);
digitalWrite(B,LOW);
digitalWrite(C,LOW);
digitalWrite(D,LOW);
digitalWrite(E,LOW);
digitalWrite(F,LOW);
digitalWrite(G,LOW);
digitalWrite(DP,LOW);
delay(100);
}
// "9" Sayısını yazar.
if (sayi==9)
{
digitalWrite(A,LOW);
digitalWrite(B,LOW);
digitalWrite(C,LOW);
digitalWrite(D,LOW);
digitalWrite(E,HIGH);
digitalWrite(F,LOW);
digitalWrite(G,LOW);
digitalWrite(DP,LOW);
delay(100);
}
}
DEVRENİN ÇALIŞMASI:
İleri butonuna her bastığımızda display üzerindeki sayılar 0 dan 9 a kadar artacak ve tekrar 0 dan başlayarak devam edecektir. Geri butonuna bastığımızda ise sayılar 9 dan 0 a kadar inecek ve tekrar 9 dan başlayarak devam edecektir. Butonlar üzerine çok hızlı basmayıp belirli aralıklarla basmak devremizin daha kararlı halde çalışmasını sağlayacaktır.
DEVRE BAĞLANTI ŞEMASI:
DEVRE KURULUMU:
Malzemeler:
Arduino Uno
Breadboard
1 adet 7 Segment Display Ortak Anot
2 adet 220 Ω Direnç
2 adet 10 kΩ Direnç
2 adet 4 pinli push buton
15 adet iki ucu erkek jumper kablo
7 segment display, breadboard üzerine yerleştirilir. 3 ve 8 numaralı ortadaki pinlere 220 ohm direnç bağlanır. Dirençlerin diğer uçları breadboard üst ve alt kısımlarında artı şeride bağlanır. 7 segment display üzerindeki led uçları, Arduino’ da 4, 5, 6, 7, 10, 11, 12, 13 numaralı pinlere bağlanır. Dirençlerin birer uçları breadboard üzerinde kablo ile birleştirilir.
Breadboard üzerine iki adet buton yerleştirilir. Butonların birer bacakları breadboard alt kısımdaki artı şeride bağlanır. Butonların diğer bacaklarına 10 kΩ direnç bağlanır ve dirençlerin diğer ucu breadboard üst kısımdaki eksi şeride bağlanır. Her iki butonla direnç bağlantısı arasından kablo çıkartılarak Arduino’ nun 8 ve 9 numaralı pinlerine bağlanır.
Breadboard eksi şerit üzerinden bir kablo ile Arduino nun GND çıkışına bağlantı yapılır. Breadboard artı şerit üzerinden bir kablo ile Arduino’nun +5V. çıkışına bağlantı yapılıp devre tamamlanır.
Arduino 7 Segment Display İki Butonlu Sayıcı – Scoreboard
Devre hakkında yorumlarınızı aşağıdaki yorum kısmına yazabilirsiniz. Youtube kanalımızda da mBlock ve Arduino ile ilgili ders videoları bulabileceksiniz. Youtube kanalıma abone olmayı da unutmayınız.
https://www.youtube.com/@candemirahmet
Yorum Yap