ARDUINO – UYGULAMA: 7

UYGULAMA : 7 SEGMENT DISPLAY SAYICI
(74HC595 SHIFT REGISTER UYGULAMASI İÇİN DİZİ TANIMLAMA)

6. uygulamanın benzeri olarak bu sefer 7 segment display kullanarak sayıcı devresi yapacağız. 7 segment display pin bağlantısını aşağıdaki görselden inceleyebilirsiniz. Programın KOD kısmını incelersek, display ismiyle 11×8 boyutunda dizi tanımlıyoruz ve her satıra 0 dan 9 a kadar rakamları oluşturacağımız bilgileri kodluyoruz. Bunu yaparken 74HC595 çıkış pinlerini, display segmentlerine bağlantı tipine göre düzenlememiz gerekiyor. Bizim bağlantımız Q0>dt (nokta fakat bağlamadık), Q1>e, Q2>c, Q3>d, Q4>b, Q5>a, Q6>f, Q7>g şeklinde yapılmıştır. Dilerseniz sizler istediğiniz gibi değişiklik yaparak aynı şekilde dizide de gerekli düzenlemeleri yaparak devreyi çalıştırabilirsiniz.  Bunun haricinde entegre ismiyle bir fonksiyon oluşturduk ve dizinin satır ve sütun bilgilerini entegreye yüklemesini sağladık. Dizi ve fonksiyon tanımlayarak ana programdaki yükümüzü oldukça hafifletiyoruz.

Gerekli Malzemeler:

  • Arduino Uno
  • Breadboard
  • 74HC595
  • 7 segment display (ortak katot)
  • 220 ohm veya 330 ohm direnç (8 adet)
  • jumper kablolar

Kod:

int latchPin=9;
int clockPin=10;
int dataPin=8;
int k;

char const display[11][8]={
//gf a b d c e .
{0,1,1,1,1,1,1,0},   //0
{0,0,0,1,0,1,0,0},   //1
{1,0,1,1,1,0,1,0},   //2
{1,0,1,1,1,1,0,0},   //3
{1,1,0,1,0,1,0,0},   //4
{1,1,1,0,1,1,0,0},   //5
{1,1,1,0,1,1,1,0},   //6
{0,0,1,1,0,1,0,0},   //7
{1,1,1,1,1,1,1,0},   //8
{1,1,1,1,1,1,0,0},   //9 
{0,0,0,0,0,0,0,0}    //söndür
};

void entegre(int x)
{
int a;
for(a=0 ;a<8;a++){
if(display[x][a])
digitalWrite(dataPin,HIGH);
else
digitalWrite(dataPin,LOW);

digitalWrite(clockPin,LOW);
digitalWrite(clockPin,HIGH);
}
}

void setup() {
pinMode(latchPin,OUTPUT);
pinMode(dataPin,OUTPUT);
pinMode(clockPin,OUTPUT);
}

void loop() {
for(k=0;k<10;k++){            // 10 a kadar saydırmak için döngü oluşturuyoruz
 entegre(k);                  // k. satırdaki tüm bilgileri 74HC595 e yüklüyoruz
 digitalWrite(latchPin,LOW);  // entegre çıkış için hazırlanıyor
 digitalWrite(latchPin,HIGH); // entegre çıkış için hazırlanıyor
 delay(500);                  // sayma zaman gecikmesi
}
}

Belki bunları da beğenirsin...