LED Matris Oluşturucu (MAX7219)
Tek bir 8x8 modülde ya da 8x64'e kadar bir zincirde çizin, kare kare animasyon hazırlayın ve LedControl veya MD_MAX72XX için eksiksiz Arduino kodunu kopyalayın. uint64_t sabitleri ve ham bayt dizisi de alabilirsiniz. Her şey tarayıcınızda çalışır.
Bir LED'e tıklayınca yanar ya da söner, sürükleyerek boyayabilirsiniz. İlk dokunduğunuz LED, sürüklemenin çizme mi silme mi olacağını belirler. Kaydırma işlemleri kenardan taşanı öbür uca taşır.
Yazı 5x7 yazı tipiyle basılır, her modüle bir karakter düşer (A-Z, 0-9) ve yukarıda seçtiğiniz modülden başlar. Türkçe harfler yazı tipinde yok.
Kare 1 / 1
Gerçek ekranda görüntü dönmüş, aynalanmış ya da modüller yer değiştirmiş mi? Yeniden çizmeyin, buradan düzeltin: bu seçenekler yalnızca üretilen kodu değiştirir. Varsayılanlar FC-16 4'ü 1 arada kartlara göredir, orada cihaz 0 en sağdaki modüldür. Tekli jenerik modüller çoğu zaman 90 veya 270 derece ister.
// Yükleniyor…Her görsel için bir 64 bit hex sabit yapıştırın, virgülle ya da alt alta ayırarak. xantorohara editöründen alınmış bir IMAGES[] dizisinin tamamı da olur. Her sabit bir kareye dönüşür ve mevcut karelerin yerini alır (Geri al ile dönebilirsiniz).
MAX7219 LED matriste çizim ve animasyon
Arduino için satılan kırmızı 8x8 LED modüllerin neredeyse hepsinde aynı entegre var: MAX7219. Bu sayfa tek modülde ya da sekiz modüle kadar bir zincirde yaptığınız çizimi animasyona ve olduğu gibi yükleyebileceğiniz bir Arduino koduna çevirir.
MAX7219 nedir?
MAX7219, önce Maxim Integrated'ın ürettiği, bugün Analog Devices çatısı altındaki seri arayüzlü bir LED sürücüsüdür. Veri sayfasına göre 8 haneye kadar 7 segment gösterge, çubuk gösterge ya da 64 ayrı LED sürebilen ortak katotlu bir sürücüdür; 64 LED de tam olarak bir 8x8 matris eder. Görüntüyü kendi içindeki 8x8'lik statik RAM'de tutar ve LED'leri kendisi tarar, yani kartınız yalnızca bir şey değiştiğinde yazar. LED akımını tek bir harici direnç belirler, parlaklığı ise koddan 16 kademeli yoğunluk yazmacı ayarlar.
Veri DIN hattından 16 bitlik paketler halinde girer, CLK ile içeri kaydırılır ve çoğu modülde CS diye yazılan LOAD ucuyla işlenir. İçeri giren veri DOUT'tan dışarı çıkar; birden fazla entegrenin aynı üç kabloyu paylaşmasını sağlayan şey budur. Yan yana dört modül, çok bilinen 8x32 ekranı oluşturur. Her kodu ilgilendiren bir ayrıntı var: MAX7219 enerji verildiğinde ekranı karartılmış, kapalı (shutdown) modda ve en düşük parlaklıkta başlar. Üretilen kodun bir şey çizmeden önce shutdown(d, false) çağırıp parlaklığı ayarlamasının sebebi bu.
Arduino Uno ve ESP32 bağlantısı
| Modül pini | Arduino Uno / Nano | ESP32 (VSPI) |
|---|---|---|
| VCC | 5V | 5V (VIN) |
| GND | GND | GND |
| DIN | D11 (MOSI) | GPIO 23 (MOSI) |
| CS | D10 | GPIO 5 |
| CLK | D13 (SCK) | GPIO 18 (SCK) |
Kabloları her zaman modülün giriş tarafına, DIN yazan uca bağlayın. Ayrı modülleri zincirlemek için birinin DOUT çıkışını sonrakinin DIN girişine bağlayın; VCC, GND, CS ve CLK hepsinde ortaktır. FC-16 4'ü 1 arada kartlar bunu PCB üzerinde zaten yapar. LedControl kodu veri yolunu yazılımla sürdüğü için boştaki herhangi üç pin olur. MD_MAX72XX kodu donanımsal SPI kullanır, bu yüzden DIN ve CLK tablodaki MOSI ve SCK pinlerine gitmelidir. Bu pinlerin kartınızda nerede olduğundan emin değilseniz Arduino pinout ve ESP32 pinout sayfalarına bakın.
Editör nasıl kullanılır?
- Matris boyutunu seçin. Her modül 8 sütun ekler, dört modül 8x32 eder.
- Fareyle ya da parmağınızla çizin, isterseniz hazır bir şekille veya yazıyla başlayın.
- Sonraki kareyi Çoğalt ile mevcut kareden türetin, birkaç LED'i değiştirin. Oynat, döngüyü verdiğiniz gecikmeyle gösterir.
- Çıktı sekmesini seçin, kartı ve pinleri ayarlayın, kodu kopyalayın ya da .ino olarak indirin.
- Karta yükleyin. Görüntü dönmüş, aynalanmış ya da karışık çıkarsa çıktı seçeneklerini değiştirip yeniden yükleyin; çizimi baştan yapmanız gerekmez.
Çalışmanız bu tarayıcıya otomatik kaydedilir, Paylaşım bağlantısını kopyala ise animasyonun tamamını adresin içine koyar.
Baytlar LED'lere nasıl karşılık gelir?
8x8 modülün her satırı bir bayttır. LedControl ve MD_MAX72XX çıktısında en anlamlı bit (MSB) en soldaki LED'dir; yani 0b10000001 satırın iki uçtaki LED'ini, 0b00011000 ise ortadaki ikisini yakar. Kalp şekli bu türden sekiz satırdan oluşur:
0b01100110
0b11111111
0b11111111
0b11111111
0b01111110
0b00111100
0b00011000
0b00000000LedControl, lc.setRow(cihaz, r, deger) ile r. satırı entegrenin r + 1 numaralı hane yazmacına gönderir. uint64_t biçimi sekiz satırın hepsini tek bir 64 bitlik sayıya sıkıştırır: satır 0 en düşük bayttır, her baytın içinde de bit 0 sol sütundur. Bu, çok kullanılan xantorohara LED Matrix Editor'ün düzenidir; oradaki sabitleri yukarıdaki içe aktarma kutusuna yapıştırabilirsiniz. Aynı entegre matris yerine sekiz haneli 7 segment göstergeyi de sürebilir; o durumda segment baytları için 7 segment kod üretici işinizi görür.
LedControl mi, MD_MAX72XX mi, MD_Parola mı?
- LedControl küçük ve sade bir kütüphanedir. Veri yolunu herhangi bir pinde yazılımla sürer, en fazla 8 cihazı destekler ve
setRow,setColumn,setLedfonksiyonlarını verir. Cihaz 0, karta bağlı olan modüldür. - MD_MAX72XX donanımsal SPI kullanır ve farklı modül tiplerinin nasıl kablolandığını
HARDWARE_TYPEüzerinden bilir. Koordinatları sağ üst köşeden başlar: sütun 0 en sağdaki sütundur, modül numaraları sola doğru artar. Üretilen kod bunu zaten hesaba katar. - MD_Parola MD_MAX72XX'in üzerine kuruludur, kayan yazı ve yazı efektleri ekler. Çizilmiş kareleri oynatmak yerine bir mesajı kaydırmak istiyorsanız doğru kütüphane odur.
Sorun giderme
Görüntü aynalı, dönmüş ya da karışık. Baytlarda bir sorun yok, modül kodun varsaydığından farklı kablolanmış. LedControl'de Her modülü döndür, Her modülü aynala ve Modül sırasını ters çevir seçeneklerini kullanın. MD_MAX72XX'te önce HARDWARE_TYPE değerini PAROLA_HW, GENERIC_HW veya ICSTATION_HW yapın, döndürmeyi 0'da bırakın.
Hiçbir LED yanmıyor. Kodun entegreyi shutdown(d, false) ile uyandırdığından ve bir parlaklık ayarladığından, VCC'nin 5V olduğundan ve kabloların DOUT değil DIN tarafına bağlandığından emin olun. Sonra CS ile CLK kablolarının yer değiştirip değiştirmediğine bakın.
Yalnızca bazı modüller çalışıyor ya da hepsi aynı şeyi gösteriyor. Koddaki cihaz sayısı zincirdeki modül sayısıyla aynı olmalı. Buradaki matris boyutunu gerçek uzunluğa ayarlayın.
Çok modülde titreme, resetlenme ya da sönük LED'ler. Tam parlaklıkta uzun bir zincir, USB portunun ya da kart üzerindeki regülatörün rahatça veremeyeceği kadar akım çeker. Parlaklığı düşürün, matrisi GND'si kartla ortak ayrı bir 5V kaynaktan besleyin. Veri sayfası ayrıca her entegrenin yakınına, V+ ile GND arasına 10 µF elektrolitik ve 0,1 µF seramik kondansatör konmasını önerir.
Tek renkli bir OLED ile mi çalışıyorsunuz? GIF'ten OLED animasyon aracı bir GIF'i SSD1306 ekranlar için karelere çevirir.
Sık Sorulan Sorular
8x8 LED matriste animasyon nasıl yapılır?
İlk görüntüyü çizin, Çoğalt ile yeni bir kareye kopyalayın, birkaç LED'i değiştirin ve bunu tekrarlayın. Oynat düğmesi döngüyü milisaniye cinsinden verdiğiniz gecikmeyle gösterir. Sonuç hoşunuza gidince LedControl ya da MD_MAX72XX sekmesini seçip kodu kopyalayın ve karta yükleyin. Kareler PROGMEM'de durur, döngü onları o gecikmeyle sırayla gösterir.
LedControl ile MD_MAX72XX arasındaki fark ne?
LedControl, MAX7219 veri yolunu yazılımla süren küçük bir kütüphanedir; herhangi üç pinle çalışır ve en fazla 8 modülü destekler. Satırları setRow ile tek seferde yazarsınız. MD_MAX72XX donanımsal SPI kullanır, yaygın modül tiplerinin kablolamasını HARDWARE_TYPE ile bilir ve kayan yazı için kullanılan MD_Parola bu kütüphanenin üzerine kuruludur. Birkaç sabit kare için ikisi de yeterli; uzun zincir ya da yazı efektleri için MD_MAX72XX ile başlamak daha iyi.
4 adet MAX7219 modülü (8x32) nasıl bağlanır?
4'ü 1 arada FC-16 kartında modüller PCB üzerinde zaten birbirine bağlıdır, yalnızca giriş tarafını bağlarsınız: Uno'da VCC 5V'a, GND GND'ye, DIN 11'e, CS 10'a, CLK 13'e. Ayrı modüllerde her modülün DOUT çıkışını bir sonrakinin DIN girişine bağlayın, VCC, GND, CS ve CLK hepsinde ortak olsun. Ardından buradaki boyutu 8x32 yapın ki kod 4 cihaz kullansın.
LED matris neden ayna görüntüsü veya ters çıkıyor?
Üreticiler LED matrisi MAX7219'a farklı şekillerde bağlıyor, bu yüzden aynı baytlar döndürülmüş, aynalanmış ya da modüller yer değiştirmiş halde görünebilir. LedControl'de kodun altındaki Döndür, Aynala ve Modül sırasını ters çevir seçeneklerini kullanın; bunlar çizimi değil yalnızca çıktıyı değiştirir. MD_MAX72XX'te HARDWARE_TYPE değerini FC16_HW yerine PAROLA_HW, GENERIC_HW veya ICSTATION_HW yapın.
ESP32 ile kullanılabilir mi?
Evet. ESP32 hazır ayarını seçtiğinizde pinler varsayılan VSPI pinleri olan DIN 23, CLK 18 ve CS 5 olur. Modülü 5V ile besleyin. MAX7219 veri sayfası 5 V beslemede lojik 1 için en az 3,5 V ister; ESP32'nin 3,3 V çıkışı bunun altında kalır. Ekranda rastgele pikseller görürseniz DIN, CLK ve CS hatlarına 5 V seviye dönüştürücü ekleyin.
Çizimim bir yere yükleniyor mu?
Hayır. Editör, kod üretici ve içe aktarma tamamen tarayıcınızda çalışır, hiçbir ağ isteği yapılmaz. Çalışmanız bu tarayıcının yerel depolamasına otomatik kaydedilir. Paylaşım bağlantısı çizimi adresin içinde taşır, sunucuda hiçbir şey saklanmaz.