Dot Matrix Nedir?
Led (dot) matrixler çok sayıda ledin matris düzeninde yan yana ve alt alta dizilerek konumlandığı ekranlardır. Dükkanlar, iş yerleri, metro durakları gibi günlük hayatta sıkça bulunduğumuz mekanlardaki tabelalarda kullanılan dot matrixlerden elektronik projelerinde de çokça faydalanıyoruz. Bu araçları kullanarak kimi zaman bir yazıyı kimi zaman bir sembolü görüntüleyebiliyoruz. Gelin bu displaylerin iç yapısına ve çalışma mantıklarına bir göz atalım.
Dot Matrix Arduino ile Kullanımı
Dot matrixler çok bacaklı elemanlardır, 8×8 bir dot matrix üzerinde 16 bacak bulunur. Hal böyle olunca yardımcı bir entegre olmadan bir işlemci ile beraber kullanılması fazla sayıda çıkışın işgal olmasına sebep olacaktır. Hatta bu dot matrixlerin ard arda bağlanabildiğini de düşünecek olursak kullanım çok daha karışık bir hal alacaktır. Bu yüzden dot matrixleri kullanırken yardımcı entegreler imdadımıza yetişiyor. Entegre seçimi yaparken çokça alternatifle karşılaşabilirsiniz. Biz bu iş için en çok tercih edilen entegre olan MAX7219 entegresini kullanmayı tercih edeceğiz ve kodumuzu da buna göre yazacağız. Dot matrixler bu entegre ile beraber board olarak alınabileceği gibi ayrı ayrı alınarak da kullanılabilir. Tercih edilen bir diğer entegre de 74HC595 shift register entegresi.
MAX7219 entegresinden farklı bir entegre kullanmanız durumunda kodda ve bağlantılarda düzenleme yapmanız gerekiyor. Bu çalışmada Arduino Uno ve Dot Matrix Board kullanacağız.
Bağlantı Şeması
Proje Kodu
Proje kodumuzda MAX7219 ve MAX7221 entegreli led matrixlerde kullanılan LedControl kütüphanesinden faydalanacağız. Kütüphaneyi buraya tıklayarak indirebilirsiniz.
Kendi şekillerinizi uygulamak için buraya tıklayarak ulaşabileceğiniz editörden yararlanabilirsiniz. İstediğiniz şekli çizdikten sonra sağ üstteki as byte array tikini seçerek şeklinizin binary karşılığını alabilirsiniz. Ardından kodda ifadeleri tanımladığımız kısma ekleyebilir, dilediğiniz şeklin çıktısını alabilirsiniz.
#include//Kütüphanemizi dahil edelim //Pin numaralarını tanımlıyoruz #define CLK 5 #define CS 6 #define DIN 7 #define MaxSayisi 1 //Bağlı olan dot matrix sayısı const long delay_suresi = 750; //Kodda kullanacağımız delay süresi LedControl led = LedControl(DIN, CLK, CS, MaxSayisi); //Kullanacağımız ifadeler için byte tipinde bir dizi tanımlıyoruz byte images[][8] = {{ 0, //kalp B01100110, B11111111, B11111111, B01111110, B00111100, B00011000 }, { B00111100, //uzgun ifade B01000010, B10100101, B10000001, B10011001, B10100101, B01000010, B00111100 }, { B00111100, //normal ifade B01000010, B10100101, B10000001, B10111101, B10000001, B01000010, B00111100 }, { B00111100, //gulen ifade B01000010, B10100101, B10000001, B10100101, B10011001, B01000010, B00111100 } }; void MatrixeYazdir(byte* ch) { for (int i = 0; i < 8; i++) { led.setRow(0, i, ch[i]); } } void setup() { led.setIntensity(0, 10); //Parlaklık ayarı led.shutdown(0, false); //Led matrixi aktif hale getirme led.clearDisplay(0); } void loop() { for (int j = 0; j < 4; j++) //Tüm şekilleri yazdırma { MatrixeYazdir(images[j]); delay(delay_suresi); } for (int i = 0; i < 15; i++) //Azdan çoğa parlaklık { led.setIntensity(0, i); delay(100); } }