V minulých jsme si zobrazovali na displeji obrázky, v této lekci si ukážeme že micro:bit má pro nás už nějaké obrázky připraveny a naučíme se je zobrazit.
název: B8 Připravené obrázky
kategorie: B mírně pokročilí
ref.číslo: B8
projekt: 10+10 dní s microbitem pro mírně pokročilé, lekce B8
verze: 01, 2017-04-13
autor: Ivo Obr, Lanškroun
Dnešní lekce bude trochu oddechová. V minulých jsme si zobrazovali na displeji obrázky, které jsme si předem nadefinovali pomocí :
“jméno obrázku” = Image(“NNNNN:NNNNN:NNNNN:NNNNN:NNNNN”)
kde N je číslo v rozsahu od 0 do 9 (jas bodu) a ty pětice písmen jsou v pořadí nultý, prvý až čtvrtý řádek displeje.
Máme obrovské možnosti, kolika způsoby rozsvítit displej. Abychom nemuseli si moc vymýšlet, mikropočítač má pro nás připraveny obrázky už předem a stačí jen napsat jejich jméno. Takže pokud chceme vypsat nějaký předem připravený obrázek, použijeme příkaz, který už známe a to :
“display.show()” a do kulaté závorky dáme jméno připraveného obrázku. Toto jméno se skládá s objektu, který chceme zobrazit, což je “Image” (obrázek) a konkrétní jméno obrázku uvedeme za tečkou. Vlastní název obrázku píšeme velkými písmeny.
Takže pro srdíčko je připraven obrázek “Image.HEART”. Celý příkaz pro vypsání je pak :
display.show(Image.HEART)
Seznam všech předem připravených obrázků :
Image.HEART
Image.HEART_SMALL
Image.HAPPY
Image.SMILE
Image.SAD
Image.CONFUSED
Image.ANGRY
Image.ASLEEP
Image.SURPRISED
Image.SILLY
Image.FABULOUS
Image.MEH
Image.YES
Image.NO
Image.CLOCK12, Image.CLOCK11, Image.CLOCK10, Image.CLOCK9, Image.CLOCK8, Image.CLOCK7, Image.CLOCK6, Image.CLOCK5, Image.CLOCK4, Image.CLOCK3, Image.CLOCK2, Image.CLOCK1
Image.ARROW_N, Image.ARROW_NE, Image.ARROW_E, Image.ARROW_SE, Image.ARROW_S, Image.ARROW_SW, Image.ARROW_W, Image.ARROW_NW
Image.TRIANGLE
Image.TRIANGLE_LEFT
Image.CHESSBOARD
Image.DIAMOND
Image.DIAMOND_SMALL
Image.SQUARE
Image.SQUARE_SMALL
Image.RABBIT
Image.COW
Image.MUSIC_CROTCHET
Image.MUSIC_QUAVER
Image.MUSIC_QUAVERS
Image.PITCHFORK
Image.XMAS
Image.PACMAN
Image.TARGET
Image.TSHIRT
Image.ROLLERSKATE
Image.DUCK
Image.HOUSE
Image.TORTOISE
Image.BUTTERFLY
Image.STICKFIGURE
Image.GHOST
Image.SWORD
Image.GIRAFFE
Image.SKULL
Image.UMBRELLA
Image.SNAKE
Můžete si nějaké obrázky vypsat, aby jste viděli, jak vypadají. Pokud bychom si je chtěli prohlédnout všechny, bylo by to jistě pracné a zdlouhavé. Proto využijeme toho, že MicroPython umožňuje vytvářet seznamy. Seznam se pozná podle toho, že byly použity hranaté závorky na pravé straně deklarace. Deklarace seznamu vypadá následovně :
“jméno seznamu” = [člen1, člen2, …..členN] (- kde N je počet členů seznamu)
Jméno seznamu opět volíme tak, abychom si nějak připomněli, co vlastně seznam obsahuje. Každý člen může být řetězec znaků, například “Ahoj svete!” (je uzavřen do uvozovek). Dále to může být číslo, jak celé nebo reálné například 1.234 a také náš předem připravený obrázek.
Pokud ale chceme na displeji zobrazit obrázky (Images), musí náš seznam obsahovat jen znaky (obrázky znaků), to je například :
“K” – jeden znak písmene K
str(2) – hodnota dvě převedena funkcí str() na znak “2”
svetlo2 – náš obrázek, který jsme si nadefinovali
Image.NO – předem definovaný obrázek v mikropočítači
Chceme-li se podívat pohodlněji na předem definované obrázky, nebudeme to programovat tak, že bychom je vykreslovali co jeden obrázek – to jeden příkaz display.show(), ale uděláme si seznam obrázků a ten vykreslíme jedním příkazem. Příkaz display.show() má možnost zadat v kulaté závorce více parametrů, viz následující :
display.show(“jméno”, delay=400, wait=True, loop=False, clear=False)
Zatím jsme uváděli u tohoto příkazu jen první parametr, což bylo jméno obrázku. Nyní si povíme ještě něco o dalších parametrech. Není třeba je uvádět, jsou standardně nastaveny jak ukazuje výše uvedený vzor. Možné hodnoty parametrů jsou :
delay=čas v milisekundách po který je obrázek ukazován na displeji
wait=True – program čeká na dokončení časového limitu zobrazení
False – program pokračuje dalším příkazem a nečeká na konec čas. limitu
loop=False – příkaz neopakuje zobrazování
True – příkaz opakuje zobrazování stále dokola, dokud nepříjde jiný příkaz dislay.xxxx()
clear=False – po ukončení časového limitu zobrazování se displej nemaže
True – po ukončení časového limitu zobrazování se displej smaže
Celý postup si teď ukážeme na příkladu. Nadeklarujeme si seznam tří předem nastavených obrázků HAPPY, YES a NO se jménem “moje”.
moje = [Image.HAPPY, Image.YES, Image.NO]
Zobrazíme postupně tři obrázky tak, že je necháme vždy na displeji po dobu dvou vteřin a nastavíme parametr “loop”, aby příkaz opakoval jejich zobrazení stále dokola :
display.show(moje, delay=2000, loop=True)
Celý program (vidíte jak je jednoduchý) vypadá následovně :
Jistě jste v seznamu předem definovaných obrázků zahlédli dvanáct obrázků hodin “CLOCK” a několik obrázků šipek “ARROW”. U šipek dodatečná písmena znamenají směr šipek (S – jih, E- východ, N – sever a W – západ). U hodin a šipek už máte předem sestavený seznam obrázků v mikropočítači a to :
ALL_CLOCK seznam všech hodin
ALL_ARROW seznam všech šipek
Na následujícím obrázku je ukázka velmi jednoduchého programu, který vypisuje všechny předem připravené obrázky šipek v mikropočítači.
Úkoly pro tuto oddychovou lekci :
- vyzkoušejte si parametry příkazu display.show() a vyzkoušejte si, jaký vliv mají hodnoty nastavení parametrů na zobrazení obrázků
- prohlédněte si předem připravené obrázky pomocí seznamů