Pentru a afisa diferite carcatere alfanumerice, semne de punctuatie sau iconite putem folosi o matrice de leduri. In acest exemplu vom folosi 4 module de 8x8 leduri.
Fiecare modul contine un numar de 64 de leduri adresabile individual prin intermediul circuitului integrat MAX7219. Acest circuit se conecteaza la Aduino folosind doar 3 conexiuni folosind protocolul SPI.
Modulul se alimenteaza cu +5V.
Pretul acestui modul este de 33 lei si se poate achizitiona de aici.
Conexiunile se fac in felul urmator:
Arduino --- MAX7219
VCC - VCC
GND - GND
DIN - D11 (MOSI)
CS - D10
CLOCK - D13 (SCK)
Modulul folosit este cel din poza de mai jos:


Pentru a putea folosi acest modul va trebui sa instalam 2 librarii. Pentru a face acest lucru vom deschide Arduino IDE, vom merge la meniul Schita > Incarcare biblioteca > Gestionare biblioteci... Se va deschide o noua fereastra in care, in partea superioara, vom gasi o casuta de cautare. In acea casuta vom tasta MD_MAX72xx si vom apasa tasta Enter. Dupa cateva momente mai jos vor fi afisate rezultatele. Din acele rezultate vom instala atat libraria MD_MAX72XX cat si libraria MD_PAROLA.
Dupa instalarea acesto librarii vom incepe testarea modulului.
Pentru a face acest lucru vom deschide un nou sketch in Arduino si vom incepe sa scriem codul sursa. Pentru inceput va trebui sa declaram librariile folosite:
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
In urmatoarele 3 randuri de cod de cod vom defini tipul de hardware folosit, numarul maxim de module si pinul digital al Arduino care va fi conectat la pinul CS al modulului:
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4
#define CS_PIN 10
Urmatoarea linie de cod va fi crearea unei instante noi a MD_PAROLA:
MD_Parola matrix = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
In functia void setup() {} vom initializa aceasta instanta creata anterior:
matrix.begin(); //initializare a obiectului creat
matrix.setIntensity(0); //setare a intensitatii intre 0 (minim) si 15 (maxim)
matrix.displayClear(); //stergere a ecranului
In functia void loop() {} vom adauga codul dorit pentru a afisa diferite informatii. Pentru acest lucru vom folosi urmatorul cod:
matrix.setTextAlignment(PA_CENTER); //setam alinierea textului pe centru
matrix.print("Centru"); //declaram sirul de caractere pe care-l dorim afisat
delay(2000); //intarziere pentru a observa rezultatul
matrix.setTextAlignment(PA_LEFT); //setam alinierea textului in stanga
matrix.print("Stg.");
delay(2000);
matrix.setTextAlignment(PA_RIGHT); //setam alinierea textului in dreapta
matrix.print("Drp.");
delay(2000);
matrix.setTextAlignment(PA_CENTER);
matrix.print(1234);
delay(2000);
matrix.setInvert(true); //setam inversarea afisarea displayului
matrix.print("Centru");
delay(2000);
matrix.setTextAlignment(PA_LEFT);
matrix.print("Stg.");
delay(2000);
matrix.setTextAlignment(PA_RIGHT);
matrix.print("Drp.");
delay(2000);
matrix.setTextAlignment(PA_CENTER);
matrix.print(1234);
delay(2000);
matrix.setInvert(false); //setam revenirea la afisare normala a displayului
Sketchul rezultat este cel de mai jos:
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4
#define CS_PIN 10
MD_Parola matrix = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
void setup() {
matrix.begin();
matrix.setIntensity(0);
matrix.displayClear();
}
void loop() {
matrix.setTextAlignment(PA_CENTER);
matrix.print("Centru");
delay(2000);
matrix.setTextAlignment(PA_LEFT);
matrix.print("Stg.");
delay(2000);
matrix.setTextAlignment(PA_RIGHT);
matrix.print("Drp.");
delay(2000);
matrix.setTextAlignment(PA_CENTER);
matrix.print(1234);
delay(2000);
matrix.setInvert(true);
matrix.print("Centru");
delay(2000);
matrix.setTextAlignment(PA_LEFT);
matrix.print("Stg.");
delay(2000);
matrix.setTextAlignment(PA_RIGHT);
matrix.print("Drp.");
delay(2000);
matrix.setTextAlignment(PA_CENTER);
matrix.print(1234);
delay(2000);
matrix.setInvert(false);
}
Un filmulet cu montajul se poate vedea mai jos: