KURZ: Práce s displejem

KAPITOLY

Řídící jednotka NXT je opatřena černobílým displejem, který  slouží jako výstupní zařízení a také jako ovládací prvek. Jako výstupní zařízení slouží v případě, že jej využíváme pro výpis různých hlášení během chodu programu nebo zobrazení obrázků. Výpis hlášení nebo údajů na displeji využijeme například při průběžném zobrazení snímaných hodnot některého ze senzorů. Typickým příkladem může být zobrazení vzdálenosti od překážky, kterou snímá ultrazvukový senzor.

Použití v programovacích prostředích

NXT-G

Blok pro práci s displejem

Rozcestník


Umístění bloku

Výstup na displej řídící jednotky můžeme ovládat díky bloku DisplayDragged Display umístěného v paletě Paleta Complete CompleteEasy Common.

NXTG Displej blok

 

Popis bloku

Blok DisplayDragged Display obsahuje celkem devět možných konektorů, které mohou být využity.

Action Action - nastavením udávámáme druh výstupu > Obrázek (Image), Text(Text), Bod (Point), Křivka (Line), Kruh (Circle), Obnovení displeje (Restore System Screen). Volbu provedeme zadáním hodnoty v rozmezí 0 až 5.

ClearDisplay Clear - pomocí této volby je možné kompletně vymazat displej.

Filename Filename - slouží ke zvolení souboru či obrázku, který se má zobrazit během chodu programu na displeji.

Text Text - připojení značící textový vstup nebo výstup.

x X - značí hodnotu souřadnice X, která vyjadřuje umístění výstupu na displeji v horizontálním směru a její hodnota se zadává v rozmezí od 0 do 99.

y Y - značí hodnotu souřadnice Y, která vyjadřuje umístění výstupu na displeji ve vertikálním směru a její hodnota se zadává v rozmezí od 0 do 63.

EndX End point X - možnost slouží ke zvolení koncového bodu X v horizontálním směru v případě, že výstupem na displej je křivka.

EndY End point Y - možnost slouží ke zvolení koncového bodu Y ve vertikálním směru v případě, že výstupem na displej je křivka.

Number Radius - značí průměr vykreslovaného kruhu v rozmezí od 0 do 120.

 

Parametry bloku 

Práce s parametry programového bloku DisplayDragged Display umožňuje zobrazovat na displej tři základní druhy výstupů. Jsou to obrázek (Image), text (Text) a kresbu (Drawing), která se ještě dělí na vykreslení jednotlivých bodů, přímek nebo kruhů. Tuto volbu provedeme v sekci Action Action. Pokud chceme, aby byl displej před každým dalším zobrazením vymazán, vybereme v sekci Display volbu ClearDisplayClear.

Zobrazení obrázku

Na prvním obrázku můžeme vidět, že je zvolena možnost zobrazení obrázku (Image) a v sekci FilenameFile poté volíme obrázek ze souboru, který je uložený v paměti řídící jednotky. Na pravé straně je obrázek zobrazen v sekci Position, kde můžeme také nastavit jeho umístění na displeji pomocí zadání X a Y souřadnice. 

 NXTG Display Image

Vypsání textu na displej

Druhý obrázek demostruje vypsání textu. Tato volba nabízí obdobné možnosti, ovšem místo sekce Filename File se zde objevuje sekce Text Text, kde uživatel zadává text, který se má zobrazit na displeji. Jeho umístění můžeme ovlivnit stejně jako u obrázku zadáním souřadnic X a Y nebo číslem řádku displeje od 1 do 8.

NXTG Display Text

Vykreslení bodů, křivek a kruhů

Třetí obrázek demonstruje kresbu na displej. V sekci Type je zvolena možnost Point (bod), pro jehož vykreslení stačí zadat souřadnice X a Y. Při zvolení možnosti Line (křivka) je nutné zadat její počáteční a koncové souřadnice. Posledním typem vykreslení na displej je kruh. Pro jeho využití je nutné zadat souřadnice X a Y pro jeho umístění a Radius, což je číslo udávající jeho průměr.

NXTG Display Drawing

RobotC

Možnosti výstupu na displej

V programovacím prostředí RobotC je možné na displeji zobrazovat obrázky z řídící jednotky, text, nebo vykreslovat jednotlivé body, linie a kruhy. Oproti programovacímu prostředí NXT-G je možné vykreslit také čtverec, obdélník nebo elipsu.

Rozcestník


Zobrazení obrázků

Pro výstup obrázků na displej řídící jednotky se využívá příkaz nxtDisplayRICFile(nleft, nBottom, sFileName). Příkaz obsahuje tři parametry, z nichž první dva jsou souřadnice (X a Y), které značí umístění levého dolního rohu obrázku. Levý dolní roh displeje má souřadnice (0, 0) a pravý horní roh (99, 63). Posledním parametrem je název souboru. V našem příkladě se jedná o soubor s koncovkou .ric, což je soubor charakteristický pro robotickou stavebnici NXT.

 
nxtDisplayRICFile (0, 0, "obrazek.ric"); // Zobrazi .ric soubor s nazvem "obrazek.ric" na pozici (x, y).
 

Zobrazení textu

Pro vypsání řetězce textu na displej můžeme využít nadeklarovanou proměnnou datového typu String nebo řetězec použít jako parametr daného příkazu. Vypsání textového řetězce je poté možné pomocí dvou příkazů. 

Prvním je nxtDisplayString(nLineNumber, sFormatString, parm1, parm2, parm3) u nějž první parametr udává číslo řádku displeje, druhý definuje o jaký typ proměnné se jedná (v příkladu na obrázku můžete vidět deklaraci řetězce znaků) a poslední parametr je název proměnné datového typu String (proměnné mohou být až 3).

Obdobného výsledku dosáhneme i při použití příkazu nxtDisplayStringAt(xPos, yPos, sFormatString, parm1, parm2, parm3) s tím rozdílem, že parametr udávající číslo řádku je nahrazen dvěma parametry definujícími souřadnice (x, y). Tento příkaz lze použít i pro vypsání řetězce bez deklarace proměnné (viz. třetí příklad na obrázku).

 
nxtDisplayString(3, "%s", s1); // Zobrazi retezec znaku "s1" na tretim radku displeje.
 
nxtDisplayStringAt(0, 0, "%s", s1); // Zobrazi retezec znaku "s1" na pozici (x, y).
 
nxtDisplayStringAt(0, 0, "text"); // Zobrazi retezec znaku nazvany "text" na pozici(x, y).
 
nxtDisplayBigStringAt(0, 0, "text") // Zobrazi retezec znaků nazvany "text" na pozici(x, y) velkym pismem.
 

 Další možností pro vypsání textu nebo údajů na displej jsou příkazy:

  • nxtDisplayTextLine(nLineNumber, sFormatString, parm1, parm2, parm3) - pro vypsání řetězce znaků na zvolený řádek displeje (obsahuje 3 volitelné parametry určené pro vypsání řetězců na displej),
  • nxtDisplayCenteredTextLine(nLineNumber, sFormatString, parm1, parm2) - pro vypsání řetězce znaků na zvolený řádek displeje zarovnaného na střed (obsahuje 2 volitelné parametry určené pro vypsání řetězců na displej),
  • nxtDisplayCenteredTextLine(nLineNumber, sString) - pro vypsání řetězce znaků na zvolený řádek displeje zarovnaného na střed.
  • nxtDisplayBigTextLine(nLineNumber, sFormatString) - pro vypsání řetězce znaků na zvolený řádek displeje velkým písmem.
  • nxtDisplayCenteredBigTextLine(nLineNumber, sFormatString) - pro vypsání řetězce znaků na zvolený řádek displeje velkým písmem na střed řádku.

Jejich využití je podobné jako u předchozích příkazů. Pracují ovšem pouze s parametrem umístění textu na příslušný řádek. Příklady využití můžete vidět na následujícím obrázku.

 
nxtDisplayTextLine(3, "%s", s1); // Zobrazi retezec znaku "s1"na tretim radku displeje.
 
nxtDisplayCenteredTextLine(3, "%d, %d", a, b); // Zobrazi na stredu tretiho radku hodnoty promennych a, b.
 
nxtDisplayCenteredTextLine(3, "1, 2"); // Zobrazi na stredu tretiho radku cisla 1, 2.
 

Vykreslování na displej

Programovací jazyk RobotC neumožňuje vykreslovat na displej pouze ucelené prvky, ale je možné vykreslit pouze jeho jediný pixel. Tuto možnost bychom ocenili v případě, že bychom pomocí senzorů snímali polohu určitého předmětu a displej využili jako radar. Zobrazení jediného pixelu docílíme příkazem nxtSetPixel(xPos, yPos), jehož jediné dva parametry jsou souřadnice (x, y).

 
nxtSetPixel(42, 46); // Zobrazi jeden cerny pixel na souradnicich (42, 46).
 

Oproti programovacímu prostředí NXT-G nabízí RobotC o něco širší možnosti zobrazení geometrických obrazců. Zatímco v NXT-G je možné zobrazit pouze kruh, v RobotC je možné navíc zobrazení elipsy a čtverce. Pro vykreslování čar a geometrických obrazců slouží tyto příkazy:

  • nxtDrawLine(xPos, yPos, xPosTo, yPosTo) - slouží k vykreslení čar,
  • nxtDrawCircle(Left, Top, Diameter) - slouží k vykreslení kruhů,
  • nxtDrawEllipse(Left, Top, Right, Bottom) - slouží k vykreslení elips,
  • nxtDrawRect(Left, Top, Right, Bottom) - slouží k vykreslení obdélníků.

Práce s nimi je obdobná jako u předchozích příkazů.

 
nxtDrawLine(20, 50, 60, 25); // Zobrazi caru spojujici body na souradnicich (20,50) a (60,25).
 
nxtDrawCircle(20, 50, 25); // Zobrazi kruh; levy okraj na 20, horni okraj na 50, prumer 25.
 
nxtDrawEllipse(20, 50, 60, 25); // Zobrazi elipsu; levy okraj na 20, horni okraj na 50, pravy okraj na 60, dolni okraj na 25.
 
nxtDrawRect(20, 50, 60, 25); // Zobrazi obdelnik; levy okraj na 20, horni okraj na 50, pravy okraj na 60, dolni okraj na 25.
 

Odlišností je také možnost vykreslení obrazců s výplní. Možné je to ale pouze u elipsy a čtverce, využitím těchto dvou příkazů:

  • nxtFillEllipse(Left, Top, Right, Bottom) - slouží k vykreslení elipsy s výplní,
  • nxtFillRect(Left, Top, Right, Bottom) - slouží k vykreslení čtverce s výplní.
 
nxtFillEllipse(20, 50, 60, 25); // Zobrazi elipsu s vyplni; levy okraj na 20, horni okraj na 50, pravy okraj na 60, dolni okraj na 25.
 
nxtFillRect(20, 50, 60, 25); // Zobrazi cteverec s vyplni; levy okraj na 20, horni okraj na 50, pravy okraj na 60, dolni okraj na 25.
 

Mazání z displeje

Doposud jsme se zabývali pouze výstupem na displej. Plochu displeje je, ale také nutné mazat a obnovovat. Prvním příkazem, kterým tohoto docílíme, je eraseDisplay(), který maže celou plochu displeje. Využijeme ho například na začátku programu, kdy předpokládáme výstup na displej nebo v programu kde se v krátkých časových úsecích bude měnit zobrazení na displeji. Tento příkaz tak bude fungovat jako obnovovací sekvence.

Existují ovšem ještě další dva příkazy, které mažou pouze část displeje. Prvním je nxtClearPixel(xPos, yPos), jehož pomocí smažeme pouze určitý pixel na zadaných souřadnicích a druhým je nxtDisplayClearTextLine(nLineNumber), který je určený pro mazání učitého řádku displeje.

 
eraseDisplay(); // Vymaze cely displej ridici jednotky NXT.
 
nxtClearPixel(50, 32); // Vymaze pixel na souradnicich (50, 32).
 
nxtDisplayClearTextLine(3); // Vymaze treti radek displeje. 
 

Vykreslení spojnice dvou bodů

Výstup na displej umožňuje také vykreslovat spojnici dvou bodů určených souřadnicemi v Kartézské soustavě souřadnic. Můžeme tak vykreslovat například křivky grafu. K vykreslení se používá příkaz nxtInvertLine(). První dvě čísla vyjadřují souřadnice prvního bodu (první číslo hodnota X a druhé hodnota Y). Druhá dvě čísla určují souřadnice druhého bodu (první číslo hodnota X a druhé hodnota Y).

 
nxtInvertLine(20, 50, 60, 25); // Propoji body na souradnicich (20, 50) a (60, 25).
 

EV3

blok pro práci s displejem

Rozcestník


Umístění bloku pro práci s displejem

Programový blok Display je umístěn v paletě Action Action.

UMISTENI DISPLAY


Změna režimu

Programový blok Display můžeme využívat ve čtyřech základních režimech. Přepínání mezi nimi se provádí pomocí tlačítka v levé spodní části bloku (červeně zvýrazněno).

  DISPLAY REZIMY


Přidání vstupního portu

