KURZ: Dotykový senzor

KAPITOLY

Dotykový senzor je prostředek, který jak v robotické stavebnici LEGO MINDSTORMS NXT tak i v EV3 plní funkci tlačítka. Jeho hlavní funkcí je vracet pomocí stisku tlačítka logickou hodnotu True nebo False (Pravda nebo Nepravda). K řídící jednotce je senzor připojen kabelem do libovolného vstupního portu (1-4). Senzor je někdy také nazýván tlakový. Dokáže ovšem pouze zjišťovat, zda je tlačítko stisknuto či nikoliv. Úroveň stlačení rozeznat nedokáže.

Použití v programovacích prostředích

NXT-G

BLOK PRO práci s dotykovým senzorem

Rozcestník


Umístění bloku

Programový blok, který umožňuje nastavení a ovládání dotykového senzoru nalezneme pod názvem BumperDragged Touch Sensor v paletě icon complete Complete > Sensor Sensor

NXTG TouchSenzor rozbaleny

 

Popis bloku

Při práci s programovým blokem dotykového senzoru máme k dispozici pět následujících konektorů:

Port Port - určuje, ke kterému ze čtyř vstupních portů je senzor připojen (1-4).

Mode Action - volba značící, která ze tří možností akce dotykového senzoru je zvolena.

BooleanYes/No - hodnota logického datového typu vyjadřující výsledek porovnání.

RawValue Raw Value - udává čistou, neškálovanou hodnotu snímanou senzorem na stupnici (0-1023).

Number Logical Number - výstupní hodnota logického datového typu.

Číslo v pravém horním rohu bloku značí, ke kterému vstupnímu portu je momentálně senzor připojen. Ikonka Bumped signalizuje jakou akci aktuálně dotykový senzor detekuje (v příkladu na obrázku - stisknutí a opětovné uvolnění tlačítka).

 

Parametry bloku

NXTG TouchSenzor

Jelikož možnosti dotykového senzoru jsou značně omezené, obsahuje jeho blok pouze dva parametry.

Port: udává, ke kterému vstupnímu portu je senzor připojen (1-4).

Action: umožňuje volit ze tří možných akcí, které mohou být s tlačítkem dotykového senzoru provedeny.

Jedná se o následující možnosti:

  • Pressed Pressed - stisknutí tlačítka senzoru,
  • Released Released - uvolnění stisknutého tlačítka senzoru,
  • Bumped Bumped - stiknutí a opětovné uvolnění tlačítka senzoru.

RobotC

Příkazy pro ovládání dotykového senzoru

Při ovládání dotykového senzoru budeme nejčastěji používat příkazy pro rozlišení stisku či uvolnění tlačítka senzoru. Před každým použitím budeme muset senzor nakonfigurovat. V programovacím prostředí RobotC je také možné pracovat s hodnotou senzoru nazývanou RAW.

Rozcestník


Nastavení senzoru

Ještě než začneme v programovacím prostředí RobotC pracovat s dotykový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 (S1 = port 1). Následuje volitelný název senzoru (dotykovy). Posledním parametrem je druh senzoru (sensorTouch = dotykový senzor). Tato deklarace je v úvodu každého programu, kde budeme pracovat se senzory nezbytná.

 
#pragma config(Sensor, S1, dotykovy, sensorTouch) // 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ů.


Detekce stisku tlacitka

Při práci s dotykovým senzorem budeme nejčastěji používat příkaz, který vyjadřuje, zda je tlačítko senzoru stisknuté či není. S touto logickou hodnotou pracuje příkaz SensorValue(). Používá se v situacích, kdy v závislosti na stisku tlačítka následuje nějaká akce. Jestliže je hodnota vyjadřovaná příkazem rovna 0, jedná se o nestisknuté tlačítko. Pokud je rovna 1, jedná se o situaci, kdy je tlačítko stisknuté.

 
SensorValue(dotykovy) == 0; // Vyjadruje nestisknute tlaciko dotykoveho senzoru.
SensorValue(dotykovy) == 1; // Vyjadruje stisknuti tlacitka dotykoveho senzoru.
 
 

Možnosti využití hodnoty RAW

K vyjádření stavu tlačítka dotykového senzoru lze použít také hodnotu vyjádřenou jako RAW, což je neškálovaná hodnota přečtená senzorem. Jelikož ale dotykový senzor rozlišuje pouze dva stavy, musí být rozsah hodnoty v RAW rozdělen na polovinu. Můžeme tedy proces stisku tlačítka vyjádřit jako hodnotu větší než 512 a uvolnění tlačítka jako hodnotu menší než 512 pomocí příkazu SensorRaw[], jehož parametrem je typ název senzoru.

 
SensorRaw[dotykovy] < 512; // Hodnota ve formatu RAW mensi nez 512 vyjadruje uvolneni tlacitka.
SensorRaw[dotykovy] > 512; // Hodnota ve formatu RAW vetsi nez 512 vyjadruje stisknuti tlacitka. 
 

EV3

Blok pro práci s dotykovým senzorem

Rozcestník


Umístění bloku pro práci s dotykovým senzorem

Programový blok Touch Sensor je umístěn v paletě Sensor Sensor.

UMISTENI DOTYKOVY


Změna režimu

Programový blok Touch Sensor můžeme využívat ve dvou 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).

 TOUCH REZIMY


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 Identification 515 Port Port (červeně zvýrazněno).

TOUCH WIRED


Režimy programového bloku

Measure State (zjištění stavu)

Režim, který slouží k zjištění toho, zda je tlačítko dotykového senzoru stisknuté či nikoliv. Programový blok v tomto režimu obsahuje jeden výstupní port.

MEASURE STATE

Identification 350 Touch State - výstupní hodnotou tohoto portu je True v případě, že je tlačítko stisknuto, v opačném případě je návratová hodnota rovna False.

 

 

Compare State (testování stavu senzoru)

Režim sloužící ke zjištění, jaký úkon byl s tlačítkem senzoru proveden. Programový blok obsahuje v tomto režimu jeden vstupní a dva výstupní porty.

COMPARE STATE

Identification 351 TouchState Pressed State - vstupní port sloužící je zjištění, zda bylo tlačítko dotykového senzoru uvolněno (návratová hodnota 0), stisknuto (návratová hodnota 1) nebo stisknuto a uvolněno (návratová hodnota 2).

Identification 030 ComparisonType EqualCompare Result - výstupní port vracející logickou návratovou hodnotu podle toho, zda byl testovaný stav detekován (True) nebo nikoliv (False).

Identification 350 Touch Measured Value - výstupní port vracející návratovou hodnotu v závislosti na tom, jakého stavu senzoru bylo dosaženo (0 uvolněno, 1 stisknuto, 2 stisknuto a uvolněno).

1 1 1 1 1 1 1 1 1 1 Hodnocení 4.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.