Arduino ile Seven Segment Sayaç Uygulaması
Bu uygulamamızda 7 segment display ile basit bir sayaç uygulaması gerçekleştireceğiz. Spor müsabakalarında sıklıkla gördüğümüz skor tabelalarının çalışma prensibi bu uygulamaya dayanmaktadır.
Merhabalar,
Bu uygulamamızda 7 segment display ile basit bir sayaç uygulaması gerçekleştireceğiz. Spor müsabakalarında sıklıkla gördüğümüz skor tabelalarının çalışma prensibi bu uygulamaya dayanmaktadır.
Devremizde 2 adet buton bulunacaktır. Bu butonlardan biri displayde gösterilen rakamı arttıracak, diğeri ise azaltacaktır.
Bu devrede aşağıdaki elemanları kullanacağız:
1- Arduino UNO
2- 1 adet 7 segment display
3- 2 adet 4 bacaklı buton
4- 7 adet 220 ohm direnç – Seven segment için (Kırmızı, kırmızı, kahverengi)
5- 2 adet 1 K ohm direnç – Butonlar için (Kahverengi , siyah, kırmızı )
6-1 adet breadboard
7-Jumper kablolar
Seven Segment Sayaç Uygulama Devre Şeması:

Seven Segment Sayaç Uygulama Devre Şeması
Seven Segment Sayaç Uygulama Devre Tasarımı

Seven Segment Sayaç Uygulama Devre Kodları:
// 7Segmentdisplay LED pinlerini tanımlıyoruz
#define pinA 4
#define pinB 5
#define pinC 6
#define pinD 7
#define pinE 8
#define pinF 9
#define pinG 10
int azaltButon = 2; // Azaltma Butonu pini 2
int arttirButon = 3; // Arttırma Butonu pini 3
// Buton durumlarını bu değişkenlerde saklayacağız
int butonDurumuAzalt;
int butonDurumuArttir;
// Sayaç değişkeni ile displayde arrtırma ya da azaltma işlemi tutulacak
int sayac = 0;
void setup()
{
// For döngüsü displayin pinlerini çıkış olarak tanımlıyor
for (int i = 4; i < 11; i++) {
pinMode(i, OUTPUT);
}
pinMode(azaltButon, INPUT); // Azaltma butonu giriş
pinMode(arttirButon, INPUT); // Arttırma butonu çıkış
}
void loop()
{
butonDurumuAzalt = digitalRead(azaltButon);
// Azaltma butonu basılınca değer, durum değişkeninde saklanacak
if (butonDurumuAzalt == HIGH) { // Azaltma Butonu basılı mı?
sayac--; // Sayacı 1 azalt
if (sayac < 0) // Eğer sayaca 0'dan küçükse
sayac = 9; // Sayaca 9 değerini ata
while (1) { // Azaltma butonu basıldığı sürece sonsuz döngüye gir
butonDurumuAzalt = digitalRead(azaltButon);
if (butonDurumuAzalt == LOW)
return;
}
}
sevenSegment(sayac); // sevenSegment fonksiyonuna sayac parametresini gönder
// Ve gönderilen parametre değeri ne ise ona göre LED'leri yak!!!
butonDurumuArttir = digitalRead(arttirButon);
// Arttırma butonu basılınca değer, durum değişkeninde saklanacak
if (butonDurumuArttir == HIGH) { // Arttırma Butonu basılı mı?
sayac++; // Sayacı 1 arttır
if (sayac == 10) // Eğer sayaca 10'a eşitse
sayac = 0; // Sayaca 0 değerini ata
while (1) { // Arttırma butonu basıldığı sürece sonsuz döngüye gir
butonDurumuArttir = digitalRead(arttirButon);
if (butonDurumuArttir == LOW)
return;
}
}
sevenSegment(sayac);// sevenSegment fonksiyonuna sayac parametresini gönder
// Ve gönderilen parametre değeri ne ise ona göre LED'leri yak!!!
}
// 7Segment displayde rakamları göstermek için bu fonksiyonu tanımladık
// digit parametresi loop içinden gönderilen sayacı ifade edecek
// Gelen sayac ne ise display onu gösterecek
// Switch-case ile bu çok basit bir şekilde uygulanabilir
void sevenSegment (int digit) {
switch (digit) {
case 0: // Gelen sayac yani digit 0 ise 0 rakamı yanacak
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, LOW);
break;
case 1: // Gelen sayac yani digit 1 ise 1 rakamı yanacak
digitalWrite(pinA, LOW);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinG, LOW);
break;
case 2: // Gelen sayac yani digit 2 ise 2 rakamı yanacak
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, LOW);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, LOW);
digitalWrite(pinG, HIGH);
break;
case 3: // Gelen sayac yani digit 3 ise 3 rakamı yanacak
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinG, HIGH);
break;
case 4: // Gelen sayac yani digit 4 ise 4 rakamı yanacak
digitalWrite(pinA, LOW);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
break;
case 5: // Gelen sayac yani digit 5 ise 5 rakamı yanacak
digitalWrite(pinA, HIGH);
digitalWrite(pinB, LOW);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, LOW);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
break;
case 6: // Gelen sayac yani digit 6 ise 6 rakamı yanacak
digitalWrite(pinA, HIGH);
digitalWrite(pinB, LOW);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
break;
case 7: // Gelen sayac yani digit 7 ise 7 rakamı yanacak
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinG, LOW);
break;
case 8: // Gelen sayac yani digit 8 ise 8 rakamı yanacak
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
break;
case 9: // Gelen sayac yani digit 9 ise 9 rakamı yanacak
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
break;
}
}
Seven Segment Sayaç Uygulama Devre Çalışma Videosu:
Bir sonraki uygulamamızda görüşmek üzere…
@yunus medya
Merhaba,
0-99 sayaç uygulaması için Arduino UNO 0-13 dijital pinlerin tamamını kullanabiliriz. Ancak buton için dijital pin kalmaz. Bunun için daha fazla dijital pini bulunan MEGA gibi bir karta ihtiyacımız olacaktır. Arduino resmi sitesinde Arduino UNO ile 2 adet seven segment displayle 0-99 arası sıralı gösterim yapan basit bir uygulama var. Şu linkte inceleyebilirsiniz:
https://create.arduino.cc/projecthub/KVLakshmiSri/00-to-99-on-seven-segment-displays-1ca7e0
merhaba bunun 0-99 olanını nasıl yapacagız kardeşim
Gerçekten çok güzel ve hem kavraması hem anlaması zor ama değen bir kod olmuş güzel bir çalışma 🙂