Arduino: LED matica s max7219 ovládačom. Ako pripojiť ďalšie písma k vstupným stránkam v LPgeneratore

  • 13.04.2019

Konečne dorazili z maticových modulov Strednej ríše. Každý modul pozostáva z mikroobvodu MAX7219 (), LED matrice, v páske je jeden kondenzátor a jeden odpor.


MAX7219 je riadený rozhraním SPI.


Mikroobvody v klastri sú zapojené do série. Na internete som sa dočítal, že maximálne možné sériové pripojenie umožňuje iba 8 kusov MAX7219. Neverte tomu. Pripojil som 16 modulov a všetko funguje skvele.

Moduly prezentované na Ali prichádzajú v niekoľkých verziách. Najpopulárnejšie sú 2 typy: s mikroobvodom v DIP a v balíkoch SOIC. DIP čipový modul väčšia veľkosť a nie je to tak pohodlné pri pripájaní do klastra. Budete sa musieť pripojiť pomocou zväzku drôtov.


Moduly s mikroobvodom v puzdre SOIC majú veľkosť LED matrice a sú spojené spájkovaním alebo prepojkami. Ukazuje sa to pekne a úhľadne.


Najznámejšie knižnice pre prácu s maticami a klastrami sú Panel MAX72xx od Marka Ricea a Parola od MajicDesigns: prvá knižnica sa používa jednoduchšie, druhá je zložitejšia s viacerými funkciami. Napíšem podrobnejšie.

Panel MAX72xx

Pri používaní panela MAX72xx je potrebná inštalácia knižnice Adafruit gfx.

Ak chcete text rusifikovať, musíte si ho stiahnuť TENTO SÚBOR a nahradiť štandardný súbor glcdfont.c v adresári Arduino / Libraries / Adafruit-GFX-Library-master. Tento súbor tiež popisuje, okrem toho písmená, ktoré chcete a čísla, kopa všemožných symbolov. Nie všetky môžu byť užitočné. Obrázok nižšie vysvetľuje, ako sa tvoria symboly.

V prípade potreby si môžete vytvoriť svoje vlastné symboly a nahradiť ich akýmikoľvek nepoužitými symbolmi v súbore. Takmer všetky bitmapové fonty používané v rôznych knižniciach sú vytvorené týmto spôsobom.

Takže sú nainštalované knižnice MAX72xx Panel a Adafruit GFX, súbor glcdfont.c je nahradený. Spustiť Arduino IDE, otvorené SÚBOR... Náčrt obsahuje funkciu utf8rus. Poskytuje konverziu tabuľky znakov pre ruský jazyk. Je potrebný iba pre normálny výstup z programu, teda v programe požadovaný text napísaný v ruštine. Ak je text zadaný cez COM port, oprava kódov znakov nastane vo funkcii Serial_Read. Vývojári použili rôzne kódovania v IDE a v konzole.

Na začiatku súboru sú riadky potrebné na fungovanie knižnice.

int pocetHorizontalnychZobrazeni = 1;

int početVertikálnychDisplejov = 16;

Mám moduly s mikroobvodom v balení SOIC. Majú malú zvláštnosť. Matica modulov je inštalovaná otočená o 90 stupňov. Ide o poplatok za pohodlie pripojenia. Ak spustíte náčrty, ktoré sa dodávajú s knižnicami, zobrazia sa v nich text zdola nahor v každom module. Text sa zobrazí cik-cak. Na liečbu tohto neduhu treba knižnici „povedať“, že existuje 16 vertikálnych displejov (fyzicky sú umiestnené horizontálne). A potom v nastavení void zadajte linku do knižnice

matrix.setRotation (matrix.getRotation () + 1);

Programovo prevráti každú maticu. A všetko sa zobrazí v poriadku.

Moduly s DIP balíkom mikroobvodov to nemajú. Všetko je tam krásne, až na kopu drôtov.

Knižnica panelov MAX72xx je pomerne skromná. Vizuálne efektyžiadny výstup. Klaster je vnímaný ako jeden celok. S MD Parola je to oveľa lepšie.

Parola od MajicDesigns.

Majitelia modulov s mikroobvodom v balení SOIC budú čeliť aj problému orientácie modulov v klastri. Len to vyzerá trochu inak ako v MAX72xx. Tu sa bude zdať, že moduly sú mimo prevádzky.


