Z Gymnázia Elgartova posíláme návod na jednoduché a přitom praktické využití micro:bita při tvorbě nápisů. Programovali jsme v pythonu (python.microbit.org).
název: B12 Písmena
kategorie: B mírně pokročilí
ref.číslo: B12
projekt: Příspěvky uživatelů
verze: 01, 2017-06-25
autor: Gymnázium Elgartova, Brno
Zadání:
Při zapnutí svítí písmeno A, při stisku tlačítka B se zobrazují postupně další písmena abecedy (B, C, D, …), při stisku tlačítka A se vracíme v abecedě zpět.
Po nahrání programu na více microbitů je možné sestavovat různé nápisy.
Nápověda bez prozrazení řešení:
K sestavení programu potřebujeme umět pracovat se seznamy. Ty zadáváme pomocí hranatých závorek, například
jmena = [“Petr”, “Jan”, “Tomáš”]
Položky v seznamu jsou číslované od nuly a k jejich získání používáme opět hranaté závorky. Například
- Jmena[0] obsahuje text Petr
- Jmena[1] obsahuje text Jan
- Jmena[2] obsahuje text Tomáš
Písmena abecedy (a případně další symboly) můžeme uložit do jednoho seznamu. K pohybu v seznamu použijeme proměnnou, kterou při stisku tlačítek zvyšujeme nebo snižujeme.
Místo seznamu bychom mohli použít i prostý řetězec všech písmen abecedy za sebou. Výhodou seznamu je, že může obsahovat i obrázky.
K zobrazení písmene bez pohybu po displeji používáme display.show, pro testování stisknutí tlačítka button_a.was_pressed(), případně button_b.was_pressed().
Řešení:
Písmena abecedy uložíme do seznamu:
pismena = [“A”, “B”, “C”, “D”, “E”, “F”, “G”, “H”, “I”, “J”, “K”, “L”,
“M”, “N”, “O”, “P”, “Q”, “R”, “S”, “T”, “U”, “V”, “W”, “X”, “Y”, “Z”]
Abychom mohli průběžně měnit zobrazené písmeno, použijeme proměnnou x, ve které budeme mít uloženu aktuální pozici v seznamu. Na počátku chceme zobrazit písmeno A na pozici 0, proto nastavíme
x = 0
a pomocí display.show zobrazíme aktuální písmeno:
display.show(pismena[x])
Po stisku tlačítka B chceme posunout zobrazené písmeno o jedno místo vpřed (x = x + 1), po stisku tlačítka A o jedno místo vzad (x = x – 1) a zobrazit aktuální písmeno. Nezapomeneme ošetřit krajní písmena – pokud stisknu A a mám zobrazeno A (x=0), chci, aby se zobrazilo Z (x=25), při stisku B naopak.
if button_a.was_pressed(): if x == 0: x = 25 else: x = x - 1 display.show(pismena [x])
Část programu, která se má stále opakovat, vkládáme do nekonečného cyklu while True:
Celý program může vypadat takto:
pismena = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] x = 0 display.show(pismena[x]) while True: if button_a.was_pressed(): if x == 0: x = 25 else: x = x - 1 display.show(pismena [x]) if button_b.was_pressed(): if x == 25: x = 0 else: x = x + 1 display.show(pismena [x])