User Manual

85
Příklad:
if(getBumperLeft() && getBumperRight()) // oba narazniky...
escape(); // zde definujte vlastni funkci tj. coufnuti a otoceni
else if(getBumperLeft()) // levy...
escapeLeft(); // opet couvani a otaceni doprava
else if(getBumperRight()) // pravy...
escapeRight(); // opet couvani a otaceni doleva
mSleep(50); // rychlost kontroly narazniku 20 krat za sekundu (20Hz)...
Stisknu nárazníku rozsvítí LED 6 a 3. Je to záměr a nelze odstranit. Nárazníky se ak
neaktivují příliš často, tae s to příliš neruší.
Na číslicové výstupy se čtyřmi zbývajícími LED můžeme připojit další
snímače. Přes tranzistorové pole se také mohou spínat větší zátěže, jako jsou
LED nebo motory. To je pouze krát čet věcí, které mohou být, pomocí
příslušných funkcí, ovládány pomocí těchto čtyř portů, ale pamatujte na
existující funkce pro LED a razníky.
Pozor: porty mikroprocesoru vždy chraňte rezistorem pro omezení proudu s hodnotou
minimálně 470Ω, který vložíte mezi vývod portu a snímač nebo spínač!
Během bootovací fáze umňuje RP6 zhasnout LED. To je užiteč pro potlačení aktivity portu
během probíhajícího bootování, zejména pokud je na port s LED připojeno další zařízení.
První byte vnitřní EEPROM (adresa 0) je vyhrazen pro ovládání režimu LED. Nepoužívejte
tento byte pro vlastní programy (přepsání tohoto byte nic nepoškodí, ale může vás znepokojit,
že se po zapnuRP6 dlouho nerozsvítí LED...).
Na robotu RP6 existuje řada věcí, které se musí neustále sledovat, pokud mají fungovat
správně. Například ACS musí vysílat IR impulsy v přesných intervalech a kontrolovat příjem.
K tomu nemůžeme použít automatickou funkci přerušení, protože obsluha přerušení musí být
co nejrychlejší. Nezbývá než opakované volání několika funkcí z hlavního programu. V dobře
navrženém programu se bude zdát, že tyto úlohy běží na pozadí.
V této kapitole probereme echny funkce pro ACS a podobné systémy a poskytneme další
podrobnosti. Předpokláme ak, že nejjednodušší bude uvést několik podrobností, které
usnadní zvládnufunkce nárazníků a jejich implementaci v programu.
Nyní, kdřešíme úlohy na pozadí, mohou vedle velkých věcí běžet nějaké další (menší) úlohy
například sledování razníků. Je to jednoduc a rychlá úloha, kterou můžete provádět
v hlavní smyčce. Při automatické kontrole nárazníků můžete v hlavní smyčce opakovaně volat
tuto funkci:
void task_Bumpers(void)
(v předchozí kapitole byly probrány podrobnosti ovládání). Tato funkce bude automaticky,
v intervalu 50ms, kontrolovat stav snímačů razníků (stisknutý nebo ne) a jejich aktuální stav
zapíše do proměnných
bumper_left a bumper_right
Tyto proměnné můžete použít kdekoliv v programu tj. v podmíněných příkazech, cyklech atd.
nebo je přiřazovat do dalších proměnných.