amaro-temp


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