Přeskočit obsah

Úlohy

Led

Zadání

Led je důležitý prvek většiny zařízení a má různé funkce.

  • K čemu se například led používá? (signalizace stavu, upozornění na mobilu)

Vytvořte program, který rozsvítí libovonou led diodu.

Postup

  1. Ze složky shortcuts knihovny dtbox importujte objekt green_led
  2. Využijte funkci toggle objektu green_led, která rozsvítí nebo zhasne led

Řešení

from dtbox.led.shortcuts import led_green

led_green.toggle()

Barevná led

Zadání

Barevné světlo se používá velmi často. Např. pro estetické účely.

  • K čemu dalšímu se využívá barevné led? (OLED display cell)

Vytvořte program, který rozsvítí barevnou led libovolnou barvou.

Postup

  1. ze složky shortcuts knihovny dtbox importujte objekt wsled
  2. z knihovny dtbox importujte modul colors
  3. využije funkci objektu wsled, která na barevné led rozsvítí zadanou barvu, kterou najde v modulu colors

Řešení

from dtbox.wsled.shortcuts import wsled
from dtbox import colors

wsled.color(colors.BLUE)

Blesk

Zadání

Blesk se u fotoaparátu používá pro vyšší viditelnost na fotkách ve tmavých podmínkách.

Vytvořte program, který napodobí takový blesk tím, že na barevné diodě krátce rozsvítí bíle světlo (cca 10-20 ms).

Postup

  1. ze složky shortcuts knihovny dtbox importujte objekt wsled
  2. z modulu time importujte funkci sleep_ms
  3. z knihovny dtbox importujte modul colors
  4. využije funkci objektu wsled, která na barevné led rozsvítí zadanou barvu, kterou najde v modulu colors
  5. využijte funkci sleep_ms s parametrem, který představuje délku záblesku
  6. na objektu wsled vyvolejte funkci color, které předáte argument color.BLACK, čímž světlo zhasne

Řešení

from time import sleep_ms
from dtbox.wsled.shortcuts import wsled
from dtbox import colors

wsled.color(colors.WHITE) # the same as ws.color((255, 255, 255))
sleep_ms(15)
wsled.color(colors.BLACK)

Animace na display

Zadání

Animace je základní prvek pro estetiku a objevuje se ve většině programů. Například načítací kolečko.

  • Kde jinde se animace vyskytují? (messenger, instagram, …)

Vytvořte program, který na pravé straně displaye vykreslí nějaký znak a postupně ho bude vykreslovat pokaždé o jednu pozici vlevo, čímž vytvoří iluzi toho, že se znak pohybuje zprava doleva.

Postup

  1. ze složky shortcuts importujte objekt display
  2. z modulu time importujte funkci sleep_ms
  3. pomocí funkce show objektu display zobrazte znak vpravo (řetězec tří mezer a znaku)
  4. funkcí sleep_ms udělejte pauzu mezi posunem znaku
  5. funkcí show zobrazte o znak jednu pozici vlevo (řetězec dvou mezer, znaku a mezery)
  6. dvakrát opakujte posun

Řešení

from dtbox.display.shortcuts import display
from time import sleep_ms

display.show("   a")
sleep_ms(300)
display.show("  ah")
sleep_ms(300)
display.show(" aho")
sleep_ms(300)
display.show("ahoj")
sleep_ms(300)
display.show("hoj ")
sleep_ms(300)
display.show("oj ")
sleep_ms(300)
display.show("j   ")
sleep_ms(300)
display.show("    ")
sleep_ms(300)

sleep_ms(1000)

# tato funkce dělá to samé
display.scroll("ahoj", scroll=true)

Zobrazení vzdálenosti

Zadání

Ultrazvukový senzor nám umožňuje zjistit vzdálenost. Toho se dá využít například u parkovacího senzoru.

  • Kde se setkáme s lokalizací pomocí ultrazvuku? (netopýr)

Vytvořte program, který na display napíše vzdálenost nejbližšího objektu směrem od ultrazvukového senzoru.

Postup

  1. z modulu shortcuts ve složce display knihovny dtbox importujte objekt display
  2. z modulu shortcuts ve složce ultrasonic knihovny dtbox importujte objekt ultrasonic
  3. do proměnné distance uložte výsledek funkce distance_cm objektu ultrasonic přetypovaný na řetězec
  4. proměnnou zobrazte na display pomocí funkce show

Řešení

from time import sleep
from dtbox.ultrasonic.shortcuts import ultrasonic
from dtbox.display.shortcuts import display

while True:
    distance = ultrasonic.distance_cm()
    print(distance)
    display.show_right(distance)
    sleep(1)

Zobrazení teploty

Zadání

Teploměr umožňuje získání aktuální teploty, čehož se dá využít např. u tělesného teploměru.

  • Kde jinde se dá teploměr využít? (zjištění teploty na procesoru)

Vytvořte program, který na display zapíše aktuální teplotu.

Postup

  1. z modulu shortcuts ze složky display knihovny dtbox importujte objekt display
  2. z modulu shortcuts ze složky thermometer knihovny dtbox importujte objekt thermometer
  3. využijte funkci show objektu display, které jako argument předáte výsledek funkce get_temperature objektu thermometer

Řešení

from dtbox.thermometer.shortcuts import thermometer
from dtbox.display.shortcuts import display
from time import sleep

while True:
    temperature = thermometer.get_temp()
    display.show_right(temperature)
    sleep(1)

Melodie

Zadání

Vydávaní zvuků zařízením je používáno velmi často. Např. signalizace chyby při spuštění počítače.

  • Kde jinde se hodí vydávání různých frekvencí? (alarm)

Vytvořte program, který z knihovny importuje nějakou melodii a přehraje jí.

Postup

  1. z modulu shortcuts ze složky display knihovny dtbox importujte objekt display
  2. z modulu shortcuts ze složky thermometer knihovny dtbox importujte objekt thermometer
  3. využijte funkci show objektu display, které jako argument předáte výsledek funkce get_temperature objektu thermometer

Řešení

from dtbox.buzzer.shortcuts import buzzer
from dtbox.melody import indiana

buzzer.play_melody(indiana)

NTP hodiny

Zadání

Ntp je protokol, který je zodpovědný za to, že všechny počítače v síti mají nastavený stejný čas.

  • Kde se například využívá ntp? (hodiny na mobilu)

Vytvořte program, který se připojí na internet, pomocí ntp nastaví čas na počítači a opakovaně bude aktualizovat čas zobrazovaný na displeji.

Postup

  1. z modulu shortcuts ze složky display knihovny dtbox importujte objekt display
  2. z modulu shortcuts ze složky network knihovny dtbox importujte objekt network
  3. z modulu time importujte funkci sleep_ms
  4. importujte modul ntptime
  5. importujte modul time
  6. pomocí funkce connect objektu network se připojte k internetu
  7. pomocí funkce settime modulu ntptime nastavte čas
  8. TODO

Řešení

from dtbox.display.shortcuts import display
from time import sleep_ms
from dtbox.network.shortcuts import network
import ntptime
import time

network.connect()

ntptime.settime()
while True:
    t = time.localtime(time.mktime(time.localtime()) + 2*3600)
    hours = "%02d" % (t[3],)
    minutes = "%02d" % (t[4],)
    display.show(hours+"."+minutes)
    sleep_ms(1000)