Zobrazení hodnot a textu na LED matici 4x64 s MAX7219

Odpovědět
RobertN
Příspěvky: 10
Registrován: 09 lis 2018, 09:10
Reputation: 0

Zobrazení hodnot a textu na LED matici 4x64 s MAX7219

Příspěvek od RobertN » 09 lis 2018, 12:42

Dobrý den, dělám jen malý projekt střelnice a chtěl jsem jej oživit o zobrazení režimu střelnice a pak po startu o zobrazení skóre. K tomu jsem chtěl použít hotový modul 4 LED maticí s 64 diodami řízené MAX7219. Hledal jsem k tomu nějaké návody, ale zamotal jsem se do knihoven. Našel jsem, že k ovládání základnímu je knihovna ledcontrol.h, která umožňuje využít nějakých příkazů, ale obsluhuje jen přímo diody. Druhá knihovna LedControlMS.h už umí zobrazovat jednoduchým způsobem i znaky. Ale je zde problém se zobrazením, neboť jsou otočené o 90° a pak jsem našel knihovnu Parola, která umí již nějaké efekty jako je rolování textu a tak, ale je moc velká. V čem tedy mám problém:
1. tak nějak nemůžu k těm knihovnám sehnat manuál, kde by bylo napsáno, jaké příkazy a jaké parametry umožňují
2. knihovna paroly je hrozně velká a nevejde se mi do arduina mini – dá se nějak zmenšit? V samotném adresáři knihovny jsou i nějaké obrázky a podobně, ale ty se do Arduina při kompilaci asi nepřenáší
3. když používám knihovnu LedControlMS.h jsou jednotlivé displeje o 90° pootočené. Je to zřejmě tím, jak je modul hardwarově vyrobený, ale neumím to otočit. To by mohla udělat ta parola, ale to je zase obrovská knihovna, kterou zaberu celou paměť, což je zbytečné, abych zobrazil číslo od 1 do 999 a jeden nápis.
Můžete mi někdo poradit, jak na tomto modulu tedy zobrazit 3 cifernou hodnotu a libovolný nápis?
V nejhorším případě ty moduly rozříznu, pootočím o 90°a propojím zpět…
Děkuji
Přílohy
matrix_4x64.jpg

K380
Příspěvky: 134
Registrován: 04 srp 2017, 12:43
Reputation: 0

Re: Zobrazení hodnot a textu na LED matici 4x64 s MAX7219

Příspěvek od K380 » 09 lis 2018, 15:46


Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Zobrazení hodnot a textu na LED matici 4x64 s MAX7219

Příspěvek od pavel1tu » 09 lis 2018, 16:26

Nevím jstli to pomůže, ale mezi hotovými projekty na tomto foru s tímto displejem jsou i hodiny - sám jsem s tímto displejem čerpat z tohoto projektu.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Uživatelský avatar
SkullKeep
Příspěvky: 290
Registrován: 23 srp 2017, 18:51
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Zobrazení hodnot a textu na LED matici 4x64 s MAX7219

Příspěvek od SkullKeep » 09 lis 2018, 19:23

Nebo čerpat tady https://randomnerdtutorials.com/guide-f ... pong-game/. A u inicializace matice:

Kód: Vybrat vše

LedControl lc=LedControl(12,11,10,1); //12-DIN pin,11-CLK pin,10-CS pin.1-počet matic
:twisted: :?: :arrow: :geek: P. Q. M.

petan
Příspěvky: 358
Registrován: 23 črc 2017, 10:19
Reputation: 0
Kontaktovat uživatele:

Re: Zobrazení hodnot a textu na LED matici 4x64 s MAX7219

Příspěvek od petan » 09 lis 2018, 20:02

Tady jsem dělal hodiny: https://arduino-forum.cz/viewtopic.php?f=38&t=883

Mrkni na to, na začátku programu je pole s jednotlivými znaky. Já tam mám jenom pár znaků a několik fontů čísel 0-9. Nutné je mít knihovnu LedControl. Ta se dá stáhnout (viz odkaz). Vykreslování je jednoduché. Je tam funkce DrawSymbol, které se zadá na jaký displej a jaký symbol se bude vykreslovat. Je tam pořešený i to otáčení fontu...

Vlastní znaky si můžeš vytvořit zde: https://xantorohara.github.io/led-matrix-editor/#

RobertN
Příspěvky: 10
Registrován: 09 lis 2018, 09:10
Reputation: 0

Re: Zobrazení hodnot a textu na LED matici 4x64 s MAX7219

Příspěvek od RobertN » 13 lis 2018, 14:26

Ahoj, děkuji všem. Zjistil jsem toto. Rozdíl mezi knihovnou LedControl.h a LedControlMS.h je v tom, že:
- knihovna LedControlMS.h má v sobě definovány znaky, které jsou k nalezení v souboru knihovny LedControlMS.h. Daný znak se vypíše funkcí lc.displayChar(cislodispleje,čísloznaku), kde parametrem znaku je číslo řádku v té tabulce
- a umí funkci lc.writeString(cislodispleje, "TESTOVACI TEXT"), která sice na daný jeden display (kostičku) vypíše postupně celý řetězec, ale než jej vypíše, tak se program zastaví.

Dále obě knihovny umí
lc.shutdown(i,false); /* porobudí display ´i´ ze spánku */
lc.setIntensity(i,1); /* nastaví jas displeje ´i´ */
lc.clearDisplay(i); /* vymaže displej´i´*/