Náčrt HelloWorld zo vzoriek dodaných s knižnicou.

Tento neduh sa mi v náčrte programovo nepodarilo vyliečiť. Vyliečil som ho inak. V súbore Adruino / libraries / MD_MAX72xx_lib.h na konci treba nájsť riadky ako na obrázku.


A opravte zvýraznený riadok 1 až 0. Uložte súbor. Arduino IDE nie je potrebné reštartovať. Doplň, pozri.


Teraz môžete použiť 24 animačných efektov. Animáciu spustíte príkazom P.displayText ("Text na zobrazenie", "zarovnanie textu", rýchlosť, oneskorenie zobrazenia, zoslabenie, zoslabenie). Ako vidíte, existuje veľa nastavení.

A najviac potešujúce je rozdelenie klastra na virtuálne zóny. Práca so zónami nie je veľmi náročná. Náčrt nezverejňujem, je vo vzorkách, ktoré sú súčasťou knižnice. Teraz môžete bez problémov takmer bez problémov zobraziť hodiny na začiatku klastra a bežiaci riadok s novinkami na zvyšných moduloch.

Ako asi tušíte, problém je s písmenami azbuky. Je to tiež riešiteľné. Blízko predchádzajúci súbor súbor MD_MAX72xx_font.cpp sa nachádza v rovnakom adresári. Toto je súbor písma. Symboly v ňom sú tvorené podobne ako súbor fontov knižnice GFX. Je v tom malý rozdiel. Tu môže byť veľkosť symbolu menšia ako 5 bodov. V knižnici Adafruit GFX Výkričník, má napríklad tiež šírku 5 bodov ako každý iný znak, používa sa len jeden rad bodiek. Ostatné nesvietia, ale používajú sa pod symbolom. V Parole rovnaký výkričník tiež zaberá jeden rad bodiek, len v blízkosti nie sú prázdne bodky, ale susedné symboly môžu stáť. Bude jasnejšie porozumieť obrázku.


Do súboru podobne ako do súboru z prvej recenzovanej knižnice nie je čas pridávať znaky azbuky. Ak to niekto urobí a pošle mi súbor, pridám ho do tohto článku a ja aj hostia mojej stránky vám budeme vďační.

Spodná čiara. Knižnica panelov MAX72xx od Marka Ricea sa ľahko používa a rozumie, ale má nízku funkčnosť.

Knižnica Parola od MajicDesigns je komplexnejšia a má dostatok možností pre takmer akúkoľvek aplikáciu.

13. januára 2017 o 18:15 hod

Rusifikácia knižnice openGLCD pre Arduino

  • Elektronika pre začiatočníkov

Písanie textu v ruskom jazyku na grafických displejoch pomocou ovládača ks0108 alebo jeho analógov stále predstavuje značné ťažkosti. Knižnica openGLCD, ktorú odporúčajú oficiálne stránky Arduino, v pôvodnej konfigurácii druhej tento moment verzia neobsahuje žiadne cyrilické fonty, okrem fontu cp437font8x8. V praxi je to málo použiteľné, pretože v ruskojazyčnej časti podporuje kódovanie Win-1251. Pre zobrazenie znakov v takomto fonte je teda potrebné ich buď vložiť do textu v osmičkovej resp hexadecimálne kódy(a zároveň pretrvávajú nejasnosti malé písmeno"Ja", ako v komentári upozorňuje samotný tvorca písma), alebo stále píšte samostatná funkcia transkódovanie, ako to urobil arduinec pre knižnicu Adafruit-GFX.

Okrem iného je cp437font8x8 príliš veľký pre obrazovky s rozlíšením 128 x 64 pixelov. Optimálna veľkosť písmo pre pomocné štítky na takomto displeji zostáva System5x7. Tu sa zameriame na rusifikáciu, tj. systémové písmo, hoci čitateľ môže na základe tejto vzorky nezávisle rusifikovať akékoľvek iné písmo (najmä ak má väčšiu obrazovku).

Aký je problém?

Po prvé, poďme ku koreňu problému. Arduino IDE je normálne textový editor Windows, ktorý funguje v univerzálnom UTF-8 ako ktorýkoľvek iný v moderné verzie Windows (napríklad Poznámkový blok). UTF-8 je ekonomická verzia viacbajtového kódovania UNICODE. V UTF-8 sú anglické znaky, čísla, čiarky-zátvorky a všetky druhy ikon reprezentované jedným bajtom, ktorý zodpovedá štandardnému kódovaniu ASCII. Preto ich reprezentácia v kóde náčrtu nepredstavuje žiadne ťažkosti: po kompilácii sa reťazec znakov v anglickom jazyku prenesie do načítaného hex-súboru nezmenený a ukáže sa, že je zrozumiteľný pre 8-bitový ovládač, ako sa hovorí. , „bez prekladu“.

V procese tejto konverzie je každý znak, ako v každom programe v akomkoľvek programovacom jazyku, reprezentovaný priamo vo forme svojho kódu, tj. sériové číslo v tabuľke písiem, z ktorej program extrahuje grafický štýl príslušného znaku. V súbore písma Systém 5x7.h openGLCD knižnice počet znakov je reprezentovaný premennou font_Char_Count typu uint8_t, to znamená, že nemôže presiahnuť veľkosť jedného bajtu. Znaky cyriliky, ktoré v UTF-8 zaberajú dva bajty, preto nemožno preniesť do ovládača bežným spôsobom.

Predchádzajúce pokusy o riešenie

Všimnite si, že to tak nebolo vždy. Verzie Arduina 1.0.x (a podľa povestí aj 1.6.0) skrátili dvojbajtový kód na jeden bajt, čím sa zbavili vysokého bajtu (čo pre azbuku, ako vyplýva z tabuľky UTF-8 v odkaz vyššie, je buď 0xD0 alebo 0xD1). Na vylepšenie fontu v týchto verziách prostredia je preto vhodná stará knižnica GLCD v3, v ktorej bolo pole fontov jednoducho doplnené znakmi azbuky tak, aby sa ich pozície zhodovali s nízkym bajtom kódovania UTF-8 (bajty od 0x80 na 0xBF). Tento upgrade je bližšie popísaný v autorovom článku „Práca s textom na grafickom displeji“. Opakujem - potrebuje jednu z verzií Arduino IDE 1.0.x v spojení s knižnicou GLCD v3 a nie ich modernejšie verzie.

V novších verziách Arduino IDE sa veci skomplikovali. Knižnica rezolútne odmieta porozumieť dvojbajtovým číslam znakov a namiesto toho zobrazuje prázdne miesto, takže tu nebude stačiť jednoduchá úprava písma. Musíme ho doplniť o funkciu prevodu dvojbajtových znakov na jednobajtové.

Riešenie

Autor nešiel do hĺbky knižničných funkcií, ale napísal doplnok pre openGLCD v podobe funkcie outstr () ktorý iteruje cez všetky prvky vstupného reťazca a prechádza ich cez operátor select Prepínač... Zachytáva znaky cyriliky z reťazca a nahrádza ich jednobajtovými kódmi zodpovedajúcimi modernizovanému súboru písma Systém 5x7R.h.

Napríklad pre veľké ruské písmeno „F“ by náhradný reťazec bol:

Prípad "F": GLCD.PutChar (0xA4); prestávka;
Tu je 0xA4 dolný bajt písmena "F" kódovania v UTF-8 (pozri odkaz vyššie). V súlade s týmto kódovaním zostavené nový súbor písmo Systém 5x7R.h... V zásade s týmto prístupom môžete použiť akékoľvek kódovanie ruských znakov a akýchkoľvek iných glyfov, ktoré chcete vložiť do písma v písme. Keby len oni celková suma nepresiahlo 128 kusov: od začiatku tabuľky po znak 0x7F (127 je posledný znak štandardnej ASCII tabuľky), je vhodné ponechať písmo nedotknuté.

Pravdaže, pár slobôd s ASCII tabuľka dovolil som si. Ide o to, že v pôvodné písmo Systém 5x7.h ikona stupňa vykreslená v posledný riadok tabuľky, zaberajúce znak 0x80, ktorý už označujeme v azbuke. Aby nedošlo k porušeniu poradia konštrukcie cyrilickej tabuľky v súlade s UTF-8, tento riadok bol zo súboru vypustený. A namiesto toho je pripojená ikona stupňa ASCII znak"~" (číslo 0x7E), ktoré sa aj tak v písme nepoužilo tak, ako bolo zamýšľané. Takáto náhrada vám však umožňuje zadať ikonu stupňa do textu náčrtu priamo z klávesnice vo forme symbolu „~“.

Ďalšia sloboda je spojená s tým, že autor si nepotrpí na preškrtnutú nulu – archaické časy ACPU a monochromatické textové displeje. Preto bola nula v modernizovanom písme nahradená glyfom písmena „O“. Pre tých z vás, ktorí sú puristickí, môžete jednoducho vymazať v súbore písma Systém 5x7R.h túto vložku (starý prečiarknutý glyf s nulou tam zostal zakomentovaný, jeho kód je 0x30).

V zmodernizovanej knižnici openGLCD, ktorý si môžete stiahnuť z odkazu na konci článku, došlo k ďalšej oprave - zmenené poradie pripájania pinov pre displeje s ovládačom ks0108. Prečo si autor knižnice vybral toto poradie (pozri tabuľku na odkaze na oficiálnej stránke Arduina) nie je známe. V modernizovanej verzii je displej pripojený (napríklad bol vybraný populárny MT-12864J) podľa nasledujúcej schémy:

Schéma zapojenia MT-12864J


Variabilný rezistor R1 je tu zapojený podľa odporúčania výrobcu a rezistor R2 slúži na obmedzenie prúdu podsvietenia, ak je pripojený nie na napätie 5 V, ale priamo na vstupný zdroj (Vin pin Arduina) s vyššie napätie.

Príklad zobrazenia ruskej abecedy MT-12864J zmiešanej s latinkou, ako aj čísel a ikony stupňa, je zobrazený na fotografii:


Načrtnite text pre tento príklad:

Text náčrtu s výstupom ruskej abecedy

#include // zahrnúť knižnicu #include // súbor s funkciou výstupu ruských písmen #include // súbor s kódmi ruských písmen void setup () (GLCD.Init (); // inicializácia GLCD.ClearScreen ();) void loop () (GLCD.SelectFont (System5x7R); // vyberte písmo GLCD.CursorTo (0, 0); // nastavte kurzor na východisková pozícia// zobrazenie zmiešaných anglicko-ruských reťazcov: outstr ("ABC AUGDEZIKLMNOP \ n"); outstr ("PRQ РСТУФХЦЧШЩЫЬЭЮЯ \ n"); outstr ("nts abvgdezhziyklmnop \ n"); outstr ("xyz rstufkhtschshshch'yueyuya \ n"); GLCD.println ("1234567890"); GLCD.CursorTo (19.4); // nastavíme kurzor na predposlednú pozíciu 5. riadku GLCD.print ("~ C"); // stupeň С GLCD.println ("@; /., |<>() = -_ () \ "" "); GLCD.CursorTo (4,7); // nastavte kurzor na pozíciu 4 v riadku 8 GLCD.print (" MT-12864J ");)


Pretože súbory s funkciou outstr.h a písmo Systém 5x7R.h sídli v koreňový adresár zmodernizovanej knižnice, potom na ne treba umiestniť samostatné odkazy na začiatok náčrtu pomocou smernice #include... Pre nápisy v anglickom jazyku je stále vhodné použiť štandardné funkcie println / print, ale ak potrebujete vložiť riadok do ruského textu, musíte výslovne uviesť znak "\ n".

Môžete si stiahnuť revidovanú verziu knižnice

Dobrý deň, milí používatelia LPgeneratora!

Poznámka: na pripojenie písma štandardným spôsobom, použite hotový nástroj. Ľahko sa používa a umožňuje vám bez námahy pridávať ďalšie písma:

V tomto príspevku sa dozviete, ako pridať ďalšie písmo na vašu vstupnú stránku pomocou služby Google Písma pridaním skriptov.

2. Nezabudnite zadať abecedu, teda znakovú sadu.

Ak je vstupná stránka ruská, vyberte latinčinu ( latinčina) a azbukou ( azbuka):

3. Vyberte svoje obľúbené písmo (alebo písma) a kliknite na „ +":

4. Prejdite do galérie pridaných fontov. Ak to chcete urobiť, kliknite na čierny pruh v spodnej časti:

5. V okne, ktoré sa otvorí, prvá položka zobrazuje predtým vybraté písma.

Pamätajte: pomocou Vysoké číslo rôzne google fonty Písma môžu spomaliť načítanie vašej vstupnej stránky. Vpravo je zobrazený indikátor vplyvu zvolených štýlov na rýchlosť načítania stránky.

