Barevné světlo
Zadání
Vytvořte program pro DT-Box, který rozsvítí barevné světlo (WSLed) a umožní pomocí zvoleného tlačítka měnit barvy dle přednastaveného barevného schematu. Jedním tlačítkem se barva změní na následující, druhým na předchozí.
Rozšíření
- Místo přepínání barvy zpět přidejte funkci ovládání jasu
- Zobrazte zvolenou barvu a jas na displej (‘B1.C2’ brightness = 1, color = 2)
- Dokážete uložit současnou barvu tak, aby zůstala zvolená i po odpojení napájení?
Evokace
Představte si situaci, kdy chcete umožnit měnit barvu osvětlení podle nálady/tématu. Například v restauraci.
- Kde jinde by se to dalo využít?
- Viděli jste podobné použití v praxi?
- Jak vypadá ovládání takového zařízení? (tlačítka, nastavovací kolečka, mobilní aplikace)
- Které parametry chceme ovládat? (barva, intenzita)
- Jaké jsou požadavky na ovládání (intuitivnost, častost použití, cena)
Uvědomění
- Jaké periferie knihovny dtbox budeme potřebovat?
-
Button, WSLed
- Jak se reprezentuje barva v počítači?
- trojice hodnot RGB … 0-255
- Jaké datové reprezentace budeme potřebovat?
- barevné schema
- aktuální barva
Jak zjistím počet prvků v seznamu?
len(COLOR_SCHEME)
Jaká bude hlavní struktura kódu?
- konstanta pro reprezentaci barevného schématu (seznam trojic)
- proměnná aktuální barva (index do barevného schématu)
- obsluha tlačítek (funkce pro přechod na další/předchozí index)
- nekonečná smyčka, která aktualizuje barvu LED dle hodnoty
current_color
Jaké jsou rizikové stavy?
- přetečení / podtečení indexu, je třeba předcházet a hodnotu indexu rotovat, pokud je třeba
- podtečení do záporných hodnot menších, než délka slovníku nevadí, proč? Viz. záporné indexy v Pythonu.
Reflexe
Co se vám na řešení líbí/nelíbí?
Kde si dokážete představit použití vašeho řešení? (kontrola s odpověďmi u evokace)
Jak byste pozměnili projekt, aby byl lépe použitelný v praxi?
Které části implementace byly nejnáročnější?
Co byste poradili někomu, kdo se chystá vytvořit podobný projekt?