ARDUINO 8X8 LED MATRIX DEVRESİ







Malzemeler
-Arduino

-74HC595 (2x)
-Bread board veya delikli plaket

Arduino ile 8×8 Led Matrix Devresi

Aşağıdaki bağlantı şemasında 2 adet 74HC595 entegresi mevcut bu entegreler Led Matrix’i sürmemize yardımcı entegrelerdir. Entegrelerin birisi satır diğeri ise sütunları kontrol etmektedir. 74HC595 çalışma prensibini hatırlatacak olursak. Entegreye SHCP, STCP, DS  bacaklarına palsler (5V) göndererek entegrenin çıkış gerilimlerini belirliyoruz. Bu palslerin gönderimi içinde Arduino uno kullanılmaktadır. 13, 12 ve 11 pinler birinci 74HC595 entegresinin SHCP, STCP, DS bacaklarına; 7, 6 ve 5 pinler ilede ikinci 74HC595 entegresinin SHCP, STCP, DS bacaklarına bağlanmıştır. Bu sayede arduino programlamasına göre çıkışlarımızı ayarlamış olacağız.

KOD:
int latchPin = 12; //Bacak Bağlantısı birinci 74HC595 için ST_CP
int clockPin = 13; //Bacak Bağlantısı birinci 74HC595 için SH_CP
int dataPin = 11; //Bacak Bağlantısı birinci 74HC595 için DS
int latchPin2 = 6; //Bacak Bağlantısı ikinci 74HC595 için ST_CP
int clockPin2 = 7; //Bacak Bağlantısı ikinci 74HC595 için ST_CP
int dataPin2 = 5; //Bacak Bağlantısı ikinci 74HC595 için ST_CP
int i=0,j=0,k=0,length_of_cathode_decimal_array, cathode_decimal_value=0;
int two_multiple=1;
int length_of_two_d_array=8;
int anode_decimal[]={1, 2, 4, 8, 16, 32, 64, 128};
int cathode_decimal[8];
int text_to_display[8][8]={
{0, 0, 1, 1, 1, 1, 0, 0},
{0, 1, 0, 0, 0, 0, 1, 0},
{1, 0, 1, 0, 0, 1, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 1, 0, 0, 1, 0, 1},
{1, 0, 0, 1, 1, 0, 0, 1},
{0, 1, 0, 0, 0, 0, 1, 0},
{0, 0, 1, 1, 1, 1, 0, 0}
};
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(latchPin2, OUTPUT);
pinMode(clockPin2, OUTPUT);
pinMode(dataPin2, OUTPUT);
for(j=0;j<length_of_two_d_array;j++)
{
for(i=0;i<8;i++) { if(text_to_display[i][j]==0) { if(i>0)
{
for(k=0;k<i;k++)
{
two_multiple=two_multiple * 2;
}
}
cathode_decimal_value=cathode_decimal_value + two_multiple;
two_multiple=1;
}
}
cathode_decimal[j]=cathode_decimal_value;
cathode_decimal_value=0;
}
}
void loop() {
for(k=0;k<7;k++)
{
for(j=0;j<8;j++)
{
for(i=0;i<5;i++)
{
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, anode_decimal[j]);
digitalWrite(latchPin, HIGH);
digitalWrite(latchPin2, LOW);
shiftOut(dataPin2, clockPin2, MSBFIRST, cathode_decimal[j]);
digitalWrite(latchPin2, HIGH);
}
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0);
digitalWrite(latchPin, HIGH);
digitalWrite(latchPin2, LOW);
shiftOut(dataPin2, clockPin2, MSBFIRST, 255);
digitalWrite(latchPin2, HIGH);
}
}
}

Google Plus ile Paylaş

Kısaca: j

Elektronik ve Geliştirme Kartları hakkında bilgilerini sizlerle paylaşan yardımsever bir kişi.
    BLOGGER YORUMLARI
    FACEBOOK YORUMLARI

0 yorum:

Yorum Gönder