…
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