Morze-olvasó

A feladat:

Szigetelőszalaggal felragasztott Morze-kód beolvasása. Pontosabban:

Samuel F. B. Morse (1791-1872) kidolgozott egy kódolási rendszert, amivel az ábécé betűit lehet távírón továbbítani. Az ábécé betűinek rövid és hosszú jelek (pontok és vonások) sorozata felel meg. A kódolás nem rendelkezik az ún. prefix tulajdonsággal, ezért az egyértelmű dekódolhatóság érdekében a betűket szünetekkel kell elválasztani. A gyors üzenettovábbítás érdekében a gyakori betűknek rövidebb jelsorozat felel meg mint a ritkáknak, pl. az E csak egy pont, míg a J már négy jelből áll. A feladat egy olyan robot készítése, amely képes földre rajzolt morzekódot dekódolni.

A pozicionálási problémák elkerülése végett a pontok és vonások helyett vékony és vastag csíkokat kell felismerni. A csíkok fekete szigetelőszalagból készülnek, ezek a préselt farostlemez fényes oldalára vannak ragasztva. A csíkok 30 cm hosszúak, a robot a csíkokra merőlegesen halad, és olvassa a kódot. A csíkok a következőképpen határozzák meg a morzekódot:

Pont: fekete szigetelőszalag csík, 2 cm széles.
Vonás: három szigetelőszalag csík pontosan egymás mellett, összesen 6 cm széles.
Szünet két pont vagy vonás között: 2 cm
Szünet két betű között: 6 cm
Szóköz: 12 cm

Az utolsó karakter után, és a 30 cm hosszú csíkok két végén fehér szigetelőszalag van, ha ezt látja a robot, akkor le kell állnia. Ezután a számítógépen futó program segítségével ki kell tudni olvasni az üzenetet a robotból. A számítógép nem kommunikálhat a robottal az olvasás közben, csak miután leállt.

Minta:

A Morze-abc:

A megoldás:


A képeken látható robotot raktuk össze - ez két motorral hajtott, 4db nem kormányozható kerékkel. (A Duracell-nyulas verzió nem volt az igazi.) A megoldást nehezítette, hogy táp-bemenettel nem rendelkező RCX 2.0-val dolgoztunk, és a motorok eltérő ereje miatt az elemek lemerülésével a robot különböző mértékben és irányban tért ki az egyenes vonalról. Ezt szoftveresen kompenzáltuk. A robotra szerelt nyomásérzékelőket ennél a feladatnál nem használtuk, csak az 1db fényszenzort.

A robot saját maga végezte a betűk értelmezését, egyenletes kódként értelmezve a szünetekkel együtt már prefix Morze-kódot. Az értelmezett szöveget a datalogban tárolta, melyet a kódhoz mellékelt scripttel (1 parancs) lehetett kiolvasni, akár működés közben is.

A forrás innen letölthető.

Megjegyzés: A 40 robotból csak 1 robotnak sikerült a mienknél magasabb pontszámot elérnie a Morze-olvasásnál az áprilisi 24 órás programozói versenyen. :)


A készítők:

Istvan Hory NCS Judit Pierre


A program elkészítéséhez szükséges elméleti háttér megtalálható itt.