Arduino ve MAX7219 ile 8x8 LED Matrix Kontrolü

👤 Yazar: ozcan 📅 Tarih: 22.07.2026 08:02 👁️ Görüntüleme: 16

Arduino ve MAX7219 ile 8x8 LED Matrix Kontrolü

MAX7219 entegresi, 64 adet bireysel LED'den oluşan 8x8 matris ekranları sürmek için kullanılan popüler bir SPI tabanlı sürücüdür. Bireysel LED kontrolünde mikrodenetleyicinin çok sayıda pinini harcamak yerine, dahili taranan tarama mimarisi ve veri saklama kaydedicileri sayesinde sadece 3 dijital pin (DIN, CS, CLK) üzerinden ekranın tamamını kontrol etmenizi sağlar.

Arduino ve MAX7219 ile 8x8 LED Matrix Kontrolü şeması

Görseldeki Pin Bağlantı Şeması:
  • VCC: Arduino 5V (Kırmızı Kablo)
  • GND: Arduino GND (Siyah Kablo)
  • DIN (Data In): Arduino Dijital Pin 12 (Yeşil Kablo)
  • CS / LOAD (Chip Select): Arduino Dijital Pin 10 (Sarı Kablo)
  • CLK (Clock): Arduino Dijital Pin 11 (Mavi Kablo)

Arduino Uygulama Kodları

#include <LedControl.h>

// Şemadaki pin tanımlamaları
const int DIN_PIN = 12;
const int CLK_PIN = 11;
const int CS_PIN  = 10;

// LedControl nesnesi oluşturuluyor: (DIN, CLK, CS, Bağlı Modül Sayısı)
LedControl lc = LedControl(DIN_PIN, CLK_PIN, CS_PIN, 1);

// 8x8 Matris üzerinde gösterilecek özel figür (Gülen Yüz İkonu)
const byte gulenYuz[8] = {
  B00111100, // Satır 0
  B01000010, // Satır 1
  B10100101, // Satır 2 (Gözler)
  B10000001, // Satır 3
  B10100101, // Satır 4 (AğızDetay)
  B10011001, // Satır 5 (Gülümseme)
  B01000010, // Satır 6
  B00111100  // Satır 7
};

void setup() {
  // MAX7219 varsayılan olarak güç tasarrufu (shutdown) modundadır, uyandırıyoruz
  lc.shutdown(0, false);
  
  // Ekran parlaklığını ayarlıyoruz (0 - 15 arası değer alır)
  lc.setIntensity(0, 5);
  
  // Ekranı temizliyoruz
  lc.clearDisplay(0);
}

void loop() {
  // --- 1. UYGULAMA: Karakter / İkon Çizdirme ---
  figurCiz(gulenYuz);
  delay(2000);

  lc.clearDisplay(0);
  delay(500);

  // --- 2. UYGULAMA: Sırayla Tüm LED'leri Yakıp Söndürme (Piksel Tarama) ---
  for (int satir = 0; satir < 8; satir++) {
    for (int sutun = 0; sutun < 8; sutun++) {
      lc.setLed(0, satir, sutun, true); // İlgili pikseli yak
      delay(50);
    }
  }

  for (int satir = 0; satir < 8; satir++) {
    for (int sutun = 0; sutun < 8; sutun++) {
      lc.setLed(0, satir, sutun, false); // İlgili pikseli söndür
      delay(50);
    }
  }

  delay(1000);
}

// 8 baytlık dizi verisini matrise aktaran yardımcı fonksiyon
void figurCiz(const byte veriler[]) {
  for (int i = 0; i < 8; i++) {
    lc.setRow(0, i, veriler[i]);
  }
}

Kod Yapısı ve MAX7219 Çalışma Mantığı

MAX7219 modülü seri veriyi kaydırmalı olarak alır ve matrisin ilgili matris elemanlarına dağıtır. Taslak kod içerisinde kullanılan LedControl kütüphanesi şu temel işlevleri yürütür:

  • Modül Uyandırma (Shutdown): Donanım ilk açıldığında enerji tasarrufu için kapalı durumdadır. lc.shutdown(0, false) komutu ile 0 indeksli modül aktif hale getirilir.
  • Akım ve Parlaklık Kontrolü (PWM): lc.setIntensity(0, 5) fonksiyonu, entegre içerisindeki dahili analog/dijital parlaklık sürücüsünü ayarlar. Yüksek parlaklık değerlerinde aşırı akım çekilmesini önlemek için ideal değer aralığı 4-8 arasındadır.
  • Satır/Bit Haritalama (setRow & setLed): Matristeki her bir satır 8 bitlik (1 bayt) bir sayı ile ifade edilir. Örneğin B10100101 verisinde '1' olan bitler ilgili satırdaki LED'lerin yanmasını, '0' olanlar ise sönük kalmasını sağlar.

Uygulamayı derlemeden önce Arduino IDE menüsünden Taslak → Kütüphane Ekle → Kütüphaneleri Yönet yolunu izleyerek LedControl kütüphanesini sisteminize eklediğinizden emin olun.

💬 Yorumlar

Henüz yorum yapılmamış. İlk yorumu siz yapın!

Bir Yorum Bırakın

Güvenlik Kontrolü:

Yenidir.com
↑ Sayfa Başı
📞 İletişim ✉ E-Posta Gönder 🟥 YouTube
© 2026 Yenidir.com
Yenidir CMS V0.1