Skip to content

Instantly share code, notes, and snippets.

@encukou
Last active October 9, 2017 14:22
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save encukou/f3ab76de997d8ed74c5bb6c69f3790a9 to your computer and use it in GitHub Desktop.
Save encukou/f3ab76de997d8ed74c5bb6c69f3790a9 to your computer and use it in GitHub Desktop.
MicroPython Workshop

MicroPython workshop

  • Použijte vlastní počítač, na školních funguje jen web
  • na Etherpad můžete psát; prosím, nezneužívejte toho :)

Připojení k zařízení

$ picocom -b 115200 --flow n /dev/ttyUSB0

Nefunguje-li to:

  • /dev/ttyUSB0 neexistuje:
    • zkus /dev/ttyUSB
    • zadej $ dmesg | tail, najdi tam jméno zařízení
  • nemáš právo /dev/ttyUSB0 otevřít:
    • je potřeba přidat se do skupiny dialout

      $ sudo usermod -a -G dialout $(whoami) $ su - $(whoami)

    • nefunguje-li to, poslední záchrana je sudo

Opuštění picocomu: CTRL + (A, Q)

Alternativa pro ty co nemají picocom: $ screen /dev/ttyUSB0 115200

Kalkulačka

>>> 1 + 1
>>> x = 5

LED

Anoda (delší, +)   <->  3v3
Katoda (kratší, -) <->  G

Ovládání LED

(+) <-> D1
(-) <-> D2

>>> from machine import Pin
>>> d1 = Pin(5, Pin.OUT)
>>> d2 = Pin(4, Pin.OUT)

>>> d2.value(0)
>>> d1.value(1)

Tahák na nožičky: https://github.com/pyvec/cheatsheets/raw/master/micropython/nodemcu-cs.pdf

Tlačítko

Modul:
    VCC <-> 3v3
    GND <-> GND
    OUT <-> D5
Konektor:
    červená <-> 3v3
    bílá    <-> G
    zelená  <-> D5

>>> btn = Pin(14, Pin.IN)

>>> btn.value()
>>> print(btn.value())

>>> while True:
...     print(btn.value())

Ctrl+C

>>> while btn.value() == 1:
...     pass

Ukol

Dioda by mela svitit nebo nesvitit podle toho, jestli je zmacknute tlacitko.

porad dokola: - nacist hodnotu z tlacitka, ulozit do promenne - nastavit diodu podle promenne

neboli:

>>> from machine import Pin
>>> d1 = Pin(5, Pin.OUT)
>>> d2 = Pin(4, Pin.OUT)
>>> btn = Pin(14, Pin.IN)
>>> d2.value(0)

>>> while True:
...     hodnota = btn.value()
...     d1.value(hodnota)

Program:

from machine import Pin

d1 = Pin(5, Pin.OUT) d2 = Pin(4, Pin.OUT) btn = Pin(14, Pin.IN) d2.value(0)

while True: hodnota = btn.value() d1.value(hodnota)

while True: d1.value(1 - btn.value())

Blikání

>>> from time import sleep

>>> sleep(1)

Spuštění programu ze souboru

Instalace:

Fedora:
    $ sudo dnf install ampy
Jinde:
    $ python3 -m pip install --user adafruit-ampy

Spuštění:

$ ampy -p /dev/ttyUSB0 run program.py

PWM

>>> from machine import PWM
>>> pwm = PWM(led, freq=5, duty=512)
>>> pwm.freq(2)
>>> pwm.duty(256)
>>> pwm.deinit()

Tóny

piezo mezi 3v3, D8

C:  262 Hz
D:  294 Hz
E:  330 Hz
F:  350 Hz
G:  392 Hz
A:  440 Hz
H:  494 Hz
C:  523 Hz

Rotace

hnědá    <-> ??? <-> GND
červená  <-> ??? <-> 3v3
oranžová <-> ??? <-> D8
servo = PWM(Pin(15, Pin.OUT))
servo.freq(50)
servo.duty(40)
sleep(1)
servo.duty(120)

Barevná světýlka

cervena <-> ??? <-> 3v3
zelena  <-> ??? <-> D6
bila    <-> ??? <-> GND
from neopixel import NeoPixel
np = NeoPixel(Pin(12, Pin.OUT), 8)

Úkoly

  • Animace semaforu (zelená, zlutá, červená, červená+zlutá, zelená, ...)

  • Semafor se závorou

  • Alarm (Na tlačítko něco polož – třeba myš. Jakmile někdo tlačítko uvolní, zařízení začne blikat.)

  • Alarm se zvukem

  • Žlutozelená barva (mezi GREEN a YELLOW) (GREEN je proměnná; co obsahuhje?)

  • Animace: Plynulý přechod z červené do modré

Kde se to dá koupit?

http://naucse.python.cz/2017/rh-openschool-micropython/micropython/mini-workshop/organizers/

Dotazy: encukou@gmail.com

Bonusová zařízení

  • Detektor vzdálenosti
  • Dlouhý/kulatý LED pásek
  • LED matice
  • Vozítko?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment