Přejít k navigační liště

Zdroják » Různé » Úloha železniční přejezd z kroužku programování pro děti

Úloha železniční přejezd z kroužku programování pro děti

Články Různé

Netriviálních úloh programování pro děti není nikdy dost. Ukážu vám úlohu Železniční přejezd, na jejímž vzniku jsem se podílel.

Text vyšel původně na autorově blogu.

Úloha železniční přejezd pochází z kroužku programování a používá robotů Meet Edison. Roboty jsem představoval v článku Hodina kódu s LightBot a Meet Edison. Tehdy jsem si pochvaloval dostatek didaktických materiálů, ale dnes už mi přijde, že tam chybí zajímavé a složitější úlohy. Ty je potřeba vymyslet.

S touto úlohou přišel Martin Javorek na @programohrajeme. Jeho varianta je složitější, využívá Python. Já jsem ji zjednodušil pro menší děti, abych vystačil jen s vizuálním „kostkovým“ jazykem.

Teoretický základ: jak funguje železniční přejezd

Po tragédii na železničním přejezdu ve Studénce jsem narazil na článek, který vysvětluje, jak fungují železniční přejezdy. Dozvíte se v něm řadu věcí, např. proč je v zákoně ustanoveno:

Řidič nesmí vjíždět na železniční přejezd, sklápějí-li se, jsou-li sklopeny nebo zdvihají-li se závory.

Pro naši potřebu si úlohu oproti reálnému přejezdu značně zjednodušíme.

Zadání

Naprogramujte chráněný železniční přejezd:

  • Závory se sklopí, když se vlak dostane do přibližovacího úseku.
  • Zdvihnou se, jakmile vjede do anulačního obvodu.
    • Anulační obvod se spouští projetím lokomotivy, musí proto být dostatečně daleko od závor. (Na kontrolu projetí posledního vagonu byste už potřebovali Python a jednalo by se o složitější úlohu.)
  • Po dobu zdvíhání a sklápění budou závory vydávat akustický a světelný výstražný signál.
  • Uvažujte pouze jednosměrný provoz.
  • Programujte v prostředí EdBlock.

@programohrajeme: Pěkná vlaková úloha s roboty, kterou postavily a naprogramovaly naše děti za nedělní dopoledne. Bylo to samozřejmě těžší, než to na první pohled vypadalo, ale úspěch, video viz původní tweet

Pro koho je úloha určená

  • Úlohu zvládnou děti od 7 let.
  • Musí již znát základy práce s robotem Meet Edison a dokázat postavit jednoduché věci z Lega.
  • Jsou potřeba základní znalosti programování, zejména koncept opakuj a posílání zpráv (ty lze probrat až v rámci této úlohy).

Úlohu lze za výrazné pomoci lektora zvládnout za 60 minut. Pokud by to měli řešit jako problém, tedy na řešení přijít co nejvíc sami, bylo by potřeba času mnohem víc.

Potřeby

  • robot Meet Edison, 3 kusy
  • vláčkodráha
  • mašinka (nemusí být nutně s pohonem) s vagony
  • libovolné Lego technic na sestavení závory a podložení robotů do správné výšky

K našemu řešení použijeme EdBlock

Pokud EdBlock neznáte, následující video vám ho představí.

Řešení

Pro každou komponentu (přibližovací úsek, závory a anulační obvod) budete potřebovat samostatného robota. Doporučuji rozlišit si přibližovací úsek a anulační bod barevnou kostičkou, abyste pak pracně nehledali záměnu.

Přibližovací úsek

Přibližovací úsek po projetí vlaku pošle zprávu přes infračervené rozhraní. Spouštěčem zprávy bude detekce překážky. Potřebujeme, aby se pro vlakovou soupravu poslala pouze jediná zpráva, takže po odeslání vložíme adekvátní pauzu. Pro potřeby ladění si můžeme rozsvítit LEDky. Navrhuji rozsvítit, pokud je přibližovací úsek připravený poslat zprávu. Po odeslání, když čeká, zhasne. Vše se opakuje v nekonečné smyčce.

Závory

Závory čekají na zprávu z přibližovacího úseku nebo anulačního obvodu. Nekontrolují, zda jim nějaká zpráva přišla víckrát. Během zdvihání i sklápění blikají a pípají. Je potřeba odladit velikost kroku a počet opakování.

 

Anulační obvod

Anulační obvod funguje úplně stejně jako přibližovací úsek. Spouštěčem je opět detekce překážky, tedy lokomotiva, nepočítáme poslední vagon soupravy. Jediný, ale podstatný, rozdíl je v tom, že pošle jinou zprávu, aby je závory dokázaly rozlišit.

 

Problémy s realizací

Při realizaci jsem narazil na dva drobné technické problémy. Za prvé jsem musel řešení zjednodušit více, než jsem chtěl, jelikož mi výrazové prostředky vizuálního jazyka nedovolily blikat a pípat i se spuštěnými závorami (respektive, aby pak byly schopné reagovat na zprávu o zvednutí). Pokud se vám někomu podaří vylepšit, budu rád za zpětnou vazbu. Za druhé jsme museli řešit to, že sklápění závory nemůže být na stejný počet kroků, jelikož dlouhá a těžká závora motor převažuje a asi o kousek přeskočí (stačí ubrat kroky). (Pozn. redakce: Jeden ze čtenářů upozornil, že problém by se vyřešil protizávažím, které se ostatně používá i u skutečných závor.)

Kromě technického problému jsem řešil i ten didaktický. Na kroužku jsem měl zhruba osm dětí a jen tři roboty, tudíž jsem potřeboval, aby pracovali v kolektivu, nikoliv samostatně. Což nemusí být na škodu, ostatně Mitchel Resnick v knize Lifelong Kindergarten prosazuje princip 4P (Projects, Passion, Peers, and Play; tedy projekty, vášeň, parťáci a hra). Nicméně kromě technické části pak potřebujete sledovat dynamiku skupiny a kromě implementačních rad případně korigovat i chování jednotlivců, když nevede ke zdárnému konci.

Související

Komentáře

Odebírat
Upozornit na
guest
0 Komentářů
Nejstarší
Nejnovější Nejvíce hlasů

Mýtus jedné aplikace: proč PWA nenahradí vývoj pro každou platformu

PWA mohou webu přidat ikonu na ploše, fungování bez připojení, notifikace a některé systémové funkce. Nejsou ale cestou k jednomu klientu pro všechny platformy. Vyplatí se tam, kde se lidé k webu vracejí a ocení okamžitý vstup z odkazu. Jakmile aplikace musí spolehlivě běžet na pozadí nebo fungovat stejně na každém zařízení, bývá vhodnější nativní řešení.

Anthropic vydává Claude Opus 5

AI
Komentáře: 0
Anthropic vydal Claude Opus 5 — model, který se má výkonem blížit špičkovému Fable 5 za poloviční cenu a míří hlavně na agentické kódování. Cena zůstává na 5/25 USD za milion tokenů, přibývají API novinky jako mid-conversation tool changes a automatické fallbacky.