micro:bit workshop pre učiteľov


micro:bit workshop pre učiteľov

Inštalácia

Mu Editor

1. Úvod

Python

Python je veľmi populárny a všestranný programovací jazyk odporúčaný pre vyučovanie základov programovania. Práve preto postupne nahrádza iné programovacie jazyky na hodinách informatiky. Vo veľkom Python využívajú aj v Google, Dropbox, Európskej organizácii jadrového výskumu CERN, sociálnych sieťach Facebook, Pinterest a Instagram, či pri vyučovaní na prestížnej vysokej škole MIT.

Autorom jazyka Python je Guido van Rossum (prvá verzia je z 1989). V súčasnosti jazyk Python vyvíja a spravuje komunita, zastrešovaná medzinárodnou organizáciou Python Software Foundation (skratka PSF). Samotný jazyk je open-source.

Python je interpretovaný jazyk, a preto sa po dopísaní kódu ho neskompilujeme (ako napríklad C či Pascal) ale spustíme ho v interpreteri. Ten náš kód za chodu číta a prekladá na strojové inštukcie pre procesor. Preto je potrebné, aby sme na spustenie Python kódu mali na počítači nainštalovaný Python interpreter. (ako si vysvetlíme o schvíľu)

Odporúčame používať najnovšiu verziu Python3 (v súčasnosti je to Python3.6). Python2 je staršia verzia Pythonu a už nie je vhodné v nej programovať.

V čom sa Python líši snáď najviac od iných programovacích jazykov je práve komunika. Tá je tvorená profesionálmi, začiatočníkmi, učiteľmi i víkendovými programátormi a tak je veľmi rôznorodá. Po celom svete sa pravidelne organizujú konferencie PyCon (čiže PYthon CONference). Na Slovensku je táto konferencia organizovaná raz ročne občianskym združením SPy (Slovak Python User Group).

MicroPython

MicroPython je upravená verzia Pythonu, ktorá beží aj na menej výkonných zariadeniach. Vďaka tomu vieme v MicroPythone programovať mikroelektroniku a interagovať s okolitým svetom pomocou LED diód, senzorov, bzučiakov, motorčekov, atď. Takéto zariadenia sú zároveň rádovo lacnejšie ako počítače pre klasický Python. Obrovskou výhodou je fakt, že syntax je pre obe verzie jazyka rovnaká, a tak sa učiteľom aj žiakom stačí naučiť iba jeden jazyk.

Tak ako na spustenie Python kódu na počítači potrebuje nainštalovaný interpreter, tak aj pre MicroPython kód musíme na mikroprocesom najprv nainsťalovať MicroPython interpreter. To stačí spraviť raz a následne mu budeme už len posielať naše zdrojové kódy na preklad. Raz za čas sa ale oplatí MicroPython na zariadení preinštalovať na novšiu verziu, aby sme mali vždy čo najviac funkčný interpreter.

MicroPython interpreter vymyslel Damien George v roku 2013 pre vývojovú dosku pyboard (s mikroprocesorom STM32). V súčasnosti existuje viacero verzií MicoPythonu pre rôzne mikroprocesory. My budeme používať verziu pre micro:bit.

Čo je to micro:bit?

Malá edukačná doska vhodná pre využitie vrámci hodín informatiky na základných a stredných školách. Vďaka konektorom (tzv. pinom) je možné ňou programovať hardvér.

Ako môžem micro:bit programovať?

Je možné programovať ho v MicroPythone, C, JavaScripte a cez Blockly (podobné Scratch).

Blokové programovanie (Blockly)

Online Blockly Editor (SK) je online editor pre programovanie micro:bitu cez grafický programovací jazyk. Pri tomto spôsobe programovania nie je potrebná inštalácia softvéru na počítač či administrátorské práva, stačí prístup na internet a internetový prehliadač.

Základné

Zobraziť reťazec - vypíše text na obrazovke

Zobraziť LED - zobrazí obrázok na obrazovke

Vstup

V tejto časti sa nachádzajú bloky, ktoré spustia kód pri nejakej udalosti - napríklad pri stlačení tlačidla, naklonení dosky alebo zatrasení.

Hudba

