Arduino Meraklıları Merhaba, Bu yazımızda arduino ile 8x8 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 8x8 dot matrix değil .😊
MAX7219 Kısa Bir Bakış
Şimdi MAX7219 modülüne daha yakından bakalım. 8x8 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
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 8x8 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.
.
Yazımıda Bulunan Ürünleri Robocombo.com Adresinden Satın Alabilirsiniz.