08
Oca
2020

Arduino ile 8×8 dot matrix display kullanımı

8×8 dot matrix display, yatayda ve dikeyde 8 sıra olmak üzere toplam 64 ledin bir matris şeklinde dizilerek oluşturulduğu basit bir ekran teknolojisidir. Bilgisayarlar ve televizyonlarda kullanılan yüksek çözünürlüklü ekranların atasıdır. Arduino uygulamalarında, ihtiyaca göre bir veya birden çok dot matrix birlikte kullanılarak harfler, rakamlar, şekiller ve kelimeler  gösterilebilir.

Dot matrix displayin tıpkı 7 segment display gibi ortak anot ve ortak katot olmak üzere iki çeşidi vardır. Ortak anot modelde dot matrixteki 64 ledin anotları ortak bağlanmış, ortak katot modelde ise ledlerin katotları ortak bağlanmıştır.

Örneğin ortak anot modelde 3. sütun 5. satırdaki ledi yakmak için 5. satıra + voltaj uygulanmalı ve 3. sütun GND ye bağlanmalıdır. Hem 3. sütun 5. satır hem de 4. sütun 6. satır ledi aynı anda yakılmak istenirse, 5. ve 6. satırdan + voltaj uygulanır ve 3. ve 4. satır da GND ye bağlanır. Ancak bu durumunda istenen iki led dışında, 3. sütun 6. satır ve 4. sütun 5. satır ledleri de yanacaktır. Bu hatanın önüne geçmek için dot matrix displayde ledler insan gözünün algılayamayacağı kadar hızla ve sırasıyla yakılır. Displaydeki ledlerin sırasıyla yakılmasına tarama işlemi denir. Bu işlem günümüzdeki gelişmiş LCD ekranlarda kullanılan sistemin aynısıdır. 1 saniyedeki tarama sayısına Tazeleme Oranı (Refresh rate) denir.

8×8 dot matrix displayin 16 adet bacağı bulunur. Bu kadar bacak sayısına sahip bir modülü Arduino’ ya doğrudan bağlamak yerine, bunların yönetimini başka bir entegreye devretmek daha mantıklı bir seçenektir. 8×8 dot matrix displayde genellikle MAX7219 adlı sürücü entegresi kullanılır.

Max7219 Led display sürücüsü

MAX7219 entegresi tek başına temin edilebilir. Ancak bu çalışmada 8×8 dot matrixe entegre edilmiş olan modül kullanılmıştır. Bu modül SPI haberleşme standardı ile iletişim kurar. Modülün üzerinde enerji için VCC ve GND pinleri bulunur. Veri iletişimi için de; DIN (Data-in) adlı veri girişi pini, CS (Chip Select) adlı tümdevre seçim pini ve CLK (Clock) adlı saat pini bulunur. SPI haberleşme standardı ile master-slave tanımlaması yapılarak, birden fazla dot matrix Arduino’ nun yalnız üç pini kullanılarak yönetilebilir.

Malzemeler

  • 1 adet Arduino
  • 1 adet MAX7219 Dot matrix modülü

Bağlantı şeması

Kaynak kod

Aşağıdaki Arduino programı, yukarıdaki “gülücük” ifadesini ekranda göstermektedir. Görüldüğü gibi her satır 8 adet binary sayıdan oluşan veri ile ifade edilmiştir. Yanması gereken ledler 1, diğerleri 0 ile ifade edilmiştir. Bu byte dizisibyte Gulucuk[8] = {B00111100, B01000010, 10100101, B10000001, B10100101, B10011001, B01000010, B00111100} şeklinde tanımlanabilir. Ancak buradaki Arduino programında, bu diziyi daha kısa ifade etmek için HEX koduna çevirerekbyte Gulucuk[8]= {0x3C, 0x42, 0xA5, 0x81, 0xA5, 0x99, 0x42, 0x3C}şeklinde tanımlamak tercih edilmiştir. Kodun ilk satırında, MAX7219′ un kontrolü için LedControl.h kütüphanesi programa dahil edilmiştir. LedControl.h kütüphanesini buraya tıklayarak indirebilirsiniz.

#include <LedControl.h>

int DIN = 7;
int CS =  6;
int CLK = 5;

LedControl DotMatrix=LedControl(DIN,CLK,CS,0); // DotMatrix adında bir display tanımla

void setup(){
  DotMatrix.shutdown(0,false);       // Dotmatrix açılışta bekleme modunda
  DotMatrix.setIntensity(0,15);      // Ledlerin parlaklık değerini maksimuma getir
  DotMatrix.clearDisplay(0);         // DotMatrixi temizle
}

void loop(){ 
  byte Gulucuk[8] = {0x3C,0x42,0xA5,0x81,0xA5,0x99,0x42,0x3C};  // Gülücük şeklinin byte dizisini tanımla
  Yazdir(Gulucuk); // Byte dizisini yazacak olan fonksiyonu çağır
}

void Yazdir(byte character [])  // Yazdırma fonksiyonunu oluştur
{
  int i = 0;
  for(i=0;i<8;i++) // 8 satıra sırasıya yazdır.
  {
    DotMatrix.setRow(0,i,character[i]);
  }
}

Aşağıdaki linke tıklayarak, dotmatrix ile çizebileceğiniz karakterlerin byte dizilerini oluşturabilirsiniz.

http://dotmatrixtool.com/#