Microbit dokáže generovať aj zvuk, a to konkrétne na kolíku 0. Preto k nemu pripojíme jeden káblik mikrofónu (dátový) a druhý (zem) pripojíme k GND. Skúste si spustiť melódio svadba.

Radio

Micro:bit obsahuje aj vbudovaný komunikačný modul, a teda vedia medzi sebou navzájom komunikovať.

Cykly, Logiku, Premenné, Matematika

Tak ako v Scratch, aj Blockly obsahuje základné príkazy a konštrukcie. Zaujímavým môže byť vybrať náhodne od 0 po n, ktorý generuje náhodné čísla.

Online MicroPython Editor

Online MicroPython Editor (EN) je ďaľší online editor, no tento krát je určený pre tvorby MicroPython kódu. Ani pri tomto spôsobe programovania nie je potrebná inštalácia softvéru na počítač či administrátorské práva, stačí prístup na internet a internetový prehliadač.

Hello World!

from microbit import *

while True:
    display.scroll('Hello, World!')
    display.show(Image.HEART)
    sleep(2000)
  • from micobit import * - tento príkaz nám v kóde sprístupní všetku funkcionalitu knižnice microbit, vďaka ktorej vieme pristupovať k hardérovej funkcionalite micro:bitu.
  • while True: - tento príkaz nám bude donekonečna vykonávať kód, ktorý prislúcha do daného while cyklu
  • Indentácia . v Pythone (na rozdiel od iných jazykov) sa kód prislúchajúci do bloku neoznačuje zátvorkami, ale pomocou odsadzovania, čiže indentácie. Aby nejaký kód prislúchal pod príkaz while, musí byť odsadený aspoň o jeden tabulátor (štyri medzerníky)
  • display.scroll() vypíše daný reťazec na obrazovku
  • display.show(Image.HEART) vykreslí daný obrázok na obrazovku
  • sleep() - funkcia sleep pozastaví micro:bit na zadaný počet milisekúnd
  • poznámky - poznámky sa v Pythone tvoria mriežkou (#)

Ako ale zistíme, aké možné obrázky môžeme vykresliť? Na to nám slúži online micro:bit MicroPython dokumentácia, v ktorej je zoznam všetkých príkazov, ktoré je možné použiť.

Mu Editor

Mu (čoskoro v SK) je IDE pre písanie MicroPython kódu pre micro:bit, ako aj pre Python3 (skvelá alternatíva k IDLE). Je možné ho stiahnuť a spustiť bez inštalácie, alebo inštalovať pomocou nástroja pip. Pre plnú funkcionalitu je potrebné pri platforme Windows stiahnúť si driver pre micro:bit.

Zvuk (Music & Speech)

Pregprogramovaná hudba

import music

music.play(music.NYAN)
  • music - kinižnica na generovanie hudby na pine 0
  • music.NYAN - micro:bit už má niekoľko predprogramovaných melódií, tie nájdete v dokumnetácii (sekcia Music)

Vlastná hudba

import music

tune = ["C4:4", "D", "E", "C", "C", "D", "E", "C", "E", "F", "G:8",
        "E:4", "F", "G:8"]
music.play(tune)
  • C4:4 - nota C zo štvrtej oktávy s dĺžkou 4

Zvukové efekty

import music

while True:
    for freq in range(880, 1760, 16):
        music.pitch(freq, 6)
    for freq in range(1760, 880, -16):
        music.pitch(freq, 6)

NeoPixel

from microbit import *
import neopixel

np = neopixel.NeoPixel(pin1, 8)
np[0] = (255, 0, 0)
np.show()

from microbit import *
import neopixel

np = neopixel.NeoPixel(pin1, 8)
np[0] = (255, 0, 0)
np[1] = (255, 0, 0)
np[2] = (255, 0, 0)
np[3] = (255, 0, 0)
np[4] = (255, 0, 0)
np[5] = (255, 0, 0)
np[6] = (255, 0, 0)
np[7] = (255, 0, 0)
np.show()

from microbit import *
import neopixel

np = neopixel.NeoPixel(pin1, 8)

for i in range(0, 8)
    np[i] = (255, 0, 0)
np.show()

from microbit import *
import neopixel
from random import randint, seed

seed(5)
np = neopixel.NeoPixel(pin1, 8)

while True:

    for i in range(0, len(np)):
        red = randint(0, 255)
        green = randint(0, 255)
        blue = randint(0, 255)

        np[i] = (red, green, blue)

        np.show()
        sleep(500)
from microbit import *
import neopixel

np = neopixel.NeoPixel(pin1, 8)

while True:

    for i in range(0, len(np)):
        for led_id in range(0, len(np)):
            if i == led_id:
                np[led_id] = (0, 255, 0)
            else:
                np[led_id] = (0, 0, 0)
        sleep(100)
        np.show()
from microbit import *
import neopixel

np = neopixel.NeoPixel(pin1, 8)   # Vytvor NeoPixel driver pre 8 pixelov

while True:
    # bounce
    for i in range(len(np)):
        for led_id in range(len(np)):
            if i == led_id:
                np[led_id] = (0, 255, 0)
            else:
                np[led_id] = (0, 0, 0)
        sleep(100)
        np.show()

    # fade in
    for i in range(0, 256, 1):
        for led_id in range(len(np)):
            np[led_id] = (0, i, 0)
        np.show()

    # fade out
    for i in range(255, 0, -1):
        for led_id in range(len(np)):
            np[led_id] = (0, i, 0)
        np.show()

    # clear
    for i in range(len(np)):
        np[i] = (0, 0, 0)
    np.show()

Vstup na kolíky

from microbit import *

while True:
    if pin2.read_digital():
        display.show(Image.HAPPY)
    else:
        display.show(Image.SAD)

Teraz zameň read_digital za is_touched. Namiesto kábliku použi na prepojenie kúsky alobalu a ruky. Vyskúšaj to aj cez banán, jablko či pomaranč.

Micro:bit pinout

Banánové piano

from microbit import *
import music

tune = ["C4:4", "D", "E", "C", "C", "D", "E", "C", "E", "F", "G:8",
        "E:4", "F", "G:8"]
i = 0

while True:
    if pin2.is_touched():
        music.play(tune[i])
        i += 1
        if i == len(tune):
            i = 0

Toto naše piano vieme rozšíriť ešte aj o svetlo - pri každom stlačení klávesu náhodne zmeníme všetky farby na LED pásiku.

Hra na reflexy

TBA

Diaľkový vypínač

import radio
from microbit import *

radio.on()

while True:
    if button_a.was_pressed():
        radio.send('on')
    elif button_b.was_pressed():
        radio.send('off')
import radio
from microbit import *

radio.on()

while True:
    incoming = radio.receive()
    if incoming == 'on':
        display.show(Image.HAPPY)
    elif incoming == 'off':
        display.show(Image.SAD)
import radio
from microbit import *
import music

radio.on()

while True:
    incoming = radio.receive()
    if incoming == 'on':
        display.show(Image.HAPPY)
        music.play(music.JUMP_UP)
    elif incoming == 'off':
        display.show(Image.SAD)
        music.play(music.JUMP_DOWN)

Wireless Sniffer

import radio
from microbit import *

radio.on()

while True:
    message = radio.receive()
    if message:
        print(message)

Robot buggy

To mention:

  • Relay, Humidity sensors, PIR sensors, Rain sensor
  • Robotics

Odkazy a inšpirácia

Kde kúpiť micro:bit

Slovensko

Kitronics (Veľká Británia)

Ďalšie obchody v UK

Učíme s Hardvérom

Projekt Učíme s Hardvérom je iniciatívou občianskeho združenia SPy, ktorého cieľom je priniesť zaujímavejšie hodiny informatiky do škôl. Viac info nájdete na tomto odkaze.

SPy o.z. a PyConSK

Projekt je zastrešený občianskym združením SPy, ktoré organizuje každoročnú medzinárodnú konferenciu PyCon SK a pravidelné mesačné meetupy v Bratislave. Súčasťou konferencie je aj sekcia pre učiteľov, EduTrack, so zameraním na vyučovanie programovania v jazyku Python, oboznámenie učiteľov s novými trendmi a možnosťami v oblasti programovania.

Kontakt

Feedback

Feedback Formulár