KURZ: Světelný senzor
- Podrobnosti
- Mgr. Jan Baťko
- Aktualizováno: 07.09.2017
- Zobrazení: 20167
KAPITOLY
Světelný senzor je vstupní zařízení sloužící pro orientaci robota. Mezi jeho hlavní funkce patří rozeznávání světla a tmy a také měření intenzity světla. Jeho hlavní uplatnění je pro navigaci robota. Díky použití světelného senzoru může robot sledovat například dráhu nakreslenou na podkladu, která je dostatečně kontrastní s okolím plochy. Senzor se k řídící jednotce NXT připojuje standardně pomocí kabelu do jednoho ze čtyř vstupních portů (1-4).
U stavebnice LEGO Mindstorms EV3 kombinuje tyto funce barevný senzor (colour senzor), který dokáže měřit intenzitu světla v okolí, intenzitu odraženého světla a zároveň rozeznávat barvy, z čehož je odvozen také jeho název.
Použití v programovacích prostředích
NXT-G
BLOK PRO OVLÁDÁNÍ MOTORU
Rozcestník
Umístění bloku
Blok Light Sensor pro ovládání světelného senzoru nalezneme v programovacím prostředí NXT-G v paletě Complete > Sensor.
Popis bloku
Programový blok Light Sensor obsahuje celkem sedm různých konektorů pro propojení s dalšími bloky programu:
Port - určuje, ke kterému ze čtyř vstupních portů je senzor připojen (1-4).
TriggerPoint- značí nastavenou vstupní hodnotu intenzity světla, která je srovnávána s hodnotou snímanou senzorem.
Greater / Less - hodnota logického datového typu sloužící pro srovnání dvou hodnot (větší nebo menší).
Generate Light - určuje, zda během snímání hodnot svítí LED dioda senzoru.
Yes / No - hodnota logického datového typu vyjadřující výsledek porovnání.
Intensity - udává hodnotu intenzity světla snímanou senzorem na stupnici (0-100).
Raw Value - udává čistou, neškálovanou hodnotu intenzity světla snímanou senzorem na stupnici (0-1023).
Aktuální nastavení bloku vyjadřují tři ikonky. První je číslo, které se nachází vpravo nahoře a označuje vstupní port, ke kterému je senzor připojen. Níže se poté zobrazuje, zda LED dioda generuje světlo a také úroveň intensity světla .
Parametry bloku
Programový blok světelného senzoru umožňuje nastavit následující parametry:
Port: slouží k určení vstupního portu řídící jednotky, ke kterému je senzor připojen.
Compare: sekce slouží k nastavení vstupních dat určených ke srovnání. Pomocí tažítka je možné nastavit intenzitu světla. Volby na obou koncích tažítka umožňují nastavit, jestli chceme zjišťovat, zda světlo snímané senzorem je tmavší než nastavená hodnota intenzity či světlejší. Znaménko větší či menší lze volit i o krok níže a stejně tak zadávat ručně hodnotu intenzity.
Function: zaškrtnutím volby Generate light (generovat světlo) udělujeme příkaz k rozsvícení vláknové žárovky na čelní straně senzoru.
Po spuštění programu začne světelný senzor snímat hodnotu intenzity světla ve svém okolí. Zjištěná hodnota se průběžně zobrazuje ve žlutém poli na levé straně programového bloku (na obrázku hodnota 34).
RobotC
Příkazy pro ovládání světelného senzoru
Světelný senzor obsahuje vláknovou žárovku, jejíž svit lze programově ovládat. Před každým použití jej musíme správně nakonfigurovat a zajistit tak bezproblémový chod. Snímané hodnoty lze zpracovávat ve dvou režimech. První je klasický a druhý ve formátu RAW.
Rozcestník
- Nastavení senzoru
- Generování světla LED diodou
- Nastavení intenzity světla v procentech
- Využití hodnoty intenzity světla v RAW
Nastavení senzoru
Ještě než začneme v programovacím prostředí RobotC pracovat se světelným senzorem, je nutné ho nakonfigurovat. Zápis konfigurace je uveden níže. Skládá se z klíčového slova #pragma a příkazu config(), který obsahuje čtyři parametry. První parametr značí, o jaký druh zařízení se jedná. V našem případě je to senzor (Sensor). Další parametr označuje, do jakého portu řídící jednotky je senzor připojen (S2 = port 2). Následuje volitelný název senzoru (svetelny). Posledním parametrem je druh senzoru (sensorLightActive = světelný senzor). Tato deklarace je v úvodu každého programu, kde budeme pracovat se senzory nezbytná.
#pragma config(Sensor, S2, svetelny, sensorLightActive) // Kod je automaticky generovan pruvodcem konfiguraci RobotC.
Poznámka: Konfiguraci lze provést ručním zapsáním deklarace v příkladu nebo v menu programovacího prostředí RobotC. Postup konfigurace je uveden v kapitole Konfigurace motorů a senzorů.
Generování světla žárovkou
Snímání intenzity světla světelným senzorem může být doprovázeno světlem z žárovky umístěné na přední části senzoru. Parametr, který vyjadřuje činnost či nečinnost žárovky se nazývá sensorLightActive nebo sensorLightInactive. Tento parametr se používá ve spojení s příkazem SensorType[], u kterého je nutné v závorce zadat název daného senzoru, který jsme si nadefinovali v úvodu programu.
SensorType[Svetelny] = sensorLightActive; // LED dioda senzoru generuje po celou dobu chodu programu svetlo. SensorType[Svetelny] = sensorLightInactive; // LED dioda senzoru je neaktivni, negeneruje svetlo.
Nastavení hodnoty intenzity světla v procentech
Volitelná hodnota intenzity světla, která je určena k programovému zpracování a porovnání s hodnotou snímanou senzorem se nastavuje pomocí příkazu SensorValue[]. V závorce je nutné uvést název senzoru, který jsme si nadeklarovali v úvodu programu. Rozsah číselné hodnoty je zadáván pomocí porovnávacích znamének, která značí hodnotu větší, menší nebo rovnu zadané hodnotě (>, < nebo =).
SensorValue[Svetelny] < 45; // Hodnota intenzity svetla je nizsi nez 45. SensorValue[Svetelny] > 45; // Hodnota intenzity svetla je vyssi nez 45. SensorValue[Svetelny] = 45; // Hodnota intenzity svetla je rovna 45.
Využití hodnoty intenzity světla v RAW
Hodnota udávaná jako raw, je vyjádření hodnoty přečtené senzorem v čisté, neškálované podobě. Lze s ní pracovat v rozmezí od 0 do 1023. Pro vyjádření této hodnoty slouží příkaz SensorRaw[]. V závorce je nutné uvést název senzoru, který jsme si nadeklarovali v úvodu programu. Stejně jako tomu bylo u předchozího vyjádření hodnot v procentech, je možné i zde ovlivnit rozsah hodnot pomocí porovnávacích znamének.
SensorRaw[Svetelny] < 512; // Hodnota intenzity svetla v RAW je nizsi nez 512. SensorRaw[Svetelny] > 512; // Hodnota intenzity svetla v RAW je vyssi nez 512. SensorRaw[Svetelny] = 512; // Hodnota intenzity svetla v RAW je rovna 512.
EV3
Blok pro práci s barevným senzorem
Rozcestník
Umístění bloku pro práci s barevným senzorem
Programový blok Colour Sensor je umístěn v paletě Sensor.
Změna režimu
Programový blok Colour Sensor můžeme využívat ve třech základních režimech. Přepínání mezi nimi se provádí pomocí tlačítka v levé spodní části bloku (červeně zvýrazněno).
Přidání vstupního portu
Kliknutím do pole pro výběr vstupního portu v pravém horním rohu programového bloku a vybráním možnosti Wired přidáme do programového bloku nový vstupní port Port (červeně zvýrazněno).
Režimy programového bloku
Measure - Colour (měření barvy)
Režim sloužící k identifikaci barvy snímaného povrchu. Programový blok obsahuje v tomto režimu jediný výstupní port, který vrací číselnou návratovou hodnotu odpovídající zjištěné barvě.
Colour - výstupní port vracející číselnou návratovou hodnotu odpovídající zjištěné barvě. Návratové hodnoty mohou být následující:
- 0 = žádná barva
- 1 = černá
- 2 = modrá
- 3 = zelená
- 4 = žlutá
- 5 = červená
- 6 = bílá
- 7 = hnědá
Measure - Reflected Light Intensity
Režim sloužící k měření intenzity světla odraženého od aktuálně snímaného povrchu. Programový blok obsahuje v tomto režimu jediný výstupní port.
Light - návratovou hodnotou výstupního portu je číselná hodnota odpovídající intenzitě odráženého světla snímaného povrchu.
Measure - Ambient Light Intensity
Režim sloužící k měření intenzity světla v okolí. Programový blok obsahuje v tomto režimu jediný výstupní port.
Light - návratovou hodnotou výstupního portu je číselná hodnota odpovídající intenzitě světla snímaného z okolního prostředí.
Compare - Colour
Režim sloužící k ověření, zda barva snímaného povrchu odpovídá zadané/ým barvě/ám. Programový blok obsahuje v tomto režimu jeden vstupní a dva výstupní porty.
Set of Colours - vstupní port sloužící k zadání jedné či více barev. Při snímání se bude zjišťovat, zda snímaný povrch odpovídá zadané barvě/ám.
Compare Result - výstupní port vracející logickou návratovou hodnotu podle toho, zda byla zadaná barva/y detekována/y (True) nebo nikoliv (False).
Colour - výstupní port vracející číselnou návratovou hodnotu odpovídající zjištěné barvě.
Compare - Reflected Light Intensity
Režim sloužící k porování zjištěné intenzity odraženého světla se zadanou prahovou hodnotou. Programový blok obsahuje v tomto režimu dva vstupní a dva výstupní porty.
Compare Type - výběr způsobu porovnání zjištěné hodnoty s prahovou. Vybíráme, zda chceme zjistit, jestli je snímaná hodnota menší, větší nebo rovna prahové.
Threshold Value - prahová hodnota, s kterou se porovnává intenzita odraženého světla zjištěná senzorem.
Compare Result - výstupní port vracející logickou návratovou hodnotu v závislosti na tom, zda zjištěná hodnota byla v námi požadované intenzitě vůči prahové (True) či nikoliv (False).
Light - návratovou hodnotou výstupního portu je číselná hodnota odpovídající intenzitě světla odraženého od snímaného povrchu.
Compare - Ambient Light Intensity
Režim sloužící k porování zjištěné intenzity světla v okolí se zadanou prahovou hodnotou. Programový blok obsahuje v tomto režimu dva vstupní a dva výstupní porty.
Compare Type - výběr způsobu porovnání zjištěné hodnoty s prahovou. Vybíráme, zda chceme zjistit, jestli je snímaná hodnota menší, větší nebo rovna prahové.
Threshold Value - prahová hodnota, s kterou se porovnává intenzita snímaného světla z okolí zjištěná senzorem.
Compare Result - výstupní port vracející logickou návratovou hodnotu v závislosti na tom, zda zjištěná hodnota byla v námi požadované intenzitě vůči prahové (True) či nikoliv (False).
Light - návratovou hodnotou výstupního portu je číselná hodnota odpovídající intenzitě snímaného světla v okolí senzoru.
Calibrate Reflected Light Intensity - Minimum
Režim sloužící pro kalibraci senzoru, díky kterému nastavíme prahovou hodnotu, která bude senzorem dále vyhodnocována jako minimální a bude tedy označována jako 0. Programový blok v tomto režimu obsahuje jeden vstupní port.
Value - hodnota zadávaná při kalibraci senzoru. Dále bude při snímání chápána jako minimum.
Calibrate Reflected Light Intensity - Maximum
Režim sloužící pro kalibraci senzoru, díky kterému nastavíme prahovou hodnotu, která bude senzorem dále vyhodnocována jako maximální a bude tedy označována jako 100. Programový blok v tomto režimu obsahuje jeden vstupní port.
Value - hodnota zadávaná při kalibraci senzoru. Dále bude při snímání chápána jako maximum.
Calibrate Reflected Light Intensity - Reset
Režim sloužící ke zrušení všech změn provedených při kalibraci a tudíž navrácení senzoru opět do výchozího nastavení.