KURZ: Senzor akcelerace

KAPITOLY

Senzor akcelerace neboli zrychlení umožňuje sledovat, s jakým zrychlením se pohybuje náš robot. Jeho pomocí se také sleduje chování robota a pomocí získaných hodnot se dají eliminovat nežádoucí pohyby, které by mohly ohrozit robotovu stabilitu. Zrychlení je měřeno ve třech osách. Jedná se o osu x, y a z. Osa x je osa souběžná s tělem senzoru. Osa y označuje směr z jedné boční strany senzoru na druhou. Tato osa je k dispozici spíše jako výstupní hodnota. Osa z je stejně jako osa y výstupní hodnota a vyjadřuje měření ve směru od spodní hrany senzoru k horní. Zrychlení se pomocí senzoru akcelerace dá měřit v rozsahu od -2G do +2G. Měření zrychlení není jedinou funkcí senzoru. Dokáže také měřit náklon robota.

PRÁCE Se senzorem akcelerace V PROGRAMOVACÍCH PROSTŘEDÍCH

NXT-G

Blok pro ovládání senzoru akcelerace

Rozcestník


UMÍSTĚNÍ BLOKU

Senzor akcelerace je v programovacím prostředí NXT-G řízen blokem AccelerationSensorDragged Acceleration Sensor. Tento blok není součástí základní instalace. Pro jeho použití je nutné jej do prostředí importovat. Návod k importu rozšiřujících modulů naleznete v kapitole Instalace rozšiřujících modulů.

 
Acceleration sensor block

 

POPIS BLOKU

Programový blok senzoru akcelerace obsahuje celkem sedm konektorů pro propojení s dalším bloky.

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

Number x - výstup vyjadřující hodnotu naměřenou ve směru osy x.

Number y - výstup vyjadřující hodnotu naměřenou ve směru osy y.

z z - výstup vyjadřující hodnotu naměřenou ve směru osy z.

Boolean Yes / Nohodnota logického datového typu vyjadřující výsledek porovnání zrychlení na ose x.

TriggerPoint Trigger Pointv programovacím prostředí nastavená hodnota zrychlení určená k porovnání s hodnotou naměřenou senzorem.

GreaterLess Greater / Less - vstupně výstupní konektor určující znaménko k porovnání hodnot.

 

PARAMETRY BLOKU

Acceleration sensor

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

Compare: část bloku, ve které je možné pomocí tažítka nastavit hodnotu pro osu x určenou k porovnání s hodnotou naměřenou senzorem. Rozsah hodnot je zde možné volit od -400 do +400. Hodnotu je možné nastavit buďto pomocí tažítka nebo přímým zadáním hodnoty do menšího bloku. V rozbalovacím menu jsou k dispozici znaménka určená pro porovnání.

RobotC

Příkazy pro ovládání senzoru akcelerace

Rozcestník


Nastavení senzoru

Před započetím práce se senzorem akcelerace je nutné jej v programovacím prostředí RobotC nadeklarovat. Zápis deklarace se skládá z klíčového slova #pragma a příkazu config(), který obsahuje čtyři parametry. Prvním parametrem je rozlišeno, zda se jedná o deklaraci motoru či senzoru (v našem případě se jedná o senzor). Druhý parametr udává, ke kterému vstupnímu portu (S1 - S4) je senzor připojen (v příkladu port číslo 1). Třetí parametr je volitelný. Jedná se o název senzoru v deklaraci a je zadáván uživatelem. Poslední částí deklarace je typ senzoru (sensorI2CHiTechnicAccel = označení senzoru akcelerace).

 
#pragma config(Sensor, S1,     Akceleracni,    sensorI2CHiTechnicAccel) // Kod je automaticky generovan pruvodcem deklaraci RobotC.
 

Poznámka: Deklaraci lze provést ručním zapsáním v příkladu nebo v menu programovacího prostředí RobotC. Postup je uveden v kapitole Deklarace motorů a senzorů.


nastavení typu senzoru

Druhou možností deklarace senzoru je definování pomocí  příkazu SensorType[]. Parametrem v závorce je volitelný název senzoru, který je předem definován pro třídu tSensors, která pro programovací prostředí RobotC definuje rozšiřující moduly. K nadefinovanému názvu senzoru poté přiřadíme konkrétní typ senzoru podle jeho označení pro RobotC (např. sensorI2CHiTechnicAccel = označení senzoru akcelerace).

Tento typ deklarace je doporučeno provádět zkušenějším uživatelům. Začátečníkům se doporučuje deklarovat moduly pomocí Deklarace motorů a senzorů v horní liště menu.

 
tSensors akceleracni;
SensorType[akceleracni] = sensorI2CHiTechnicAccel;
 

Práce s hodnotou snímanou senzorem

Během vyhodnocování nebo porovnávání hodnot snímaných senzorem a fixních hodnot zadaných uživatelem, budeme využívat příkaz k práci s touto hodnotou. V programovacím prostředí RobotC se k této činnosti používá příkaz SensorValue[]. Parametrem tohoto příkazu je předem definovaný název senzoru. Tomuto příkazu může být poté přiřazena určitá hodnota k porovnání s hodnotou ze senzoru.

 
SensorValue[sensorAccel] > 60; // Nastaveni hodnoty senzoru, ktera ma byt porovnana s urcitou fixne zadanou hodnotou.
 

V programovacím prostředí RobotC je připravena vývojová knihovna, která nese název AdvancedSensors.c. Slouží k tomu, abychom mohli provádět s rozšiřujícími senzory pokročilejší operace. V jejím těle jsou předdefinovány některé výpočtové operace, které nám umožní získat jednoduše data z rozšiřujících senzorů. Zavolání tohoto souboru provedeme následovně:

 
#include "AdvancedSensors.c"
 

Pro senzor akcelerace je zde nadefinována funkce getAccel(), která umožňuje získat hodnotu zrychlení v osách x, y a z. Zavoláním funkce getAccel(), která má čtyři parametry - název senzoru a tři hodnoty zjišťujeme, jaké jsou aktuálně snímané hodnoty senzorem. Celý zápis můžete vidět níže.

 
 int X;
 int Y;
 int Z;
 
 getAccel(akceleracni, X, Y, Z);
 

1 1 1 1 1 1 1 1 1 1 Hodnocení 0.00 (0 hodnocení)

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