Arduino UNO si matricea de led-uri inlantuibila 8×8

Matricea de led-uri 8×8 este o matrice inlantuibila capabila sa afiseze siruri de caractere sau sa creeze diverse efecte luminoase. Poti conecta mai multe matrici impreuna, obtinand astfel afisaje de dimensiuni oricat de mari.

La baza unei matrici se afla 2 circuite integrate 74HC595D. Acest circuite se numesc registre de deplasare sau shift registers (termenul echivalent in engleza). Un astfel registru de deplasare iti permite sa controlezi 8 iesiri digitale utilizand doar 3 pini ale placii Arduino (pini corespunzatori intrarilor in matrice Clock, Latch si Data). Iar partea cu adevarat frumoasa este ca si pentru doua matrici ai nevoie tot de trei pini. Si pentru trei matrici la fel. Si tot asa, poti controla sute de matrici folosind exact trei pini.

Arduino transmite pe pinul Data 8 biti (serial, unul dupa altul) cate unul pentru fiecare dintre cele 8 iesiri. Delimitarea intre biti se realizeaza prin pinul Clock, comandat tot de catre Arduino (citirea semnalului util se face atunci cand semnalul Clock trece prin zero). Folosind pinul Latch valorile celor 8 biti sunt trimisi pe iesire.

Cum conectez o matrice la placa Arduino ?

Conectarea unei matrici la placa Arduino se realizeaza foarte usor. Iti sunt necesare 5 fire pe care le vei conecta ca in tabelul urmator (2 fire reprezinta  alimentarea matricei):

In continuare poti testa 2 exemple de programe. Primul program iti creeaza un efect luminos in functie de valorile variabilelor numberToDisplay1 si numberToDisplay2.

Cel de-al doilea program iti afiseaza litera A dintr-un array de 8 octeti, respectiv
byte message[8] = {63,127,136,136,136,136,127,63};

Primul exemplu de program.

int latchPin = 6;
int clockPin = 7;
int dataPin = 5;
void setup() {
 pinMode(latchPin, OUTPUT);
 pinMode(clockPin, OUTPUT);
 pinMode(dataPin, OUTPUT);
}
void loop() {

 byte numberToDisplay1 = 170; 
 byte numberToDisplay2 = 170; 
 digitalWrite(latchPin, LOW);
 shiftOut(dataPin, clockPin, MSBFIRST, numberToDisplay1); 
 shiftOut(dataPin, clockPin, MSBFIRST, numberToDisplay2); 
 digitalWrite(latchPin, HIGH);
 delay(100);
 delay(500);

 numberToDisplay1 = 85; 
 numberToDisplay2 = 85; 
 digitalWrite(latchPin, LOW);
 shiftOut(dataPin, clockPin, MSBFIRST, numberToDisplay1); 
 shiftOut(dataPin, clockPin, MSBFIRST, numberToDisplay2); 
 digitalWrite(latchPin, HIGH);
 delay(100);
 delay(300);

}

Al doilea exemplu de program.

int latchPin = 6;
int clockPin = 7;
int dataPin = 5;
byte message[8] = {63,127,136,136,136,136,127,63};
void setup() {
 pinMode(latchPin, OUTPUT);
 pinMode(clockPin, OUTPUT);
 pinMode(dataPin, OUTPUT);
}
void loop() { 

 int numberToDisplay1 = 1; 
 byte numberToDisplay2 = 64; 

 for (int contor=0; contor<=7; contor++) {
 digitalWrite(latchPin, LOW);
 shiftOut(dataPin, clockPin, MSBFIRST, message[contor]);
 shiftOut(dataPin, clockPin, MSBFIRST, numberToDisplay1); 
 digitalWrite(latchPin, HIGH);
 numberToDisplay1 = numberToDisplay1 << 1; 
 delay(1); 
 } 
 }

Cum conectez mai multe matrici impreuna?

Fiecare matrice este prevazuta cu 2 conectori amplasati pe parti opuse  care faciliteaza inlantuirea matricelor. Conecteaza-le impreuna si alimenteaza  placa Arduino. Vei observa ca acelasi tipar care apare pe prima matrice se va  regasi si pe cea de-a doua.

Exact la fel vei face si pentru trei, patru, sau oricate matrici.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s