Başa dön
Arduino 8x8 Dot Matrix Kullanımı - MAX7219

Arduino 8×8 Dot Matrix Modülü Kullanımı – MAX7219

Arduino Meraklıları Merhaba, Bu yazımızda arduino ile 8×8 dot matrix modülü max7219 kullanımı nasıl yapılır inceleyeceğiz. Dot Matrixler aslında sürekli karşılaştığımız ama tanımadığımız elemanlardan biri olarak karşımıza çıkıyor. Şöyle ki bakkallardan marketlere,oto sanayiden kasaplara kadar hemen her dükkanın üstünde artık bu teknoloji kullanılıyor. Tabi ki 8×8 dot matrix değil .😊  

 

MAX7219 Kısa Bir Bakış


Şimdi MAX7219 modülüne daha yakından bakalım. 8×8 dot matrix, Arduino ile iletişim için sadece 3 kablo kullanırken 64 ayrı LED’i çalıştırabilir ve dahası, birden fazla sürücüyü ve matrisleri papatya dizimi yapabilir ve bunu yaparken yine aynı 3 kabloyu kullanırız.

64 LED, İşlemcinin 16 çıkış pimi tarafından kontrol edilir. LED’ler 8×8 sıra ve sütun olarak düzenlenmiştir. Böylece MAX7219 dot matrix modülünün her bir sütunu çok kısa bir süre için etkinleştirir ve aynı zamanda her satırı da çalıştırır. Böylece sütunlar ve sıralar arasında hızla geçiş yaptığı için insan gözü sadece sürekli bir ışık görecektir.

Ortak bir 8×8 dot matrixin pimlerinin nasıl düzenlendiğine dikkat edin.

 

Arduino ile Dot Matrix Kullanımı için Gerekli Malzemeler

 

Dot Matrix Uygulama

Alfabedeki harfleri yazdıran bir uygulama yapalım istedim. Önceden belirteyim bağlantıları yapmak biraz zaman alacaktır. Sabretmeden başaramazsınız .😉  

 

 

Devre çizimi

Arduino 8x8 Dot Matrix Bağlantısı

Dot Matrix Bağlantısı

 

Gördüğünüz gibi anlatmaya gerek yok müke… Neyse bu espri trend değil artık😉   Eğer ki kablolamayı başardıysanız buyurunuz siz bu kodları hak ettiniz . Kod bloğunu incelemenizi tavsiye ederim. Düzenleyerek kendi istediğiniz şekilleri çıkartabilirsiniz. Belki de kendinize bir sembol oluşturabilirsiniz. Kolay gelsin diyorum.    

 

 

Arduino 8×8 Dot Matrix Kullanımı için Gerekli Kodlar


#define ROW_1 2
#define ROW_2 3
#define ROW_3 4
#define ROW_4 5
#define ROW_5 6
#define ROW_6 7
#define ROW_7 8
#define ROW_8 9
#define COL_1 10
#define COL_2 11
#define COL_3 12
#define COL_4 13
#define COL_5 A0
#define COL_6 A1
#define COL_7 A2
#define COL_8 A3
const byte rows[] = {
   ROW_1, ROW_2, ROW_3, ROW_4, ROW_5, ROW_6, ROW_7, ROW_8
};
// (1 = ON, 0 = OFF)

