30 Kasım 2020

TM1637 7Digits Display Led Kullanımı ve Devresi

ile Site Yöneticisi

TM1637 entegresi ve kütüphanesi kullanarak bir ileri sayım devresi yapacağız. Öncelikle devrede kullanılacak elemanları aşağıdaki şekilde listeleyelim.

  • Arduino Uno veya en az 2 girişli bir Arduino kartı
  • 4-DigiLED Display Kartı
  • 4 Adet dişi > erkek jumper kablo

Şimdi gelelim devremizin basit şemasına;

Evet kısaca şöyle sıralayabiliriz;

  • VCC çıkışı => 5V
  • GND çıkışı => GND
  • DIO çıkışı => 2. pin
  • CLK çıkışı => 3. pin

Şimdi gelelim kütüphanemizi ekleyerek projemizi yazmaya.

Öncelikle TM1637 sınıfı için bu kütüphaneyi indirip kullanabilirsiniz.

#include "TM1637.h"
     
#define DIO 2
#define CLK 3
TM1637 tm1637(CLK,DIO);

int saat[] = {0,0,0,0};

Gördüğünüz gibi değişkenlerimizi ve CLK ve DIO portlarımızı tanımladık. Şimdi sıra geldi Setup içerisinde yapacaklarımıza.

  tm1637.init();
  tm1637.set(BRIGHT_TYPICAL);//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;

Burada parlaklık ve renk ayarlaması yaptık. Şimdi kodumuzu yazalım.

void loop()
{
  while (1 > 0)
  {    
    arttir();
    
    tm1637.display(0, saat[0]);
    tm1637.display(1, saat[1]);
    tm1637.display(2, saat[2]);
    tm1637.display(3, saat[3]);
  
    delay(100); 
  }
}

Burada “saat” dizi değişkenini istediğimiz şekilde arttırabiliriz. Ancak tabii ki öncelikle arttir fonksiyonumuzu yazmamız gerekir. Bunun için aşağıdaki şekilde bir fonksiyonu projemizin en alt kısmına ekleyebiliriz.

int arttir()
{
  saat[3]++;
  
  if (saat[3] > 9)
  {
    saat[3] = 0;
    saat[2]++;
  }
  
  if (saat[2] > 9)
  {
    saat[2] = 0;
    saat[1]++;
  }
  
  if (saat[1] > 9)
  {
    saat[1] = 0;
    saat[0]++;
  }
  
  if (saat[0] > 9)
  {
    saat[0] = 0;
    saat[1] = 0;
    saat[2] = 0;
    saat[3] = 0;
  }
}

Gördüğünüz gibi burada her bir dijit için “> 9 ” kontrolü yapıyoruz. Eğer büyük ise o dijiti sıfırlıyor ve bir büyük ondalık dijiti +1 yaparak arttırıyoruz.

Eğer burada artış zaman kontrolünü yapmak istiyor isek bir üstteki (loop) fonksiyonun içerisindeki “++” ibareleri — yapabilir ve “> 9” ibaresini de “< 0” yaparak bu dönüşümü gerçekleştirebiliriz diye düşünüyorum. Eğer bir terslik olur ise yazarsanız yardımcı olmaya çalışırım elbette.

Şimdi kodumuzun tamamına gelelim.

TM1637 İle 7 DigiLED Kullanımı Kodunun Tamamı

#include "TM1637.h"
#define CLK 2//pins definitions for TM1637 and can be changed to other ports       
#define DIO 3
TM1637 tm1637(CLK,DIO);

int saat[] = {0,0,0,0};

void setup()
{
  tm1637.init();
  tm1637.set(BRIGHT_TYPICAL);//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;
}

void loop()
{
  while (1 > 0)
  {    
    arttir();
    
    tm1637.display(0, saat[0]);
    tm1637.display(1, saat[1]);
    tm1637.display(2, saat[2]);
    tm1637.display(3, saat[3]);
  
    delay(100); 
  }
}

int arttir()
{
  saat[3]++;
  
  if (saat[3] > 9)
  {
    saat[3] = 0;
    saat[2]++;
  }
  
  if (saat[2] > 9)
  {
    saat[2] = 0;
    saat[1]++;
  }
  
  if (saat[1] > 9)
  {
    saat[1] = 0;
    saat[0]++;
  }
  
  if (saat[0] > 9)
  {
    saat[0] = 0;
    saat[1] = 0;
    saat[2] = 0;
    saat[3] = 0;
  }
}