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.

#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]);
}
}
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:
lc.shutdown(0, false) komutu ile 0 indeksli modül aktif hale getirilir.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.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.
Henüz yorum yapılmamış. İlk yorumu siz yapın!