KURZ: Světelné kostky a signalizace tlačítek řídící jednotky - Možnosti praktického využití

KAPITOLY

Možnosti praktického využití

Světelné kostky můžeme považovat spíše za doplňkovou komponentu LEGO MINDSTORMS NXT. Dají se využít u různých zařízení pro signalizaci nastálého děje. U ultrasonického senzoru se dají využít jako světelný signalizátor pro překročení povolené vzdálenosti od překážky. U dotykového senzoru mohou signalizovat stisknutí jeho tlačítka a podobně.

Využití světelných kostek pro sestrojení jednoduchého semaforu

Použití a ovládání světelných kostek si ukážeme na jednoduchém modelu semaforu, který můžete vidět na obrázku. Skládá se ze tří světelných kostek, které symbolizují všechny tři barvy semaforu (zelená, oranžová a červená). Pomocí speciálních vodičů jsou připojeny k řídící jednotce. Diody se rozsvicují a zhasínají stejně tak, jako na opravdovém semaforu. Nejprve svítí zelená, ke které se následně rozsvítí také oranžová. Ve chvíli, kdy obě tato světla zhasnou, se rozsvítí červená. K červené se po chvíli rozsvítí oranžová a po jejich současném zhasnutí se opět rozsvítí zelená. Tento děj se opakuje, stejně tak jako na křižovatce, stále dokola.

 

NXT-G

OVLÁDÁNÍ SEMAFORU ZE SVĚTELNÝCH KOSTEK

Pro ovládání semaforu složeného ze světelných kostek budeme v programovacím prostředí NXT-G využívat blok LightDragged Lamp, který je k jejich ovládání určený. Na následujícím příkladu si vysvětlíme, jako ho správně používat a jak docílit správného chodu improvizovaného dopravního semaforu.

Krok 1 - Rozsvícení zelené diody

Jako první se pokusíme na semaforu rozsvítit zelenou diodu tak, aby svítila po dobu 4 sekund. Použijeme tedy blok LightDragged Lamp. V jeho nastavení musíme zvolit port, ke kterému je kostka připojena. Chceme aby kostka svítila, musíme tudíž v sekci Action zvolit možnost On. Svit s maximální intenzitou zajistíme zadáním maximální hodnoty 100 v sekci Intensity.

lamp blok

Nyní jsme nastavili vše tak, jak potřebujeme. Musíme ovšem ještě zajistit, aby žárovka svítila po dobu 4 sekund. K tomu použijeme cyklus s pevným počtem průchodů LoopBig Loop, do kterého blok umístíme. V jeho nastavení musíme zvolit kontrolu pomocí času (Time) a nastavit dobu provádění cyklu na 4 sekundy.

cyklus1

Výsledný cyklus bude vypadat následovně:

cyklus zelena

 
Krok 2 - Svit zelené a oranžové diody

Než se na semaforu rozsvítí červené světlo, krátký časový úsek svítí zelené a oranžové světlo současně. My budeme v našem programu chtít, aby se tak dělo po dobu 2 sekund. Postup ke správnému řešení je obdobný jako v předchozím kroku. Budeme potřebovat dva bloky pro ovládání světelných kostek. Zvolíme správné porty, ke kterým jsou zelená a oranžová dioda připojeny. Vybereme, že chceme aby svítily (volba On) a navolíme maximální intezitu svitu (100). Oba bloky umístíme do cyklu s pevným počtem průchodů tak, jak můžete vidět na obrázku. V nastavení bloku opět zvolíme provádění na základě času (Time) a zadáme požadované 2 vteřiny.

cyklus zelena oranzova

 
Krok 3 - Zhasnutí svítících diod

V okamžiku, kdy se rozsvítí červené světlo semaforu, musí zelená a oranžová kostka zhasnout. Musíme tedy nyní zhasnutí zrealizovat. Jedná se o opačný proces než při rozsvícení světla. Do programu si umístíme dva bloky, které reprezentují kostky připojené k příslušným portům jako zelené a oranžové světlo a v sekci Action jejich nastavení zvolíme možnost Off. Tímto docílíme toho, že po provedení přechozího kroku, kdy budou obě diody svítit 2 vteřiny, zhasnou.

 
Krok 4 - Rozsvícení červené diody

Přesně v okamžiku, kdy zhasne zelená a oranžová kostka budeme potřebovat, aby se rozsvítila kostka červená. Stejně jako tomu bylo u zelené, tak i zde budeme chtít, aby svítila 4 vteřiny. Nastavení tedy bude naprosto stejné jako u rozsvícení zelené kostky. U bloku pro zelenou kostku navolíme správný port, akci On a maximální intezitu a umístíme ho do cyklu, který se bude provádět po dobu 4 sekund.

 
Krok 5 - Zajištění neustálého střídání barev na semaforu

Zbývá nám poslední kombinace barev semaforu. Než se rozsvítí opět zelené světlo, musí nejprve po dobu 2 vteřin svítit červená a oranžová kostka zároveň, jako tomu bylo při přechodu ze zelené barvy na červenou. Postup realizace je opět totožný jako v kroku 2. Důležité je zda dbát hlavně na zadávání správných označení portů, abychom si nespletli diody a nerozsvítili je chybně. Oba bloky musí být opět umístěny v cyklu. Za oba dva znovu umístíme bloky, které po průchodu cyklem červené a oranžové světlo zhasnou.

Stejně jako u opravdového semaforu, který řídí dopravní křižovatku, budeme i u našeho chtít, aby se na něm barvy střídaly stále dokola. Musíme tak celou posloupnost příkazů, kterou jsme si popsali v předchozích krocích umístit do cyklu s pevným počtem průchodů LoopBig Loop. V jeho nastavení musíme provést jediné. V sekci Control zvolit možnost Forever, čímž zajistíme nekonečné provádění celé posloupnosti příkazů.

