En aquest tutorial dissenyarem una pantalla de desplaçament de matriu LED de 8x8 amb Arduino Uno, que mostrarà alfabets de desplaçament.
La matriu LED 8x8 conté 64 LED (díodes emissors de llum) que es disposen en forma de matriu, per tant el nom és matriu LED. Farem aquesta Matrix soldant aquests 64 LEDs al perfboard o al DOT PCB. Els LED poden ser de qualsevol color, trieu els que estigueu disponibles amb vosaltres. Després escriurem un programa per Arduino per controlar aquestes matrius de 64 LED. Segons el programa, l’ONU alimenta els LED adequats per mostrar els personatges de manera desplaçable.
Components necessaris:
- Arduino Uno
- 64 LED
- Perfboard amb altres eines de soldar
- Resistència 1KΩ (8 peces)
- Font d'alimentació (5v)
Circuit i explicació de treball:
Hi ha 64 LED disposats en forma de matriu. Per tant, tenim 8 columnes i 8 files. Sobre aquestes files i columnes, es combinen tots els terminals positius d’una fila. Per a cada fila, hi ha un terminal positiu comú per als 8 LED d’aquesta fila. Es mostra a la figura següent,

Per tant, per a 8 files tenim 8 terminals positius comuns. Penseu en la primera fila, tal com es veu a la figura, 8 LEDs de D57 a D64 tenen un terminal positiu comú i es denoten per 'POSITIU0'. Ara bé, si volem encendre un o tots els LEDs a la primera FILA de la matriu, hauríem d’alimentar el PIN0 de la matriu LED. De la mateixa manera, si volem encendre qualsevol LED (o tot) en qualsevol fila, hem d’alimentar el corresponent pin terminal positiu comú d’aquesta fila.
Això encara no s’ha acabat i només deixar les MATRIX ROWS amb un subministrament positiu no donarà res. Hem de posar a terra els negatius dels LED per encendre'ls. Així doncs, a la matriu de LED de 8x8, tots els terminals negatius dels LED de qualsevol columna s’uneixen per formar vuit terminals negatius comuns, com tots els terminals negatius de la primera columna estan connectats junts al PIN-A1 (NEGATIU7). Això es mostra a la figura següent:

Cal parar atenció a aquests pins mentre es solden els LED de Perfboard.
Ara bé, si necessitem posar a terra qualsevol LED de la primera columna, posarem a terra el PIN-A1 (NEGATIU 7) de la MATRIX i connectarà a terra tots els LED de la primera columna. El mateix procés passa per a les altres set columnes negatives comunes.
Des d’ara ja sabeu com funciona el positiu comú i el negatiu comú. Unim-los per veure com funcionen junts i el circuit final per a la pantalla LED de matriu de 8x8 de desplaçament serà així:

Conducció de matriu LED de 8x8 mitjançant multiplexació:
Ara diguem que volem engegar el LED57 i que hem d’encendre el PIN0 de l’ONU i posar a terra el PIN-8 de l’ONU. Ara per encendre tant el LED57 com el LED50, hem d’engegar el PIN0, el PIN1 i posar a terra el PIN8 i el PIN9. Però fer-ho no només activarà D57, D50, sinó també D49, D58. Per evitar que utilitzem una tècnica anomenada multiplexació. Ja hem comentat aquesta tècnica multiplex en matriu LED de 8x8; consulteu aquest article per obtenir una explicació detallada. Aquí expliquem breument el Multiplexing.
L’ull humà no pot captar una freqüència superior a 30 Hz. Això és si un LED s'encén i s'apaga contínuament a un ritme de 30 Hz o més. L’ull veu que el LED està continuament encès. Tanmateix, aquest no és el cas i el LED s'encén i s'apaga constantment. Aquesta tècnica s’anomena multiplexació.
Suposem, per exemple, que només volem encendre el LED57 i el LED50 sense encendre el D49 i el D58. El truc és que primer subministrarem energia a la primera fila per encendre el LED57 i esperarem 1 mSEC, i després el desactivarem. A continuació, subministrarem energia a la segona fila per encendre el LED50 i esperarem 1 mSEC i, a continuació, l’APAGAREM. El cicle continua contínuament amb alta freqüència i el LED57 i el LED50 s’encenen i s’apaguen ràpidament i els dos LED semblaran estar continuament encès als nostres ulls. Vol dir que només proporcionem energia a una fila a la vegada, eliminant les possibilitats d’encendre altres LEDs en altres files. Utilitzarem aquesta tècnica per mostrar tots els personatges.
També hi ha una biblioteca anomenada LedControlMS.h per tenir cura de tota aquesta complexitat de multiplexació, on només heu d’introduir el caràcter o el número que voleu imprimir a la matriu LED. Consulteu aquesta matriu LED Arduino amb el projecte MAX7219 per obtenir més detalls.
Explicació de la programació:
Al nostre codi, hem escrit un valor decimal per a cada caràcter i hem programat aquests valors a l’Arduino. El programa ha escrit per canviar aquests valors a la fila següent per cada 0,2 segons, això es veurà com un desplaçament de caràcters cap amunt, és molt senzill.
Per canviar els caràcters que es mostraran, només heu de substituir el valor de la matriu de caràcters ALPHA d' acord amb els valors de caràcters que es donen a continuació.
24,60,102,126,102,102,102,0,0,0, // A 124,102,102,124,102,102,124,0,0,0, // B 60,102,96,96,96,102,60,0, 0,0, // C 120,108,102,102,102,108,120,0, 0,0, // D 126,96,96,120,96,96,126,0, 0,0, // E 126,96,96,120,96,96,96,0, 0,0, // F 60,102,96,110,102,102,60, 0, 0,0, // G 102,102,102,126,102,102,102,0, 0,0, // H 60,24,24,24,24,24,60,0, 0,0, // I 30,12,12,12, 12.108,56,0, 0,0, // J 102.108.120.112.120.108.102,0, 0,0, // K 96,96,96,96,96,96,126,0, 0,0, // L 99,119,127,107,99, 99,99,0, 0,0, // M 102,118,126,126,110,102,102,0, 0,0, // N 60,102,102,102,102,102,60,0, 0,0, // O 124,102,102,124,96,96,96,0, 0,0, // P 60,102,102,102,102,60,14,0, 0,0, // Q 124,102,102,124,120,108,102,0, 0,0, // R 60,102,96,60,6,102,60,0, 0,0, // S 126, 24,24,24,24,24,24,0, 0,0, // T 102,102,102,102,102,102,60,0, 0,0, // U 102,102,102,102,102,60,24,0, 0,0, // V 99.99.99.107.127.119,99,0, 0,0, // W 102,102,60,24,60,102,102,0, 0,0, // X 102,102,102,60,24,24,24,0, 0,0, // Y 126,6,12, 24,48,96,126,0, 0,0, // Z
Igual que si voleu mostrar DAD a la matriu LED, substituïu primer els valors de caràcters de la matriu de caràcters ALPHA posant valors per als caràcters D, A i D de la llista anterior:
char ALPHA = {0,0,0,0,0,0,0,0,0,0,0,0, 120,108,102,102,102,108,120,0,0,0, 24,60,102,126,102,102,102,0,0,0, 120,108,102,102,102,108,120,0,0, 0, 0,0,0,0,0,0,0,0,0,0,0,0};
Els valors totals ara són 5 * 10 = 50 valors, per tant
Substitueix, per (int x = 0; x <142; x ++) // 150-8 (per aturar el desbordament) {…….. Amb, per (int x = 0; x <42; x ++) // 50-8 (per aturar el desbordament) {……..
Per tant, només cal canviar el número.
Amb això ja heu programat i ara podeu desplaçar qualsevol text de la matriu LED 8x8, consulteu el codi complet següent amb un vídeo de demostració.
