…
osnova:
vnitřní struktura ESP
instalace OctopusLab frameworku
náhled kódu s neproporcionálním textem,
který by se mohl někdy vyskytnout...
,'''`.
/ \
|(@)(@)|
) (
/,'))((`.\
(( (( )) ))
) \ `)(' / (
octopusLAB framework
-------------------------------------------
počet znaků na řádku? = 39
0123465678901234656789012346567890123456789
0 1 2 3
-------------------------------------------
+-------------+
| MicroPython |
+----+--------+
|
+- Vanilla --> micropython-octopus-installer -+
| |
+- Octopus -----+-----------------------------+
|
|
>>> octopus_initial.setup()
|-- boot.py # inicializace po startu
| |-- reset # reset / hard restart
|-- main.py # hlavní soubor programu
|-- /assets # obrázky, zvuky, tabulky
|-- /config # kofigurační soubory (.json)
|-- /lib # obecně dostupná knihovna (lib)
| |-- pubsub
| |-- FTP
| |-- /blesync_uart
| |-- ...
Instalce Octopus Framework spuštěním (RUN) v prostředí Thonny:
(dopoporučujeme nahrát i na ESP jako „deploy.py“ pro případné další použití nebo aktualizace)
# octopusLAB - deploy 2022/09 (for vanila uPy 1.19)
from time import sleep
import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
sleep(5)
print("wifi connect")
# ------------- your wifi -----------
wlan.connect('ssid', 'password')
# -----------------------------------
sleep(5)
print("upip: micropython-octopuslab-installer")
import upip
upip.install('micropython-octopuslab-installer')
sleep(5)
print("deploy")
from lib import octopuslab_installer
octopuslab_installer.deploy()
Math
Někdy chceme použít i složitější matematické výrazy, než je + sčítání | - odčítání | * násobení | / dělení
Pro další matematické funkce a konstanty použijeme knihovnu math.
>>> import math # knihovnu importujeme, až když ji potřebujeme,
# jinak nám zbytečně blokuje operační paměť
>>> math.log10(1000) # funkce logaritmus o základu deset je jednou z metod knihovny math
3.0
>>> math.pi # konstanta Pí (není to metoda!)
3.141593 # a počet desetinných míst je omezený
>>> hodnota = 123
>>> print(hodnota) # > 123 | vypíše obsah proměnné s názvem hodnota (korektně)
>>> print(math.pi) # > 3.141593
Help
Zkuste si napsat help(). V Pythonu uvidíte asi něco jiného než v obecném MicroPythonu.
náhled kódu s neproporcionálním textem
>>> ">>>" toto je takzvaný "prompt", terminálová výzva, abychom tam něco napsali: příkaz nebo "posloupnost příkazů" >>> a = 123 do proměnné se uložila hodnota (číslo 123) >>> a 123 vytiskne / zobrazí hodnotu proměnné nebo print(a) pokud to chcete použít v programu >>> a + 10 133 zobrazí vypočtenou hodnotu (jako kalkulačka) někdy chceme složitější matematické výrazy, než je + sčítání - odčítání * násobení / dělení >>> import math importujeme knihovnu, až když jí potřebujeme, jinak nám zbytečně blokuje operační paměť >>> math.log10(1000) 3.0 >>> math.pi 3.141593 počet desetinných míst je omezený *) pouze v této úvodní části jsme naznačili, co píše systém (tučně) a co píšete vy (normálně) - poznámky pak píšeme šikmo >>> šipky nahoru nebo dolů -> historie příkazů >>> metoda + tečka > TAB doplnění / nápověda zkuste například: >>> import math >>> math. a po tečce stisknout TAB > vypíše vám: __class__ __name__ pow acos acosh asin asinh atan atan2 atanh ceil copysign cos cosh degrees e erf erfc exp expm1 fabs floor fmod frexp gamma isfinite isinf isnan ldexp lgamma log log10 log2 modf pi radians sin sinh sqrt tan tanh trunc Micropython má obrovskou výhodu v tom, že běží jako interpret: když uživatel napíše název proměnné, třídy nebo instance objektu, skoro všechno se o nich můžeme dozvědět. Právě proto máme k dispozici všechny metody, po "tečka TAB". TAB tedy slouží i jako "nápověda" nebo pro efektivní našeptávač pro dokončování příkazů, což s jistou praxí může znatelně urychlit práci z "komand-lajny" (podobně jako v Linuxu) Více řádkové "dočasné definice vlastních funkcí": def název(parametry): nezapomenout na dvojtečku! >>> def suma(x, y): ... return x + y Pozor na odsazení druhého řádku a důsledné zarovnávání logických bloků. Ukončení definice lze nejrychleji "uENTRováním" (lépe po BACKSPACE). ... ... >>> a zkusíme, jak nám nová funkce funguje: >>> suma (1, 2) 3 Lambda - pro jednoduché funkce: >>> sumaL = lambda a, b: a + b >>> sumaL(1, 2) 3 Jsou situace, kde je potřeba funkce na jedno použití někde uvnitř jiné funkce. Převážně k tomu se lambda funkce používá. Nám se to ale může hodit pro rychlé jednořádkové definice z konzole. některé základní funkce z standardní knihovny čekací prodlevy: program bude pokračovat až po uplynutí dané doby from time import sleep > již je v octopus() sleep(1) > 1 sekunda pauza sleep_ms(100) > 100 mili sec sleep_us(500) > 500 micro sec teplota u procesoru: >>> import esp32 >>> esp32.raw_temperature() 127 hallova sonda - magnetického pole: >>> import esp32 >>> esp32.hall_sensor() 129 cca standard hodnota >>> esp32.hall_sensor() 976 po přiložení magnetu