KKM: LED MATRICA 8x8 s MAX7219 driverom

Početnik si s Croduinom. Ili s elektronikom? Za oko ti je zapeo određeni modul, ali ne znaš kako ga koristiti? Bez brige, tu je KKM! Kako Koristiti Module (KKM) je serija blog tutorijala e-radionice na kojoj ćeš pronaći sve što ti treba kako bi započeo rad sa svojim omiljenim modulom. Tutorijali obuhvaćaju: tehničke karakteristike, princip rada, upute kako povezati modul s Croduinom te osnovni kod. Sve ostalo prepuštamo tebi na maštu.

Uvod

Neovisno jeste li Croduino početnik ili ste napravili već nekoliko vlastitih projekata s Croduino pločicom, zasigurno ste se susreli s LE diodom te načinom na koji ona radi. LE dioda je neizostavan dio raznih jednostavnih (a i naprednih) projekata. Zasigurno se mnogi početnici pitaju što ako želimo koristiti više LE dioda u isto vrijeme? Moramo li svaku LE diodu spojiti na zasebni digitalni izlaz Croduino pločice? Što ako nemamo dovoljno Croduino pinova za sve LE diode potrebne u našem projektu? Riješenje tih problema, a i mnogih drugih, možete pronaći korištenjem 8x8 LED matrice s MAX7219 driverom.
 
Karakteristike:
• Napon: 5V
• Boja LEDica: Crvena
• Driver: MAX7219
• Dimenzije: 54mm x 32mm
• Jednostavno povezivanje i kontroliranje koristeći samo 5 pinova

Kako radi?

LED matrix(matrica) 8x8 je sustav od 64 međusobno povezane LE diode koje su raspoređene u 8 stupaca i 8 redaka. Idealne su za prikaz slova, brojeva, simbola, teksta i slično. Svaki stupac matrice sadrži katode LE dioda koje se nalaze unutar tog stupca dok svaki redak sadrži anode LE dioda tog retka. Da bismo osvijetlili određenu LE diodu, potrebno je određeni stupac u kojem se nalazi odabrana LE dioda spojiti na logičku nulu (LOW), a red u kojemu se nalazi LE dioda spojiti na logičku jedinicu (HIGH). Ako želimo u istom trenutku osvijetliti više LE dioda, spajamo retke odabranih LE dioda na logičku jedinicu, dok stupce u kojima se nalaze spajamo na logičku nulu. Dakle za kontroliranje svih 64 LE dioda potrebno nam je sveukupno 16 pinova tj digitalnih izlaza mikroupravljača. To je previše potrebnih pinova koji se mogu iskoristiti za spajanje nekih drugih senzora ili aktuatora. Kako bismo riješili taj problem, spojit ćemo LED matricu na MAX7219 driver.


MAX7219 je kompaktan serijski ulazno/izlazni upravljački sklop koji međusobno povezuje mikroupravljače sa 7 segmentnim LED pokaznicima ili LED matricama. Sadrži u sebi BCD dekoder, multiplekser i 8x8 statički RAM koji pohranjuje svaku znamenku za prikaz LED matrice. Kontroliranje drivera je moguće preko SPI komunikacije. Jedna prednost ovog drivera je to što MAX7219 može aktivirati svaki stupac i redak na vrlo kratko vrijeme. To omogućava brzo prebacivanje kroz stupove i redove koje ljudsko oko primjećuje kao kontinuirano svjetlo i time dobivamo dojam da je više LE dioda osvijetljeno u istom trenutku. pomoću MAX7219 drivera možemo kontrolirati LED matricu sa samo 5 priključnica što znatno pojednostavljuje korištenje a i spajanje same LED matrice na mikroupravljač. Uz to, sve se nalazi na jednoj pločici čime se olakšava korištenje samog modula. Još jedna dodatna prednost ovog modula je mogućnost spajanja više modula u seriju čime s istim brojem priključnica na mikroupravljač možemo upravljati s više LED matrica odjednom.

Kako povezati modul s Croduinom?

Povezivanje modula s Croduinom je vrlo jednostavno. Za kontrolu i upravljanje modul sadrži 5 priključnica, a to su:
VCC (5V) – služi za napajanje pločice,
GND (Ground) – služi za napajanje pločice,
DIN (Serial-Data Input) – ulazni kanal podataka,
DOUT (Serial-Data Output) – izlazni kanal podataka,
CS (Chip-Select Input) – pin koji omogućava aktiviranje čipa i
CLK (Serial-Clock Input) - serijski ulaz.
 

VCC je potrebno spojiti na +5V pin Croduino pločice, GND na GND pin. DIN modula je potrebno spojiti na D12 pin, CLK pin modula na D10 te CS na D11 pin. Ako želite spojiti više 8x8 LED Matrix modula s MAX7219 driverom, potrebno je VCC, GND, CLK i CS priključnice drugog modula spojiti s istoimenim priključnicama prvog modula i uz to DIN pin drugog modula spojiti s DOUT prvog. Kod spajanja nekoliko LED Matrix modula obratite pažnju na struju koju pružate na VCC ulaze svih modula jer postoji mogućnost da Croduino neće moći pružiti dovoljno struje za napajanje svih LED matrica (obično ako se spaja 5 ili više modula). U tom slučaju potrebno je spojiti LED Matrix module i Croduino na zajednički izvor napajanja od 5V koji pruža više od 2A struje.

Arduino library i kod

Postoji mnogo raznih biblioteka koje olakšavaju programiranje LED matrix modula s Max7219 driverom. Za ovaj primjer odabrana je "LedControl.h" biblioteka. Programski kod ispod prikazuje kako isprogramirati Croduino pločicu da prikazuje animaciju srca.

#include "LedControl.h"
LedControl lc=LedControl(12,10,11,1); // (DIN pin, CLK pin, CS pin, broj LED matrixa)
unsigned long delayTime=800; // pauza između prikaza sličica
// polje koje prikazuje jednu sličicu na LED matrix
byte srce1[] =
{
B01100110, //vrijednosti prvog retka LED matrice; 1 - upaljena, 0 - ugašena LEDica
B11111111, //vrijednosti drugog retka LED matrice
B11111111, //vrijednosti trećeg retka LED matrice
B11111111, //vrijednosti četvrtog retka LED matrice
B01111110, //vrijednosti petog retka LED matrice
B00111100, //vrijednosti šestog retka LED matrice
B00011000, //vrijednosti sedmog retka LED matrice
B00000000 //vrijednosti osmog retka LED matrice
};
// polje koje prikazuje drugu sličicu na LED matrix
byte srce2[] =
{
B01100110,
B10011001,
B10000001,
B10000001,
B01000010,
B00100100,
B00011000,
B00000000
};
void setup()
{
lc.shutdown(0,false); // uključi LED matrix
lc.setIntensity(0,1); // postavi jačinu osvijetljenja (0-15)
lc.clearDisplay(0); // očisti prikaz LED matrixa
}
void prikazi_srce1()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,srce1[i]); //prikaz elemenata polja red po red
}
}
void prikazi_srce2()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,srce2[i]);
}
}
void loop()
{
prikazi_srce1(); //prikaži prvu sličicu
delay(delayTime); //čekaj delayTime milisekundi
prikazi_srce2(); //prikaži drugu sličicu
delay(delayTime); //čekaj delayTime milisekundi
}
Leave a Reply