Přeskočit na hlavní obsah

Hra lahev

Úvod

Proč hrát Lahev s lahví, když vám stačí chytrá krabička? Nastavte si Sadu Start tak, aby náhodně vybrala člena skupiny – ať už na párty, při losování výherce nebo když se rozhoduje, kdo uklidí.

V tomto projektu se naučíš, jak nastavit krabičku tak, aby náhodně vybrala člena tvé skupiny. 😱

Budeš potřebovat krabičku s tlačítkem a USB dongle. Stačí ti základní sada od HARDWARIO, tedy Sada Start.

Spusť to v Node-RED

  1. Sestav Start Set a spáruj ho.
  2. V Playgroundu klikni na záložku Functions, kde se nachází programovací plocha.
  3. Pojďme to rozjet. 🤞 Umísti na plochu MQTT uzel ze sekce Input.

Dvojklikem otevři uzel a nastav klíčovou funkci – stisknutí tlačítka.

Zkopíruj následující řádek do pole Topic:

node/x-axis-detector:0/accelerometer/-/event-count

MQTT topic

Potvrď to tlačítkem Done.

Nastav náhodnou volbu

  1. Náhodnou volbu můžeš naprogramovat pomocí jednoduchého JavaScriptu. Ale neboj, pomůžeme ti. Nejprve umísti vedle MQTT uzlu Function uzel ze sekce Function.

MQTT topic

  1. Dvojklikem otevři uzel. Do řádku Name zadej název uzlu (např. Náhodná volba). Do pole Function zkopíruj tento kód přesně tak, jak je uveden na obrázku. Tento kód zajistí, že bude náhodně vybrán jeden z účastníků.
var rand = Math.round( Math.random() * (flow.get("numberOfContestants") - 1));
msg.payload = flow.get("contestantArr")[rand];
return msg;

MQTT topic

Potvrď to tlačítkem Done.

  1. Přidej vedle uzlu Náhodná volba ještě jeden uzel – Delay (najdeš ho také v sekci Function). Díky tomuto uzlu se odpověď trochu zpozdí a vytvoří se napínavá atmosféra. Baf! 😲

MQTT topic

  1. Uvnitř uzlu nastav, aby bylo zpoždění náhodné – klikni na random delay a zvol čas v rozmezí 2 až 4 sekundy. To bude tak akorát na udržení napětí ve vzduchu.

MQTT topic

Potvrď to tlačítkem Done.

  1. Nad všechny tyto uzly umísti uzel, který nastaví zprávu zobrazující se při výběru. Použij k tomu uzel Change ze stejné sekce.

MQTT topic

  1. Otevři uzel dvojklikem a napiš svou zprávu – například: Probíhá výběr…

MQTT topic

Nastav účastníky

  1. Tvoje loterie se neobejde bez tlačítka pro resetování tabulky – díky němu můžeš pokračovat ve hře. Pod uzel MQTT umísti Button node, tentokrát ze sekce Dashboard.

MQTT topic

  1. Dvojklikem otevři uzel a do řádku Label napiš název Reset.

MQTT topic

Potvrď to tlačítkem Done.

  1. Pokračujeme dál! Teď nastav všechny kámoše, kteří se budou hry účastnit – zatím anonymně. Přidej je na plochu pomocí uzlu Text input ze sekce Dashboard. Přidej tolik uzlů, kolik vás je.

MQTT topic

  1. V každém uzlu proveď následující nastavení:
    • Do pole Label napiš Účastník 1, Účastník 2, atd. podle počtu hráčů.
    • Do pole Delay zadej hodnotu 0.
    • Odškrtni políčko hned pod ním – tím zajistíš, že se pole skutečně vymažou po stisknutí resetu.

Opakuj tohle nastavení pro každý uzel s účastníkem.

MQTT topic

Potvrď to tlačítkem Done.

  1. Umísti další JavaScriptový kód vedle účastníků. Tento kód přiřadí jména účastníků na odpovídající místa. Opět jej vlož jako uzel typu Function.

MQTT topic

  1. Dvojitým kliknutím na uzel otevři jeho nastavení. Do řádku Label napiš název uzlu a do pole Function zkopíruj tento kód:
var contestants = flow.get("numberOfContestants") || 0;
var contestantArray = flow.get("contestantArr") || [msg.payload];
contestants++;
flow.set("numberOfContestants", contestants);

if(contestants != 1)
{
contestantArray.push(msg.payload);
}

flow.set("contestantArr", contestantArray);

Ujisti se, že výstup je skutečně jen jeden. ❗

MQTT topic

Potvrď kliknutím na tlačítko Done.

  1. Neboj se, už jsme skoro u konce. 🙌 Umísti na plochu uzel Change. Ten zajistí, že se při resetování vše vrátí do původního stavu. 🖖

MQTT topic

  1. V nastavení tohoto uzlu vyplň dvě Pravidla tak, jak je vidět na obrázku. První bude Delete | flow | ContestantArr. Pro přidání dalšího pravidla klikni na malé tlačítko + Add pod polem. V tomto druhém pravidle nastav Delete | flow | numberOfContestants.

MQTT topic

Potvrď kliknutím na tlačítko Done.

Pouze jeden může být vybrán.

  1. Umístěte na plochu poslední uzel. Ten oznámí, kdo byl vybrán. 🙏 Najdete ho jednoduše jako uzel Text v sekci Dashboard.

MQTT topic

  1. V řádku Label uvnitř uzlu nastavte, jak bude zpráva vypadat při náhodném výběru jednoho účastníka.

MQTT topic

Potvrď kliknutím na tlačítko Done.

  1. A poté všechno krásně propojte. V horní části spojte všechny uzly, které zajišťují losování, ve spodní části spojte ty, které tvoří losovací tabulku.

MQTT topic

  1. Nezapomeňte kliknout na tlačítko Deploy v pravém horním rohu! 🚨

Ať zábava začne!

  1. A teď hurá do akce! V záložce Dashboard zadej jména všech účastníků. Pokud jsi v uzlech pro jednotlivé účastníky nenastavil automatické obnovení, nezapomeň po každém jménu stisknout klávesu Enter. 👈

MQTT topic

  1. Koho si osud vybral? A za co? To už je jen na tobě. 😈

Můžeš například:

  • vylosovat, kdo komu dá pusu (woohoo),
  • vytáhnout nejkratší sirku pro toho, kdo vynáší odpadky,
  • určit výherce soutěže,
  • přidělit bláznivé úkoly vybrané náhodně,
  • a cokoliv dalšího, co tě napadne!