byte TODOS[] = {B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111};
byte EX[] = {B00000000,B00010000,B00010000,B00010000,B00010000,B00000000,B00010000,B00000000};
byte A[] = {B00000000,B00011000,B00100100,B00100100,B00111100,B00100100,B00100100,B00000000};
byte B[] = {B01111000,B01001000,B01001000,B01110000,B01001000,B01000100,B01000100,B01111100};
byte C[] = {B00000000,B00011110,B00100000,B01000000,B01000000,B01000000,B00100000,B00011110};
byte D[] = {B00000000,B00111000,B00100100,B00100010,B00100010,B00100100,B00111000,B00000000};
byte E[] = {B00000000,B00111100,B00100000,B00111000,B00100000,B00100000,B00111100,B00000000};
byte F[] = {B00000000,B00111100,B00100000,B00111000,B00100000,B00100000,B00100000,B00000000};
byte G[] = {B00000000,B00111110,B00100000,B00100000,B00101110,B00100010,B00111110,B00000000};
byte H[] = {B00000000,B00100100,B00100100,B00111100,B00100100,B00100100,B00100100,B00000000};
byte I[] = {B00000000,B00111000,B00010000,B00010000,B00010000,B00010000,B00111000,B00000000};
byte J[] = {B00000000,B00011100,B00001000,B00001000,B00001000,B00101000,B00111000,B00000000};
byte K[] = {B00000000,B00100100,B00101000,B00110000,B00101000,B00100100,B00100100,B00000000};
byte L[] = {B00000000,B00100000,B00100000,B00100000,B00100000,B00100000,B00111100,B00000000};
byte M[] = {B00000000,B00000000,B01000100,B10101010,B10010010,B10000010,B10000010,B00000000};
byte N[] = {B00000000,B00100010,B00110010,B00101010,B00100110,B00100010,B00000000,B00000000};
byte O[] = {B00000000,B00111100,B01000010,B01000010,B01000010,B01000010,B00111100,B00000000};
byte P[] = {B00000000,B00111000,B00100100,B00100100,B00111000,B00100000,B00100000,B00000000};
byte Q[] = {B00000000,B00111100,B01000010,B01000010,B01000010,B01000110,B00111110,B00000001};
byte R[] = {B00000000,B00111000,B00100100,B00100100,B00111000,B00100100,B00100100,B00000000};
byte S[] = {B00000000,B00111100,B00100000,B00111100,B00000100,B00000100,B00111100,B00000000};
byte T[] = {B00000000,B01111100,B00010000,B00010000,B00010000,B00010000,B00010000,B00000000};
byte U[] = {B00000000,B01000010,B01000010,B01000010,B01000010,B00100100,B00011000,B00000000};
byte V[] = {B00000000,B00100010,B00100010,B00100010,B00010100,B00010100,B00001000,B00000000};
byte W[] = {B00000000,B10000010,B10010010,B01010100,B01010100,B00101000,B00000000,B00000000};
byte X[] = {B00000000,B01000010,B00100100,B00011000,B00011000,B00100100,B01000010,B00000000};
byte Y[] = {B00000000,B01000100,B00101000,B00010000,B00010000,B00010000,B00010000,B00000000};
byte Z[] = {B00000000,B00111100,B00000100,B00001000,B00010000,B00100000,B00111100,B00000000};
float timeCount = 0;
void setup() {
   // Serial haberleşmeyi başlatıyoruz.
   Serial.begin(9600);   
   // Tüm pinler Çıkış pini olarak ayarlandı
   // Pinler giriş olsaydı, ekran çok kısık olacaktı.
   for (byte i = 2; i <= 13; i++)
       pinMode(i, OUTPUT);
   pinMode(A0, OUTPUT);
   pinMode(A1, OUTPUT);
   pinMode(A2, OUTPUT);
   pinMode(A3, OUTPUT);
}
void loop() {

delay(5);// daha parlak gözüksün diye bekleme var 
timeCount += 1;
if(timeCount <  70) {
drawScreen(A);
} else if (timeCount <  1) { // do nothing
} else if (timeCount <  150) {
drawScreen(R);
} else if (timeCount <  1) {// nothing
} else if (timeCount <  270) {
drawScreen(D);
} else if (timeCount <  1) {// nothing
} else if (timeCount <  350) {
drawScreen(U);
} else if (timeCount <  1) {// nothing
} else if (timeCount <  430) {
drawScreen(I);
} else if (timeCount <  1) {// nothing
} else if (timeCount <  510) {
drawScreen(N);
} else if (timeCount <  1) {
 
} else if (timeCount <  550) {
 drawScreen(O);
} else if (timeCount <  1) {// do nothing
} else if (timeCount <  590) {
drawScreen(EX);
} else if (timeCount <  1) {// nothing
} else if (timeCount <  630) {
drawScreen(EX);
} else if (timeCount <  1) {

//} else if (timeCount <  670) {
//drawScreen(A);
//} else if (timeCount <  1) {
//} else if (timeCount <  710) {
//drawScreen(R);
//} else if (timeCount <  1) {
//} else if (timeCount <  750) {
//drawScreen(D);
//} else if (timeCount <  1) {
//} else if (timeCount <  790) {
//drawScreen(U);
//} else if (timeCount <  1) {
//} else if (timeCount <  830) {
//drawScreen(I);
//} else if (timeCount <  1) {
//} else if (timeCount <  870) {
//} else if (timeCount <  1) {
 
//} else if (timeCount <  910) {
//  drawScreen(O);
//} else if (timeCount <  1) {
} else {
// starta geri dön
timeCount = 0;
}
}
void  drawScreen(byte buffer2[]){
    
   
  // serideki tüm dizileri "ON" moduna getiriyoruz.
   for (byte i = 0; i < 8; i++) {
       setColumns(buffer2[i]); // c
       
       digitalWrite(rows[i], HIGH);
       delay(2); // Çoklama efektini görmek istiyorsanız bunu 50 veya 100 olarak ayarlayabilirsiniz
       digitalWrite(rows[i], LOW);
       
   }
}
void setColumns(byte b) {
   digitalWrite(COL_1, (~b >> 0) & 0x01); // 1. bit: 10000000
   digitalWrite(COL_2, (~b >> 1) & 0x01); // 2. bit: 01000000
   digitalWrite(COL_3, (~b >> 2) & 0x01); // 3. bit: 00100000
   digitalWrite(COL_4, (~b >> 3) & 0x01); // 4. bit: 00010000
   digitalWrite(COL_5, (~b >> 4) & 0x01); // 5. bit: 00001000
   digitalWrite(COL_6, (~b >> 5) & 0x01); // 6. bit: 00000100
   digitalWrite(COL_7, (~b >> 6) & 0x01); // 7. bit: 00000010
   digitalWrite(COL_8, (~b >> 7) & 0x01); // 8. bit: 00000001
   
   // Eğer matrisinizin polaritesi benimkinin tersi ise yukarıdaki '~' yi kaldırın.
}

Gerekli malzemeleri buradan temin etmenizi öneririm piyasayı az çok biliyorsanız zaten siz de fark edersiniz.  

Eğer Arduino 8x8 Dot Matrix Modülü Kullanımı yazımızı beğendiyseniz, Tüm Yazılarımız ve Projelerimize BURAYA TIKLAYARAK ulaşabilirsiniz.
Güncel Maker ve Teknoloji Haberlerimiz için Hemen BAĞLANTIYA TIKLAYIN.

 

Yazımıda Bulunan Ürünleri Robocombo.com Adresinden Satın Alabilirsiniz.