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
Yorum Gönder