Kliknutím do bílého pole v pravém horním rohu programového bloku Display a vybráním možnosti Wired (červeně zvýrazněno) přidáme do programového bloku nový vstupní port Identification 528 FileName File Name, který slouží k odeslání zvoleného souboru k vykreslení na displeji.

DISPLAY WIRED

 Přidání vstupního portu je možné také v režimech pro výpis textu. Jediný rozdíl je ten, že se nám pro příslušný účel zobrazí vstupní port s názvem Identification 0010 Text Text.


Režimy programového bloku

Text - Pixels (vypsání textu na pozici konkrétního pixelu displeje)

Umožňuje vypsat libovolný text na pozici konkrétního pixelu displeje řídící jednotky v rovinné kartézské soustavě souřadnic. Rozměr displeje je u robotické stavebnice EV3 rozdělen na 178x128 pixelů. V tomto řežimu máme k dispozici pět vstupních portů.

DISPLAY TEXT PIXELS

Identification 071 ClearScreen Clear Screen - mazání displeje. Pokud je logická hodnota nastavena na True (pravda), dojde ke smazání displeje. V případě, že je nastavena na hodnotu False (nepravda), ke smazání nedojde.

Identification 020 x a Identification 021 y - souřadnice displeje určující počáteční bod výpisu zvoleného textu. Souřadnice určují levý horní roh zobrazovaného textu. Hodnota Identification 020 x se pohybuje v rozmezí od - 177 do 177 a hodnota Identification 021 y v rozmezí od -127 do 127.

Identification 012 Color Black Color - volba způsobu výpisu na displej. Zvolíme-li možnost True (pravda), bude se text vypisovat bílou barvou na černé pozadí, pokud zvolíme False (nepravda), bude se vypisovat černou barvou na bílém pozadí.

Identification 083 FontSize Font - volba fontu vypisovaného textu. Na výběr máme ze tří možností (Normal, Bold, Large).

 

 

Text - Grid (vypsání textu na konkrétní pozici v mřížce) 

Režim umožňující výpis textu na konkrétní pozici displeje určenou pozicí v mřížce. Displej je rozdělený na 22 sloupců (číslovány 0 - 21 zleva doprava) a 12 řádků (číslovány 0 - 11 zhora dolů). Každý sloupec je široký 8px a každý řádek 10 px.

Výška řádku je uzpůsobena řádce textu psané fontem Normal nebo Bold. Každý znak je vypisován na jednu buňku mřížky.

DISPLAY TEXT GRID

Identification 071 ClearScreen Clear Screen - mazání displeje. Pokud je logická hodnota nastavena na True (pravda), dojde ke smazání displeje. V případě, že je nastavena na hodnotu False (nepravda), ke smazání nedojde.

Identification 026 xColumn Column - označuje počáteční sloupec pro výpis textu do mřížky. Sloupce jsou očíslovány 0 - 21 zleva doprava.

Identification 027 yRow Row - označuje počáteční řádek pro výpis textu do mřížky. Řádky jsou číslovány 0 - 11 zhora dolů.

Identification 012 Color Black Color - volba způsobu výpisu na displej. Zvolíme-li možnost True (pravda), bude se text vypisovat bílou barvou na černé pozadí, pokud zvolíme False (nepravda), bude se vypisovat černou barvou na bílém pozadí.

Identification 083 FontSize Font - volba fontu vypisovaného textu. Na výběr máme ze tří možností (Normal, Bold, Large).

 

 

Shapes - Line (vykreslení čáry na displej)

Režim umožňující vykreslení čáry definované počátečním a koncovým bodem na displej.

DISPLAY SHAPES LINE

 Identification 071 ClearScreen Clear Screen - mazání displeje. Pokud je logická hodnota nastavena na True (pravda), dojde ke smazání displeje. V případě, že je nastavena na hodnotu False (nepravda), ke smazání nedojde.

Identification 022 x1 a Identification 023 y1 - souřadnice počátečního bodu vykreslované čáry v rovinné kartézské soustavě souřadnic.

Identification 024 x2 a Identification 025 y2 - souřadnice koncového bodu vykreslované čáry v rovinné kartézské soustavě souřadnic.

Identification 012 Color Black Color - volba způsobu výpisu na displej. Zvolíme-li možnost True (pravda), bude se text vypisovat bílou barvou na černé pozadí, pokud zvolíme False (nepravda), bude se vypisovat černou barvou na bílém pozadí.

 

 

Shapes - circle (vykreslení kružnice na displej)

Režim umožňující vykreslení kružnice definované poloměrem a pozicí středu na displej.

