Jak začneš psát trochu složitější programy, mohlo by se stát, že tě konzole MicroPythonu začne trochu štvát. Špatně se v ní opravují chyby a automatické odsazování funguje jen většinou. Pojďme se podívat, jak naštvání předejít.
Nejdřív si do virtuálního prostředí nainstaluj program Ampy od Adafruitu.
(env)$ python -m pip install adafruit-ampy
Doporučuji si větší kousky kódu – a určitě takové, ve kterých je nějaký cyklus, podmínka či funkce – psát v textovém editoru a do modulu pak posílat celý soubor.
Zkus si to. Do souboru blikajici_led.py
dej následující kód:
from machine import Pin
from time import sleep
pin_diody = Pin(14, Pin.OUT)
while True:
pin_diody.value(0)
sleep(1/2)
pin_diody.value(1)
sleep(1/2)
Potom zavři konzoli (picocom
, PuTTY nebo screen
).
Ke spuštění budeš potřebovat znát port:
picocom
, např. /dev/ttyUSB0
COM13
screen
, např. /dev/tty.usbmodem*
ampy
spusť následujícím příkazem, jen za PORT
doplň svůj port:
(venv)$ ampy -p PORT run blikajici_led.py
Program by měl blikat diodou.
Využívá k tomu funkci time.sleep()
, která počká daný počet vteřin –
tedy time.sleep(1/2)
zastaví program na půl sekundy.
Podobně je možné na destičku soubory i nahrávat, jen je potřeba místo
run
použít put
.
(venv)$ ampy -p PORT put blikajici_led.py
Pokud navíc budeš chtít, aby se program na destičce automaticky spouštěl, musí
se soubor s programem na destičce jmenovat main.py
. ampy
umí soubor při
kopírování i přejmenovat, když mu při kopírování zadáš i druhé (nové) jméno.
(venv)$ ampy -p PORT put blikajici_led.py main.py
Po úspěšném kopírování máš na destičce nahraný náš program ze souboru
blikajici_led.py
do souboru main.py
. Teď už bude tvůj program fungovat
i bez počítače, takže stačí destičku připojit např. k powerbance
a dioda se rozbliká.
{ "data": { "sessionMaterial": { "id": "session-material:2019/brno-podzim-pondeli:micropython:5", "title": "PrĂ¡ce se soubory", "html": "\n \n \n\n <h2>Práce se soubory</h2>\n<p>Jak začneš psát trochu složitější programy,\nmohlo by se stát, že tě konzole MicroPythonu začne trochu štvát.\nŠpatně se v ní opravují chyby a automatické odsazování funguje jen většinou.\nPojďme se podívat, jak naštvání předejít.</p>\n<p>Nejdřív si do virtuálního prostředí nainstaluj program Ampy od Adafruitu.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">(env)$ </span>python -m pip install adafruit-ampy\n</pre></div><p>Doporučuji si větší kousky kódu – a určitě takové,\nve kterých je nějaký cyklus, podmínka či funkce –\npsát v textovém editoru a do modulu pak posílat celý soubor.</p>\n<p>Zkus si to. Do souboru <code>blikajici_led.py</code> dej následující kód:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"kn\">from</span> <span class=\"nn\">machine</span> <span class=\"kn\">import</span> <span class=\"n\">Pin</span>\n<span class=\"kn\">from</span> <span class=\"nn\">time</span> <span class=\"kn\">import</span> <span class=\"n\">sleep</span>\n<span class=\"n\">pin_diody</span> <span class=\"o\">=</span> <span class=\"n\">Pin</span><span class=\"p\">(</span><span class=\"mi\">14</span><span class=\"p\">,</span> <span class=\"n\">Pin</span><span class=\"o\">.</span><span class=\"n\">OUT</span><span class=\"p\">)</span>\n<span class=\"k\">while</span> <span class=\"bp\">True</span><span class=\"p\">:</span>\n <span class=\"n\">pin_diody</span><span class=\"o\">.</span><span class=\"n\">value</span><span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">)</span>\n <span class=\"n\">sleep</span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"o\">/</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n <span class=\"n\">pin_diody</span><span class=\"o\">.</span><span class=\"n\">value</span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n <span class=\"n\">sleep</span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"o\">/</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n</pre></div><p>Potom zavři konzoli (<code>picocom</code>, PuTTY nebo <code>screen</code>).</p>\n<p>Ke spuštění budeš potřebovat znát port:</p>\n<ul>\n<li>Linux: port používáš v příkazu <code>picocom</code>, např. <code>/dev/ttyUSB0</code></li>\n<li>Windows: port používáš v PuTTY, např. <code>COM13</code></li>\n<li>macOS: port používáš v příkazu <code>screen</code>, např. <code>/dev/tty.usbmodem*</code></li>\n</ul>\n<p><code>ampy</code> spusť následujícím příkazem, jen za <code>PORT</code> doplň svůj port:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">(venv)$ </span>ampy -p PORT run blikajici_led.py\n</pre></div><p>Program by měl blikat diodou.\nVyužívá k tomu funkci <code>time.sleep()</code>, která počká daný počet vteřin –\ntedy <code>time.sleep(1/2)</code> zastaví program na půl sekundy.</p>\n<p>Podobně je možné na destičku soubory i nahrávat, jen je potřeba místo\n<code>run</code> použít <code>put</code>.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">(venv)$ </span>ampy -p PORT put blikajici_led.py\n</pre></div><p>Pokud navíc budeš chtít, aby se program na destičce automaticky spouštěl, musí\nse soubor s programem na destičce jmenovat <code>main.py</code>. <code>ampy</code> umí soubor při\nkopírování i přejmenovat, když mu při kopírování zadáš i druhé (nové) jméno.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">(venv)$ </span>ampy -p PORT put blikajici_led.py main.py\n</pre></div><p>Po úspěšném kopírování máš na destičce nahraný náš program ze souboru\n<code>blikajici_led.py</code> do souboru <code>main.py</code>. Teď už bude tvůj program fungovat\ni bez počítače, takže stačí destičku připojit např. k powerbance\na dioda se rozbliká.</p>\n\n\n " } } }