Arduino ile Dot Matrix Kullanımı ve MD_Parola Kütüphanesi ile Kayan Yazı Efektleri

 Merhabalar,

Bu projede LED Dot Matrix olarak adlandırılan 8x8 64 Led'lik modüllerin nasıl kullanıldığını, bu modüllerin arduino ile rahatça kullanılabilmesi için gerekli kütüphaneler arasında en çok yazı efekti sağlayan ve nispeten kolay bir kullanımı olan MD_Max72 ve MD_Parola kütüphanelerini, bağlantı esnasında dikkat edilecek noktaları incelemeye ve örneklendirmeye çalıştım. MD_Parola kütüphanesi kullanarak sadeleştirmiş ve kolay anlaşılabilecek bir örnek yapmaya çalıştım. Çünkü kütüphane kullanmadan veya daha basit kütüphaneler kullanarak da yazı efektleri oluşturmak mümkün olmasına rağmen oldukça karmaşık kodlama gerektirerek sizi zorlayacaktır. Bunun yerine Parola gibi gelişmiş kütüphaneleri kullanarak daha rahat ve pratik bir şekilde birkaç komut satırı ile göze çok hoş görünen efektler oluşturabilirsiniz.
Ayrıca yine videoda, piyasada 4'ü birleşik olarak da satılan ve FC16 olarak adlandırılan 4'lü modülün de aynı şekilde kullanıldığını ve kütüphane içinde bir-iki küçük parametre ayarı ile rahatça kullanılabileceğini gösterdim. Umarım çalışma sizin için faydalı ve bilgilendirici olmuştur. Eğer içeriği beğendiyseniz lütfen Youtube sayfamda Beğen'e tıklamayı ve yeni içeriklerden haberdar olmak için kanalıma abone olmayı ihmal etmeyin. Bir sonraki projede bu çalışmada öğrendiğimiz led matrix kullanımı ve kayan yazı efektlerini kullanarak ve ilave olarak bir adet RTC saat modülü ekleyerek bir dijital saat yapmayı hedefliyorum. Takip ettiğiniz için teşekkürler...

MD_Max72 Kütüphanesi ile ilgili bilgiler: https://majicdesigns.github.io/MD_MAX72XX/index.html Download için: https://github.com/MajicDesigns/MD_MAX72XX MD_Parola Kütüphanesi ile ilgili bilgiler: https://majicdesigns.github.io/MD_Parola/ Download için: https://github.com/MajicDesigns/MD_Parola LedControl kütüphanesi: (daha basit olan) https://github.com/wayoda/LedControl PixeltoMatrix Uygulaması: http://www.mediafire.com/file/61o1hbqss52ksyt/PixelToMatrix.zip Gerekli Malzemeler:
1 adet arduino kontrol kartı
2 veya daha fazla LED Dot Matrix Max7219 modül veya 4'lü birleşik modül
Modül sayısı kadar 16v100uf kondansatör
Harici 5v 1A kaynak (pil veya adaptör, powerbank vs)
Jumper kablo ve breadboard

Devre Şeması

Arduino Kodları

Basit Kod:
//mucitpilot 2020 LED Dot Matrix Kullanımı v1.0 #include <LedControl.h> int DIN = 11; int CS = 10; int CLK = 13; byte a[8]= {0x18,0x3C,0x24,0x66,0x7E,0x7E,0xC3,0xC3}; byte b[8]= {0xFC,0xC2,0xC1,0xFF,0xFE,0xC1,0xC3,0xFC}; byte c[8]= {0x3C,0x7E,0xC3,0xC0,0xC0,0xC3,0x7E,0x3C}; byte d[8]= {0x78,0x7C,0x66,0x66,0x66,0x66,0x7C,0x78}; byte e[8]= {0x7C,0x7C,0x60,0x7C,0x7C,0x60,0x7C,0x7C}; byte f[8]= {0xFE,0xFE,0xC0,0xFC,0xFC,0xC0,0xC0,0xC0}; byte tik[8]= {0x01,0x02,0x04,0x88,0x50,0x20,0x00,0x00}; LedControl lc=LedControl(DIN,CLK,CS,0); void setup(){ lc.shutdown(0,false); lc.setIntensity(0,5); lc.clearDisplay(0); } void loop(){ byte smile[8]= {0x3C,0x42,0xA5,0x81,0xA5,0x99,0x42,0x3C}; byte notr[8]= {0x3C,0x42,0xA5,0x81,0xBD,0x81,0x42,0x3C}; byte uzgun[8]= {0x3C,0x42,0xA5,0x81,0x99,0xA5,0x42,0x3C}; byteYazdir(smile); delay(1000); byteYazdir(notr); delay(1000); byteYazdir(uzgun); delay(1000); abc(); lc.clearDisplay(0); delay(1000); } void abc() { byteYazdir(a); delay(1000); byteYazdir(b); delay(1000); byteYazdir(c); delay(1000); byteYazdir(d); delay(1000); byteYazdir(e); delay(1000); byteYazdir(f); delay(1000); byteYazdir(tik); delay(1000); } void byteYazdir(byte character []) { int i = 0; for(i=0;i<8;i++) { lc.setRow(0,i,character[i]); } }