DISPLAY SHAPES CIRCLE

 Identification 071 ClearScreen Clear Screen - mazání displeje. Pokud je logická hodnota nastavena na True (pravda), dojde ke smazání displeje. V případě, že je nastavena na hodnotu False (nepravda), ke smazání nedojde.

Identification 020 xa Identification 021 y - souřadnice středu kružnice v rovinné kartézské soustavě souřadnic zadávané v pixelech.

Identification 504 Radius Radius - poloměr kružnice udávaný v pixelech.

Identification 070 Fill Fill - výplň vykreslované kružnice. Pokud je hodnota nastavena na True (Pravda), vykresluje se kružnice s výplní, v opačném případě bez výplně.

Identification 012 Color Black Color - volba způsobu výpisu na displej. Zvolíme-li možnost True (pravda), bude se text vypisovat bílou barvou na černé pozadí, pokud zvolíme False (nepravda), bude se vypisovat černou barvou na bílém pozadí.

 

 

Shapes - Rectangle (vykreslení obdélníku nebo čtverce na displej)

Režim umožňující vykreslení čtverce nebo obdélníku definovaného pozicí a rozměry na displej.

DISPLAY SHAPES RECTANGLE

  Identification 071 ClearScreen Clear Screen - mazání displeje. Pokud je logická hodnota nastavena na True (pravda), dojde ke smazání displeje. V případě, že je nastavena na hodnotu False (nepravda), ke smazání nedojde.

Identification 020 x a Identification 021 y - souřadnice levého horního rohu vykreslovaného obdélníku nebo čtverce v pixelech.

Identification 028 Width Width - šířka obdélníku nebo čtverce v pixelech.

Identification 029 Height Height - výška obdélníku nebo čtverce v pixelech.

Identification 070 Fill Fill - výplň vykreslované kružnice. Pokud je hodnota nastavena na True (Pravda), vykresluje se kružnice s výplní, v opačném případě bez výplně.

Identification 012 Color Black Color - volba způsobu výpisu na displej. Zvolíme-li možnost True (pravda), bude se text vypisovat bílou barvou na černé pozadí, pokud zvolíme False (nepravda), bude se vypisovat černou barvou na bílém pozadí.

 

 

Shapes - Point (vykreslení konrétního bodu (pixelu) na displeji)

Režim umožňující vykreslení (vybarvení) konrétního bodu (pixelu) na displeji.

DISPLAY SHAPES POINT

 Identification 071 ClearScreen Clear Screen - mazání displeje. Pokud je logická hodnota nastavena na True (pravda), dojde ke smazání displeje. V případě, že je nastavena na hodnotu False (nepravda), ke smazání nedojde.

Identification 020 x a Identification 021 y - souřadnice konkrétního bodu (pixelu) na displeji.

Identification 012 Color Black Color - volba způsobu výpisu na displej. Zvolíme-li možnost True (pravda), bude se text vypisovat bílou barvou na černé pozadí, pokud zvolíme False (nepravda), bude se vypisovat černou barvou na bílém pozadí.

 

 

Image (vykreslení obrázku na displej)

Režim umožňující vykreslení obrázku z paměti řídící jednotky na displej.

DISPLAY IMAGE

 Identification 071 ClearScreen Clear Screen - mazání displeje. Pokud je logická hodnota nastavena na True (pravda), dojde ke smazání displeje. V případě, že je nastavena na hodnotu False (nepravda), ke smazání nedojde.

Identification 020 x a Identification 021 y - souřadnice levého horního rohu vykreslovaného obrázku.

 

Výběr obrázku z paměti řídící jednotky

Výběr obrázku z galerie umístěné v paměti řídící jednotky se provádí pomocí bílého pole v pravém horním rohu programovacího bloku (červeně zvýrazněno).

DISPLAY IMAGE VYBER

Po kliknutí na bílé pole se zobrazí nové okno, ve kterém buďto provedeme výběr obrázku z galerie umístěné v paměti řídící jednotky (složka LEGO Image Files) nebo zvolíme vlastní připravené obrázek ze složky Project Image.

DISPLAY IMAGE VOLBY

 

 

Reset Screen (smazání plochy displeje)

Režim umožňující kompletní smazání plochy displeje.

DISPLAY RESET SCREEN

 

1 1 1 1 1 1 1 1 1 1 Hodnocení 0.00 (0 hodnocení)

Nemáte oprávnění přidat komentář.
Komentáře mohou přidávat pouze registrovaní uživatelé, kteří neporušují pravidla diskuze.