6. Ak je nastavený a vzhľad ak ste spokojní s pridanými fontami, prejdite do sekcie "EMBED" a úplne skopírujte obsah poľa "STANDART":

Nezatvárajte karta google Fonty, stále to potrebujeme.

Otvorte požadovanú vstupnú stránku v editore LPgenerator a kliknite na nástroj "skripty":

  • v okne, ktoré sa otvorí, kliknite "Pridať nový skript";
  • napíšte názov skriptu;
  • vyberte polohu skriptu "Vo vnútri značky HEAD";
  • vložte skopírovaný kód;
  • nezabudnite uložiť zmeny.

7. Vráťte sa na kartu Písma Google.

Skopírujte kód CSS, ktorý sa vygeneruje, aby ste mohli použiť načítané písma.

Každý font používa svoj vlastný CSS.

Napríklad pre písmo Lobster vyzerá kód takto: font-family: "Homár", kurzíva;

8. Vráťte sa do editora LPgenerator a kliknite na prvok (text alebo tlačidlo), na ktorý chcete použiť načítané písmo.

Použitie štýlov na rôzne prvky vstupnej stránky má určité zvláštnosti.

prvky CTA

Ak chcete zmeniť štýl písma na tlačidle, stačí naň kliknúť a pridať CSS pre písmo v rozšírených vlastnostiach vpravo (skopírované v ôsmom kroku).

Textové bloky vstupnej stránky

Ak chcete použiť externé písmo na textový blok, pre ktorý ste už zmenili písmo, nestačí len napísať štýl v jeho pokročilých vlastnostiach. Musíte tiež obnoviť aktuálne formátovanie. Ak to chcete urobiť, vyberte text a kliknite na tlačidlo Odstrániť formátovanie v bloku úprav textu.

Poznámka: Týmto sa obnovia všetky vykonané zmeny veľkosti, štýlu písma, zarovnania atď.

Potom môžete znova zadať veľkosť, zarovnanie a ďalšie atribúty.

Ak textový blok sa prvýkrát vytvorí na vstupnej stránke a nezmenili ste jej písmo, potom stačí kliknúť na text a v pokročilých vlastnostiach prvku pridať CSS pre písmo.

9. Uložte zmeny a obdivujte výsledok.

Upozornenie: v editore LPgenerator zostane písmo rovnaké, ďalšie písma sa zobrazia iba v náhľade a pri návšteve zverejnenej vstupnej stránky.

LED Matrix je grafický indikátor, ktorý možno použiť na zobrazenie jednoduché obrázky, písmená a čísla. Podrobne sme sa zoznámili so zariadením maticových indikátorov na. Potom sa ukázalo, že zoskupiť niekoľko matíc nie je ľahká úloha. Pre každého nový riadok alebo stĺpec matíc, musíte pridať nový posuvný register spolu s vodičmi a odpormi a priateľským spôsobom aj mikroobvod ULN2003.

Našťastie sa inžinieri už dávno vyvinuli špecializované mikroobvody riadiť všetky druhy ukazovateľov. V tomto návode sa pozrieme na maticový modul s MAX7219 IC. Ako sa neskôr ukáže, s takýmto modulom je radosť pracovať.

1. LED maticový modul s mikroobvodom MAX7219

Modul je doska s mikroobvodom, pre to potrebným viazaním a v skutočnosti maticovým indikátorom. Zvyčajne nie je indikátor spájkovaný do dosky, ale vložený do konektora. To sa deje tak, že skupinu modulov je možné najskôr pripevniť na nejaký povrch pomocou skrutiek a potom do nich vložiť matrice.

A takto vyzerá modul s maticou.

Modul má päť kolíkov na každej strane. Na jednej strane dáta vstupujú do modulu, na druhej strane dáta modul opúšťajú a prenášajú sa do ďalšieho. To umožňuje reťazenie matíc.

Vstupný konektor:

  • VCC, GND - napájanie;
  • DIN - zadávanie údajov;
  • CLK - synchronizačný impulz.

Výstupný konektor:

  • VCC, GND - napájanie;
  • DOUT - výstup údajov;
  • CS - výber modulu (výber čipu);
  • CLK - synchronizačný impulz.

Modul je napájaný napätím 5 voltov.

Pripojenie

Matricový modul pripojíme k ovládaču Arduino Uno nasledovne:

8x8 LED Matrix s MAX7219 VCC GND CIN Čs CLK
Arduino Uno + 5V GND 11 9 13

Schematický diagram

Vzhľad rozloženia

2. Zobrazenie pixelov pomocou knižnice Max72xxPanel

Na ovládanie mikroobvodu MAX7219 použijeme knižnicu Maximálny 72xxPanel... Môžete si ho stiahnuť pomocou odkazov na konci lekcie.

Nainštalujte knižnicu a píšte malý program, ktorý zobrazí iba jeden bod so súradnicami x = 3 a y = 4. Bodka bude blikať s periódou 600 milisekúnd.

#include #include #include int pinCS = 9; int pocetHorizontalnychZobrazeni = 1; // počet matíc vodorovne int početVerticalDisplejov = 1; // počet matíc vertikálne Max72xxPanel matrix = Max72xxPanel (pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays); nastavenie void () (matrix.setIntensity (4); // jas od 0 do 15) void loop () (matrix.drawPixel (3, 4, HIGH); // rozsvieti pixel maticou súradníc (3,4). write (); // výstup všetkých pixelov do oneskorenia matice (300); matrix.drawPixel (3, 4, LOW); // vymazanie matice pixelov.write (); oneskorenie (300);)

Ako už bolo spomenuté vyššie, maticové moduly s MAX7219 možno ľahko kombinovať. Práve pre tento účel sme na začiatku programu nastavili počet matíc horizontálne a vertikálne. V v tomto prípade používa sa jedna matica, takže oba tieto parametre sa budú rovnať 1.

Je dôležité si uvedomiť, že po zapnutí a vypnutí pixelov pomocou funkcie drawPixel, musíte zavolať funkciu písať... Bez funkcie zápisu sa pixely na matrici nezobrazia!

Teraz si napíšme program, ktorý na matrici zobrazí smajlíka z minulosti. Poďme zašifrovať úsmev pomocou poľa ôsmich bajtov. Každý bajt poľa bude zodpovedný za riadok matice a každý bit v byte za bod v riadku.

#include #include #include int pinCS = 9; int pocetHorizontalnychZobrazeni = 1; // počet matíc vodorovne int početVerticalDisplejov = 1; // počet matíc vertikálne Max72xxPanel matrix = Max72xxPanel (pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays); const byte data = (0b00111100, 0b01000010, 0b10100101, 0b10000001, 0b10100101, 0b10011001, 0b01000010, 0b001); void setup () (matrix.setIntensity (7); // jas od 0 do 15 matrix.fillScreen (LOW); // vymazanie matice pre (int y = 0; y< 8; y++) { for (int x = 0; x < 8; x++) { // зажигаем x-tý pixel v y-tý riadok matrix.drawPixel (x, y, údaje [y] & (1<

Poznámka. Knižnica Max72xxPanel má funkciu setRotation, ktorá nastavuje orientáciu obrázka na matrici. Napríklad, ak chceme otočiť smajlíka o 90 stupňov, budeme musieť zavolať setRotation s príslušnými argumentmi hneď po zavolaní funkcie setIntensity:

matrix.setRotation (0, 1);

prvým parametrom je index matice, v našom prípade je rovný nule; druhým parametrom je počet otočení o 90 stupňov.

3. Výstup textu pomocou knižnice Adafruit-GFX-Library

Rovnakým spôsobom môže byť na matrici zobrazený akýkoľvek iný symbol, napríklad písmeno. Aby sme však mohli zobraziť akékoľvek písmeno anglickej abecedy, budeme musieť v programe definovať až 26 osembajtových polí! Je to veľmi pochmúrne a už to, samozrejme, niekto pred nami urobil.

V obľúbenej knižnici Adafruit-GFX-Library je okrem funkcií na prácu s grafikou a textom aj základ latinských písmen veľkých a malých písmen, ako aj všetky interpunkčné znamienka a ďalšie služobné znaky. Odkaz na knižnicu je na konci návodu.

Pomocou funkcie môžete zobraziť symbol na matici drawChar.

drawChar (x, y, znak, farba, pozadie, veľkosť);

Prvé dva parametre funkcie sú zodpovedné za súradnice ľavého horného rohu znaku. Tretím parametrom je samotný symbol. Farba symbolu v našom prípade bude rovná 1 alebo VYSOKÁ, pretože matica je dvojfarebná. Pozadie je 0 alebo NÍZKE. Urobme posledný parameter „veľkosť“ rovný 1.

