Arduino LED matice

Arduino LED matice je stavebnice, která obsahuje řídící obvod MAX7219. Tento logický obvod umožňuje řídit velké matice LED diod, kdy v tomto případě je dodávána matice o velikosti 8x8 červených LED diod. Deska s modulem obsahuje na dvou stranách propojovací piny, díky kterým je možné propojit více modulů do kaskády a pak je řídit jednotlivě pomocí Arduina. LED matice vyžaduje pro svou funkci napájecí napětí o velikosti 5 V a proudový odběr může dosáhnout až několika desítek miliAmpér. Přesná hodnota proudového odběru závisí na počtu rozsvícených LED diod a nastavené hladině jasu, který lze řídit programově z Arduina.

Pro úspěšné propojení LED matice a Arduino desky je nutné zapojit 5 propojovacích pinů. Propojíme VCC s 5 V Arduina, GND se zemí Arduina, DIN s pinem D10, CS s pinem D11 a CLK s pinem D12. Datové piny DIN, CS a CLK můžeme zapojit také na jiné volné piny, ale je nutné tuto změnu provést také v programu.

Pro správnou funkci uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu LedControl, návod jak na to je uveden zde. Ukázkový kód obsahuje na svém začátku připojení potřebné knihovny a dále nastavení čísel propojovacích pinů. Poté vytvoříme proměnnou udávající počet matic, kde je nutné doplnit, že počítání začíná od nuly. Následně provedeme inicializaci LED matice z knihovny a vytvoříme si proměnnou typu pole, která obsahuje pomocí logických jedniček vytvořené písmeno A. V podprogramu setup jako první probudíme matici z režimu spánku, poté nastavíme intenzitu svitu LED diod na střední úroveň a provedeme vypnutí všech LED diod na matici. V nekonečné smyčce loop je ukázán příklad všech možností práce s LED maticí. Jako první tedy vykreslíme pomocí for smyčky znak z proměnné, kdy se postupuje po řádcích. Následně vyčkáme po dobu jedné vteřiny a vypneme všechny LED diody. Druhý příklad obsahuje vykreslení některých LED diod ve čtvrtém řádku, třetí příklad vykreslení vybraných LED diod v šestém sloupci a na konci rozsvítíme krajní LED diodu pomocí příslušné funkce. Na konci programu je ještě uvedena ukázka všech úrovní intenzity svitu LED diod, kdy je postupně ukázán celý rozsah 0 až 15. Poté opět nastavíme střední svit a vypneme všechny rozsvícené LED diody, aby se nekonečná smyčka mohla opakovat.

// LED matice s MAX7219

// připojení potřebné knihovny
#include "LedControl.h"
// nastavení propojovacích pinů
#define DIN 10
#define CS  11
#define CLK 12
// tato proměnná údává počet matic,
// počítání začíná od nuly
#define mojeMat 0
// inicializace LED matice z knihovny
LedControl ledMat=LedControl(DIN, CLK, CS, mojeMat);
// proměnná typu pole, 1 označují rozsvícené LED
byte pismenoA[8]={ B00000000,
                   B00011000,
                   B00100100,
                   B00100100,
                   B00111100,
                   B00100100,
                   B00100100,
                   B00000000};

void setup() {
  // probuzení matice pro zahájení komunikace
  ledMat.shutdown(mojeMat,false);
  // nastavení LED matice na střední svítivost (0-15)
  ledMat.setIntensity(mojeMat,7);
  // vypnutí všech LED diod na matici
  ledMat.clearDisplay(mojeMat);
}

void loop() {
  // vykreslení znaku z proměnné
  for(int i=0; i<8; i++) {
    ledMat.setRow(mojeMat,i,pismenoA[i]);
  }
  delay(1000);
  // vypnutí všech LED na matici
  ledMat.clearDisplay(mojeMat);
  // vykreslení LED diod v daném řádku, zde čtvrtý řádek
  // (řádky jsou číslovány od 0 do 7)
  ledMat.setRow(mojeMat,3,B10101010);
  delay(1000);
  // vykreslení LED diod v daném sloupci, zde šestý sloupec
  // (sloupce jsou číslovány od 0 do 7)
  ledMat.setColumn(mojeMat,5,B10111010);
  delay(1000);
  // vykreslení jedné zvolené LED diody, zde krajní dioda [8,8]
  ledMat.setLed(mojeMat,7,7,true);
  delay(1000);
  // ukázka změny intenzity svícení v celém rozsahu 0 až 15
  for(int i=0; i<16; i++) {
    ledMat.setIntensity(mojeMat,i);
    delay(200);
  }
  // nastavení intenzity na střední svit
  ledMat.setIntensity(mojeMat,7);
  // vypnutí všech LED na matici
  ledMat.clearDisplay(mojeMat);
}

Po nahrání ukázkového kódu do Arduino desky s připojenou LED maticí dostaneme například tento výsledek:

Arduino LED matice je zajímavý modul, který nám umožňuje obohatit Arduino o pole LED diod o velikosti 8x8. Velkou výhodou této matice je možnost řídit jednu a více LED matic propojených za sebou a to pouze pomocí tří datových pinů a dvou napájecích. Můžeme tedy tuto LED matici s obvodem MAX7219 využít v různých zapojeních jako zobrazovací prvek pro písmena či číslice, anebo například signalizovat měřící rozsahy pomocí počtu rozsvícených LED diod v jednotlivých sloupcích. Co se týká stavby matice ze stavebnice, stačí nám dobré pájedlo a trocha pájky. Součástek je malé množství a všechny jsou pěkné popsány přímo na desce plošných spojů, takže je jednoduché je zapájet na správné místo.

 

Seznam použitých komponent:

http://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html

http://dratek.cz/arduino/850-arduino-led-matice.html

Další podobné články