MD_PAROLA ile Gelişmiş Kayan Yazı Efektleri
//MUCİT PİLOT 2020 MD PAROLA Kütüphanesi ile Kayan Yazı #include <MD_Parola.h> #include <MD_MAX72xx.h> #include <SPI.h> #define HARDWARE_TYPE MD_MAX72XX::GENERIC_HW //kullanılan modül tipi. 4ü bir arada modeller için FC16_HW kullanın #define MAX_DEVICES 5 //kaç modül bağlı olduğu #define CLK_PIN 13 //pinler #define DATA_PIN 11 #define CS_PIN 10 // Bir adet Parola nesnesi yaratıyoruz MD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES); // Kayan Yazı Paramatreleri ve değişkenleri tanımlayalım uint8_t scrollSpeed = 75; // Kayma hızı, rakam küçüldükçe hız artar //Giriş ve çıkışta kayma efektlerini seçin textEffect_t scrollEffectin = PA_SCROLL_LEFT; //PA_SCROLL_LEFT,PA_SCROLL_RIGHT,PA_SCROLL_UP,PA_SCROLL_DOWN textEffect_t scrollEffectout = PA_SCROLL_LEFT; //PA_SCROLL_LEFT,PA_SCROLL_RIGHT,PA_SCROLL_UP,PA_SCROLL_DOWN //metin ne tarafa hizalanacak textPosition_t scrollAlign = PA_CENTER;//PA_CENTER,PA_LEFT,PA_RIGHT uint16_t scrollPause = 0; // İlk Metin kaç milisaniye sabit olarak gösterimde kalacak #define BUF_SIZE 75 //metin uzunluğu char mesajyaz[BUF_SIZE]; const uint16_t WAIT_TIME = 1000; int a=0; String mesaj="Mucit Pilot Youtube 2020";//başlangıç mesajı uint8_t inFX, outFX; //giriş ve çıkışta uygulanacak efektler textEffect_t effect[] = { //kütüphanede tanımlı efektler... PA_PRINT, //0 PA_SCAN_HORIZ,//1 PA_SCROLL_LEFT,//2 PA_WIPE, //3 PA_SCROLL_UP_LEFT,//4 PA_SCROLL_UP,//5 PA_OPENING_CURSOR,//6 PA_GROW_UP,//7 PA_MESH,//8 PA_SCROLL_UP_RIGHT,//9 PA_BLINDS,//10 PA_CLOSING,//11 PA_RANDOM,//12 PA_GROW_DOWN,//13 PA_SCAN_VERT,//14 PA_SCROLL_DOWN_LEFT,//15 PA_WIPE_CURSOR,//16 PA_DISSOLVE,//17 PA_OPENING,//18 PA_CLOSING_CURSOR, //19 PA_SCROLL_DOWN_RIGHT,//20 PA_SCROLL_RIGHT,//21 PA_SLICE,//22 PA_SCROLL_DOWN,//23 }; void setup() { Serial.begin(57600); P.begin(); P.displayText(mesajyaz, scrollAlign, scrollSpeed, scrollPause, scrollEffectin, scrollEffectout); //oynatılacak animasyonun parametlerini tanımlıyoruz inFX=0;//giriş efekti outFX=0;//çıkış efekti mesaj.toCharArray(mesajyaz,BUF_SIZE);//mesaj isimli String'i mesajyaz CHAR'ına çeviriyoruz. Bu işlem şart!!! } void loop() { if(P.displayAnimate()) //tüm işlemler bu animasyon fonksiyonunun altında tanımlanacak { P.setIntensity(10);//0-15 arası parlaklık seviyesi ayarlanabilir //a değişkenini 0'dan itibaren saydırıp MOD3 e göre değer 0-1-2 olacak şekilde sırayla üç farklı işi yapmasını sağlıyoruz if (a==90){a=0;}//90'a ulaşınca tekrar baştan başlaması için if (a%4==0){ fonksiyon_1(); } else if (a%4==1){ fonksiyon_2(); } else if (a%4==2){ fonksiyon_3(); } else { fonksiyon_4(); } a++;//a'yı saydırıyoruz P.displayReset(); //animate fonksiyonunun bitişi gibi düşünülebilir. }//if display animate'in sonu }//void loop'un sonu void fonksiyon_1(){ String metin_1="abone"; metin_1.toCharArray(mesajyaz,BUF_SIZE);//stringi char nesnesine çeviriyoruz inFX=16;//giriş ve çıkış efektlerini seçtik outFX=16; P.setTextEffect(effect[inFX], effect[outFX]);//seçtiğimiz efektleri mevcut animasyon nesnemize atadık P.setPause(1000); //gösterim süresi } void fonksiyon_2(){ String metin_2="OLMAYI"; metin_2.toCharArray(mesajyaz,BUF_SIZE); inFX=6; outFX=6; P.setTextEffect(effect[inFX], effect[outFX]); P.setPause(1000); } void fonksiyon_3(){ String metin_3="ihmal"; metin_3.toCharArray(mesajyaz,BUF_SIZE); inFX=13; outFX=13; P.setTextEffect(effect[inFX], effect[outFX]); P.setPause(1000); } void fonksiyon_4(){ String metin_3="ETMEYiN"; metin_3.toCharArray(mesajyaz,BUF_SIZE); inFX=14; outFX=14; P.setTextEffect(effect[inFX], effect[outFX]); P.setPause(1000); }

Yorumlar

Bu blogdaki popüler yayınlar

QTR-8A Kızılötesi Çizgi Sensörü Kullanımı ve Basit PID Çizgi İzleyen Robot Yapımı

A4988 Step Motor Sürücü Kartı ile NEMA Step Motor Kullanımı

Arduino ile ESP8266 Kullanımı ve İnternet Erişimi Serisi -1 (İnternet Üzerinden Veri Çekme)