forever

 

Program ke stažení

Stažení ve formátu .rbt

RobotC

Ovládání semaforu ze světelných kostek

Jak jsme si již ukázali v teoretické části této kapitoly, tak rozsvícení a zhasnutí diod světelných kostek se ovládá pomocí stejného příkazu jako ovládání motoru, tedy motor[]. V našem příkladu jde pouze o to, abychom správně sesynchronizovali příkazy tak, aby svítili vždy pouze kostky, které chceme aby svítili. Nakonec budeme požadovat, aby se celý cyklus chodu semaforu opakoval stále dokola.

Krok 1 - Rozsvícení zelené kostky

Jako první se na semaforu pokusíme rozsvítit zelenou kostku, která na křižovatkách symbolizuje možnost volného průjezdu vozidel. Budeme chtít, aby svítila 4 sekundy, protože následně se k ní ještě rozsvítí kostka oranžová a po jejich zhasnutí se rozsvítí kostka červená. Zelenou kostku rozsvítíme pomocí příkazu motor[]. Chceme aby svítila s maximální intenzitou, takže nastavíme hodnotu příkazu na 100. V parametru příkazu musíme správně zadat port, ke kterému je světelná kostka připojena. Nyní musíme zajistit, aby svítila 4 sekundy. Docílíme toho příkazem wait1Msec(). Jako parametr nastavíme 4000 milisekund (4 sekundy). Tímto docílíme oddálení provádění dalšího příkazu o 4 sekundy a tedy svitu zelené kostky po tuto dobu.

 
 // Rozsviceni zelene diody po dobu 4s.
 motor[motorA] = 100;
 wait1Msec(4000);
 
 
Krok 2 - Svit zelené a oranžové kostky současně

Než se na semaforu rozsvítí červené světlo, svítí nejprve krátký časový úsek zelené a oranžové světlo zároveň. My v našem příkladě chceme, aby světla svítila současně po dobu 2 sekund. Jak rozsvítit kostku po určitou dobu jsme si již ukázali. Nyní pouze přidáme oranžovou kostku.

 
 // Usek 2 vterin, behem kterych sviti zelena a oranzova dioda.
 motor[motorA] = 100;
 motor[motorB] = 100;
 wait1Msec(2000);
 
 
Krok 3 - Zhasnutí svítících diod

Ve stejný okamžik, kdy se na semaforu rozsvítí červené světlo, zhasne světlo zelené a oranžové. Zhasnutí docílíme opačným postupem než rozsvícení. Do příkazu motor[] zadáme nulovou hodnotu intenzity světla.

 
 // Zhasnuti zelene a oranzove diody.
 motor[motorA] = 0;
 motor[motorB] = 0;
 
 
Krok 4 - Rozsvícení červené diody

Jakmile zhasne zelené a červené světlo, rozsvítí se na semaforu červené. Pro jeho rozsvícení stačí opět použít příkaz motor[]. Zadat maximální intenzitu svitu a uvést správně příslušný port.

 
 // Rozviceni cervene diody na dobu 4s.
 motor[motorC] = 100;
 wait1Msec(4000);
 
 
Krok 5 - Zajištění neustálého střídání barev na semaforu

Nyní známe všechny kroky, pomocí kterých naprogramujeme i zbývající dva. Prvním z nich bude současný svit červené a oranžové barvy po dobu 2 sekund, po jejichž zhasnutí se rozsvítí zelené světlo. Na každém dopravním semaforu se ale toto střídání barev děje neustále dokola, neprobíhá pouze jednou. Musíme tedy zajistit ještě jejich střídání stále dokola. Docílíme toho umístěním veškerých příkazů pro střídání barev do nekonečného cyklu while(). Jak poté bude výsledný program vypadat můžete vidět níže.

Výsledný program pro semafor
 
task main()
{
// Nekonecny cyklus zajistujici neustale opakovani.
while(1 == 1) 
{
 // Rozsviceni zelene diody po dobu 4s.
 motor[motorA] = 100;
 wait1Msec(4000);
 
 // Usek 2 vterin, behem kterych sviti zelena a oranzova dioda.
 motor[motorA] = 100;
 motor[motorB] = 100;
 wait1Msec(2000);
 
 // Zhasnuti zelene a oranzove diody.
 motor[motorA] = 0;
 motor[motorB] = 0;
 
 // Rozviceni cervene diody na dobu 4s.
 motor[motorC] = 100;
 wait1Msec(4000);
 
 // Usek 2 vterin, behem kterych sviti cervena a oranzova dioda.
 motor[motorB] = 100;
 motor[motorC] = 100;
 wait1Msec(2000);
 
 // Zhasnuti cervene a oranzove diody.
 motor[motorB] = 0;
 motor[motorC] = 0;
}
}
 
Popis programu

V programu je pomocí příkazu motor[] zajištěno vždy rozsvícení příslušné kostky na maximum (100%). Pokud svítí pouze zelená nebo pouze červená kostka, je doba svitu nastavena na 4 sekundy. Přechodný stav, kdy se rozsvicuje při přechodu ze zelené na červenou a opačně také oranžová dioda jsme zkrátili na 2 sekundy. Neustálé opakování chodu semaforu zajišťuje nekonečný cyklus while().

 

Program ke stažení

Stažení ve formátu .c

1 1 1 1 1 1 1 1 1 1 Hodnocení 1.50 (2 hodnocení)

Nemáte oprávnění přidat komentář.
Komentáře mohou přidávat pouze registrovaní uživatelé, kteří neporušují pravidla diskuze.