lc.setRow(i,r,B10101010); /* rozsívítí na displeji ´i´ diody s jednčkou v řádku ´r´ */
lc.setColumn(i,s,B10101010); /* rozsívítí na displeji ´i´ diody s jednčkou v sloupci ´s´ */
lc.setLed(i,r,s,true); /* rozsívítí na displeji ´i´ diodu v řádku ´r´ a sloupci ´s´ */

Vzor použití je třeba tady https://www.instructables.com/id/Multip ... h-Arduino/ ale dají se takto využít jen ručně postavené displeje, protože ten hotový produkt, který jsem koupil, je má o 90°pootočené a vypadá to takto https://www.youtube.com/watch?v=pKtA1_RlL2g
Toto by měla umět ošetřit knihovna MD_MAX72xx.h ale tím jsem se zatím neprokousal, protože jsem našel jen nápovědy v angličtině a je to na mě moc technické :?

petan
Příspěvky: 358
Registrován: 23 črc 2017, 10:19
Reputation: 0
Kontaktovat uživatele:

Re: Zobrazení hodnot a textu na LED matici 4x64 s MAX7219

Příspěvek od petan » 13 lis 2018, 17:59

takto využít jen ručně postavené displeje, protože ten hotový produkt, který jsem koupil, je má o 90°pootočené
A co takhle otočit text softwarově? Koukni se na můj článek. Tam taky otáčím text, protože byl myslím zrcadlově... Kdo ví, jak je v té knihovně nadefinovaný font.

RobertN
Příspěvky: 10
Registrován: 09 lis 2018, 09:10
Reputation: 0

Re: Zobrazení hodnot a textu na LED matici 4x64 s MAX7219

Příspěvek od RobertN » 19 lis 2018, 10:23

Díky všem, kteří mi poslali nápady kam se kouknout, a díky nimž jsem se proklikal a progooglil až k tomuto zjištění.

Pokud použijete knihovnu
#include <MD_MAX72xx.h>
tak displej funguje jako celek a dá se normálně použít bez otáčení. Systémem pokus omyl jsem zjišťoval v demo programech co to umí.

Co je potřeba upravit v záhlaví programů pro konkrétně ten to typ displeje:

Tuto část:
#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW
#define MAX_DEVICES 11

opravit takto :
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4

a tuto část
// SPI hardware interface
MD_MAX72XX mx = MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
// Arbitrary pins
// MD_MAX72XX mx = MD_MAX72XX(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);

opravait takto (zakomentovat první řádek a odkomentovat ten druhý)
// SPI hardware interface
//MD_MAX72XX mx = MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
// Arbitrary pins
MD_MAX72XX mx = MD_MAX72XX(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);

Pro začátek práce je potřeba toto:
mx.begin(); // spusť mx
mx.control(MD_MAX72XX::INTENSITY, 1); nastav jas displeje – 1 je nejméně

Další příkazy

mx.clear(); // bez ničeho vymaže celý displej
mx.clear(2); // vymaž jen kostičku 2

Důležitá výhoda je, že se ohledně souřadnic používá displej jako celek, takže pravý horní roh je 0,0 a levý dolní roh je 7,31.

mx.setChar(12,'A'); // od sloupce 12 zobraz znak A – musí být v apostrofech
mx.setChar(7,41); // od sloupce 7 zobraz znak 41 - kod DECimaní třeba https://www.eso.org/~ndelmott/ascii.html tabulka
mx.setColumn(14,B10101010); // zobraz sloupec číslo 14 (1 zapnutá LED, 0 vypnutá LED)

mx.setRow(2,B10101010); //zobraz řádek 2 (1 zapnutá LED, 0 vypnutá LED), opakuje se na všech kostičkách
mx.setRow(3,2,B10101010); //zobraz řádek 2 (1 zapnutá LED, 0 vypnutá LED) jen na kostce 3
mx.setPoint(5,20,1); // rozsviť LED na řádku 5 a sloupci 20


Dále umí různé transformace a posuny

mx.transform(MD_MAX72XX::TRC); // pokud bez čísla, platí pro celý displej
mx.transform(1,MD_MAX72XX::TRC); // pokud napíšete číslo, tak platí pouze pro danou „kostičku“ (0-3) displeje

Jsou tyto varianty otočení
TSL - Transform Shift Left one pixel element. = Posune o 1 pixel doleva
TSR - Transform Shift Right one pixel element. = Posune o 1 pixel doprava
TSU - Transform Shift Up one pixel element. = Posune o 1 pixel nahoru
TSD - Transform Shift Down one pixel element. = Posune o 1 pixel dolů
TFLR - Transform Flip Left to Right. = převrátí zrcadlově zleva doprava, ale pozor nějak divně, alespoň u mě špatně prohazuje prostřední dvě kostičky
TFUD - Transform Flip Up to Down. = převrátí z hora dolů
TRC - Transform Rotate Clockwise 90 degrees. = pootočí doprava o 90°, ale pozor každou kostičku zvlášť
TINV - Transform INVert (pixels inverted) = invertuje displej (co svítí zhasne a co nesvítí rozsvítí)

V demo programech se dá využít část progamu pro rolování textu a další věci, ale já zatím potřebuji jen tyto základní věci. Děkuji všem za odkazy a inspiraci.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 15 hostů