Napíšme program, ktorý na matici zobrazí všetky písmená frázy: „AHOJ SVET!“.

#include #include #include int pinCS = 9; int pocetHorizontalnychZobrazeni = 1; int početVertikálnychDisplejov = 1; Max72xxPanel matica = Max72xxPanel (pinCS, početHorizontalDisplays, NumberOfVerticalDisplays); Páska = "AHOJ SVET!"; int čakanie = 20; nastavenie void () (matrix.setIntensity (7); // jas od 0 do 15) void loop () (for (int i = 0; i< tape.length(); i++) { matrix.fillScreen(LOW); matrix.drawChar(0, 0, tape[i], HIGH, LOW, 1); matrix.write(); } delay(wait); }

Poznámka. Knižnica Adafruit_GFX obsahuje množstvo funkcií pre prácu s grafikou. Napríklad drawCircle (3, 3, 2, HIGH) nakreslí kruh so stredom (3,3) a polomerom 2. Posledným parametrom je farba, no v prípade monochromatickej matice je to 1 alebo HIGH. DrawLine (0, 0, 3, 6, HIGH) nakreslí úsečku medzi bodmi (0,0) a (3,6).

3. Program. Plazivá čiara na max7219

Na zobrazenie niekoľkých písmen naraz musíme spojiť niekoľko LED matíc do reťazca. Ako už bolo spomenuté, je to veľmi jednoduché. Schéma pripojenia šiestich modulov bude vyzerať takto.

Schematický diagram

Vzhľad rozloženia

Program

Plazivú čiaru urobíme posunutím súradníc písmen. Na zobrazenie písmena v požadovaných súradniciach použijeme rovnakú funkciu drawChar.

#include #include #include int pinCS = 9; int pocetHorizontalnych Displejov = 6; // teraz mame 6 matic vodorovne int pocetVerticalnych Displejov = 1; // a vertikálne, ako predtým, jedna matica Max72xxPanel = Max72xxPanel (pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays); String tape = "site"; // text, ktorý bude plávať int wait = 20; // čas medzi extrémnymi pohybmi písmen int spacer = 1; // medzera medzi písmenami int šírka = 5 + medzerník; // veľkosť písma void setup () (matrix.setIntensity (7); // jas) void loop () (for (int i = 0; i< width * tape.length() + matrix.width() - 1 - spacer; i++) { matrix.fillScreen(LOW); int letter = i / width; int x = (matrix.width() - 1) - i % width; int y = (matrix.height() - 8) / 2; // center the text vertically while (x + width - spacer >= 0 && písmeno> = 0) (ak (písm< tape.length()) { matrix.drawChar(x, y, tape, HIGH, LOW, 1); } letter--; x -= width; } matrix.write(); delay(wait); } }

Načítame program na Arduino Uno a sledujeme plíživú líniu!

Úlohy

  1. Digitálne hodinky. Zostavte obvod štyroch LED matíc a modulu hodín reálneho času. Napíšte program pre Arduino, ktorý bude zobrazovať hodiny a minúty na displeji z matíc.
  2. Hra had. Zo štyroch LED matíc zostavte displej s rozlíšením 16 × 16 pixelov. Implementujte na Arduino takú známu hru ako „had“ (alebo „python“). Do schémy je potrebné pridať štyri tlačidlá na ovládanie smeru pohybu a tiež bzučiak na signalizáciu udalosti jedenia jabĺk.

Záver

Spojením maticových modulov na max7219 môžete zostaviť dostatočne veľké displeje a použiť ich v projektoch Arduino, kde sa vyžaduje jasný obraz. LED displeje sú na rozdiel od displejov z tekutých kryštálov odolné voči nízke teploty... Napríklad plazivý vlasec z matríc možno umiestniť vonku aj v 30-stupňovom mraze.

Okrem jednofarebných maticových modulov sú na max7219 aj ďalšie podobné zariadenia... Napríklad trojfarebné LED displeje s rozlíšením 32 × 16 a dokonca 64 × 32 bodov. O takýchto moduloch si povieme v ďalších lekciách a článkoch.

užitočné odkazy

1. Knižnica Maximálny 72xxPanel:

2. Knižnica Adafruit-GFX-Library.