Skip to main content

Lekce 3: Podmíněné příkazy

V předchozí lekci jste se naučili, jak v projektu použít data z optického senzoru k seřazení disku podle barvy. V této lekci navážete na to, co jste se naučili, a prozkoumáte možnosti ve VEXcode, které projektu umožňují činit rozhodnutí bez ohledu na to, jakou barvu detekuje optický senzor. Dozvíte se o: 

  • Proč je optimalizace rozhodování důležitá v průmyslovém prostředí.
  • Rozdíl mezi blokyIf then,If then elseElse if.

Kontrola více podmínek

V předchozí lekci jste vytvořili projekt, který by dokázal seřadit disk podle barvy na červenou nebo zelenou paletu. I když je to efektivní, projekt mohl třídit pouze jeden disk najednou. V továrním prostředí je třeba mnoho předmětů opakovaně třídit a paletizovat. Aby to 6osé rameno fungovalo efektivně, musí být schopno opakovaně rozhodovat o tom, jak objekty přesunout, nebo zda je nutný lidský zásah. Vezměte si kostky, které jste přesunuli v úvodu do kurzu 6osé rameno.Detailní záběr na 6osé rameno držící modrou krychli nad optickým senzorem.

Co kdyby se v nakládací zóně nacházela modrá kostka? Co by se stalo v projektu z předchozí lekce? V průmyslovém prostředí je třeba zvážit všechny možné podmínky. Pokud se mezi tříděné předměty přimíchá i pochybný předmět, bude pravděpodobně nutný lidský zásah, aby se zajistilo, že pracovní buňka a pracovníci v jejím okolí zůstanou v bezpečí a budou efektivně fungovat.

SekvenčníPokud pakbloky

V předchozí lekci jste použili dva blokyIf thenza sebou k postupné kontrole dvou samostatných podmínek, čímž jste v rámci projektu v podstatě položili dvě otázky.

Příklad projektu VEXcode, který by splnil úkol z předchozí lekce. Červeně je zvýrazněn komentář s textem Přesuňte disk na správnou paletu a následující dva bloky If then pod tímto komentářem. Bloky v červeném zvýrazněném rámečku znějí takto: pokud optický snímač 5 detekuje červenou barvu, přesuňte rameno 10 do polohy x 169 y 150 z 100, a pokud optický snímač 5 detekuje zelenou barvu, přesuňte rameno 10 do polohy x 172 y 1 z 100.

Nejprve Je objekt červený?, a potéJe objekt zelený?. Každá podmínka je kontrolována při každém spuštění projektu, bez ohledu na to, co detekuje optický senzor. I když tato struktura umožňovala efektivně třídit disky po jednom, není to nejefektivnější způsob, jak toho dosáhnout. Červený disk by se dal roztřídit, ale optický senzor by také dokázal detekovat zelený z něčeho jiného v prostředí a naopak. Také se nebere v úvahu objekt, který není ani červený, ani zelený, jako například neočekávaný objekt, který by mohl způsobit bezpečnostní problém.

Obrázky toku projektu

V celé této lekci jsou sdíleny obrázky vysvětlující postup projektů VEXcode. Tyto obrázky si můžete znovu vytvořit ve svém technickém sešitě a také během procházení lekce. 

Používejte nástroje v Google Slides nebo Microsoft PowerPointu, jako jsou šipky, rámečky nebo vývojové diagramy, k vytvoření vizualizací, které vám v poznámkovém bloku nejlépe vyhovují.

Otevřená sada nástrojů Čáry v Google Slides. Panel nástrojů zobrazuje možnosti pro Čáru, Šipku, Kolenní spojku, Zakřivenou spojku, Křivku, Loměnou čáru a Čmáranici.

 

SekvenčníPokud pak jinakbloky

Existuje jiný blok, který by nám umožnil kontrolovat jak červené, tak zelené podmínky a zohledňovat různé barvy. BlokIf then elseje blok typu C, který spouští bloky uvnitř větveifnebo větveelsena základě nahlášené booleovské hodnoty.

Úryvek kódu používající blok if then else s červenými a zelenými šipkami pro označení průběhu projektu. Projekt zní: přesuňte disk na správnou paletu, pokud optické čidlo 5 detekuje červenou, přesuňte rameno 10 do polohy x 169 y 150 z 100, jinak nastavte signální věž 6 na modrou a blikající barvu, nastavte rameno 10 do řízeného zastavení. Všimněte si, že dva příkazy následující za else se nacházejí ve větvi else bloku if then else. Zelená šipka a text s optickým čtením detekují červené skutečné body od If then k bloku přesunu na pozici. Červená šipka s optickým čtením textu detekuje červené falešné body od větve if then k věžovému bloku signálu set na začátku větve else.

Po spuštění větve ifnebo větve elsese projekt přesune na další blok v zásobníku. Pro lepší viditelnost větví lze také zobrazit tok projektu s blokyIf then else.

Stejný postup projektu jako předtím, ale s oddělenými větvemi if a else pro přehlednost. Vlevo je červený text s nápisem „červená nebyla detekována, falešné jinak“ a šipka směřující k nastavené signalizační věži a nastaveným řízeným zastavovacím blokům. Vpravo je červený text „detected true“ (detekováno jako pravda) a poté šipka ukazující na blok „move to position“ (přesunout na pozici). Vlevo i vpravo mají oranžové šipky pod sebou, které označují, že by v projektu pokračovaly pod blokem if then else.

Všimněte si, že v těchto příkladech se větev elsepoužívá k ošetření podmínky, že objekt není ani červený, ani zelený. V takovém případě by byl nutný lidský zásah. Dříve jste se dozvěděli, že modré světlo na signální věži se používá k signalizaci potřeby lidského zásahu. Řízené zastavení navíc zastaví pohyb 6osého ramene, aby byla zajištěna bezpečnost osob a strojů. Do větvejinaklze přidat blok Nastavení signální věžea blokNastavení zastavení řízení, takže objekt, který nebyl červený nebo zelený, by spustil tyto bezpečnostní funkce.

Obsah větve else bloku If then else volaného červeným rámečkem. To zahrnuje blok věže nastavené signalizace a blok zastavení ovládaný ramenem.

Dosavadní obrázky ukazují pouze to, jak se vypořádat s červeným objektem. Další If then elseje potřeba pro kontrolu stavu, zda je objekt zelený.

Stejný projekt vexcode s druhým blokem if then else přidaným přímo za prvním. Tento blok a bloky v něm obsažené čtou: pokud optický snímač 5 detekuje zelenou barvu, přesuňte rameno 10 do polohy x 172 y 1 z 100, jinak nastavte signální věž 6 na modrou a blikající barvu, nastavte rameno 10 do polohy zastaveno.

Zamysleme se nad průběhem projektu s touto strukturou. Pokaždé, když je projekt spuštěn, se spustí více větví, bez ohledu na to, jakou barvu detekuje optický senzor.

Promítací obraz toku pro dva bloky if then else. Horní polovina zobrazuje stejný tok projektu jako dříve, poté je vidět oranžová šipka pohybující se od prvního bloku if then else k druhému. Druhý blok if then else má zelené šipky a po straně text: optical detects green true. Šipka ukazuje z větve if then do bloku move to position v rámci větve if then. Ze stejného bodu začíná červený text a červená šipka s textem: Optická detekce zelené falešně. Šipka ukazuje z větve if then na věžový blok set signal ve větvi else.

Představme si to na příkladu červeného disku. Pokud optický senzor detekuje červenou barvu, podmínka prvního blokuIf then elsebude hlášena jako pravdivá. Blok uvnitř větveifby se spustil a pohnul by 6osé rameno přes červenou paletu. Podmínka uvnitř druhého blokuIf then elseby se však hlásila jako nepravdivá. To znamená, že blok uvnitř své větveelseby se spustil, čímž by se 6osé rameno řízeně zastavilo a na signální věži by blikal modře. Protože by 6osé rameno bylo v řízeném zastavení, nemohly by se spustit žádné další bloky v projektu a všechny operace by se zastavily, dokud by se problém nevyřešil. 

Průběh projektu s příkladem optického senzoru detekujícího červenou barvu. Poznámky a šipky na straně projektu opticky přečtou detekci červené hodnoty true, poté se spustí blok přesunu na pozici v první větvi if then. Text níže, který zní: větev else se nespustí, protože byla spuštěna větev if then. Šipka ukazuje na druhý blok if then else. Text vedle toho zní: optický prvek detekuje zelenou hodnotu false a ukazuje červenou šipku na větev else druhého bloku if then else. Oranžová šipka ukazuje od bloku nastavení ramene pro ovládání zastavení k bloku klobouku na straně. Text níže zní: „Zastavení řízení bude spuštěno, zastaví se všechny bloky kromě těch, které jsou připojeny k bloku hat.“

I když nyní můžeme zohlednit neočekávaný objekt (jako je modrá krychle), šestiosé rameno v projektu nikdy nedosáhne bodu, kdy by uvolnilo disk na paletu. Místo postupné kontroly červené a zelené barvy existuje způsob, jak zkontrolovat, zda je objekt zelený, pouze pokud objekt není červený, a to pomocí.   

VnořenéPokud pak jinakbloky 

Každá z větví blokuIf then elsemůže přijímat další bloky C v sobě. Tomu se říká „vnoření“. To znamená, že druhý blokIf then elsemůže být vnořen do větveelseprvního bloku, takto.Stejný projekt jako výše, ale s druhým blokem if then else uvnitř větve else prvního bloku if then else. Červený rámeček je kolem druhého bloku if then else vnořeného do větve else prvního bloku if then else.

Stav optického senzoru detekujícího zelenou barvu bude nyní kontrolován pouze tehdy, když předchozí stav (optický senzor detekující červenou barvu) hlásí jako nepravdivý. Takže když optický senzor detekuje červenou barvu, spustí se pouze první větevif, která posune disk nad červenou paletu. 

Detailní pohled na projekt s blokem move to position ve větvi if then prvního bloku if then else, který je volán červeným rámečkem.

Pokud optický senzor detekuje zelenou, podmínka první větvepokud(optický senzor detekuje červenou) by hlásila chybu, a proto by se spustil větevjinak. Podmínka vnořeného bloku If then elseby se zkontrolovala, zda optický senzor detekuje zelenou. Tato podmínka by se hlásila jako pravdivá, takže by se blok uvnitř druhé větveifspustil a pohnul by diskem přes zelenou paletu. 

Pokud by optický senzor nedetekoval ani červenou, ani zelenou barvu (jako v případě zvednutí modré kostky), obě podmínky by byly hlášeny jako nepravdivé, a proto by se spustil větevelsevnořeného blokuIf then else, čímž by se spustilo řízené zastavení a upozornilo pracovníky na potřebu lidského zásahu. Tyto toky projektu lze také vizualizovat jako vývojový diagram, jako je ten zde.

Diagram vysvětlující postup projektu. Nahoře je otázka: Optická detekce červené? Zelená čára se rozvětvuje doleva a říká, že je třeba disk přesunout nad červenou paletu, a odtud dolů vede oranžová čára, která říká, že je třeba disk umístit na správnou paletu. Z původní otázky se odvíjí červená čára, která říká nepravda. Následuje další otázka: optická detekce zelené? Zelená čára vpravo opět ukazuje hodnotu true a pohybuje se nad zelenou paletou. Toto se oranžovou čarou spojuje se stejným políčkem jako druhá zelená čára, která říká, že disk umístěte na správnou paletu. Vpravo je červená čára, která označuje falešný stav a nastavuje signální věž na blikající modře a spouští řízené zastavení.

Vnořené blokyPokud pak jinaklze považovat za kaskádový seznam otázek. Zde jsou otázky následující: 

  1. Je objekt červený? 
    1. Ano? Přesuňte se přes červenou paletu a přestaňte klást otázky.
    2. Žádný? Položte další otázku. 
      1. Je objekt zelený?
        1. Ano? Přesuňte se přes zelenou paletu a přestaňte klást otázky.
        2. Žádný? Pak objekt není červený ani zelený. Změňte barvy signální věže a spusťte řízené zastavení.

Všimněte si, že otázky se kladou pouze v případě záporné odpovědi na předchozí otázku. 

I když toto zpracovává všechny podmínky, které chceme kontrolovat, existuje další blok, který bude kontrolovat podmínky stejným způsobem, ale jeho sestavení je snazší než vnořování bloků. 

Jinak pokudblok

Blok Else if umožňuje kontrolovat více podmínek v rámci stejného bloku. Každá z podmínek v tomto bloku bude kontrolována postupně, pouze pokud předchozí podmínka hlásí jako nepravdivá. Pokud jsou všechny booleovské podmínky pro větve else if splněny, budou spuštěny bloky uvnitř sekce else.

Jinak pokud je blok ve VEXcode. Tento blok čte „if then else if then else“ a má ikonu plus pro rozbalení a přidání dalších segmentů „if then else“ do bloku.

Tento blok má stejný tok projektu jako vnořené blokyIf then else, ale je snazší ho sestavit, protože není třeba bloky vnořovat. V následující lekci se dozvíte více o kódování s blokem Else if.

Ověřte si své znalosti

Než přejdete k další lekci, ujistěte se, že rozumíte konceptům v této lekci, a to zodpovězením následujících otázek ve svém technickém sešitě.

Otázky k prověření vašich znalostí > (dokument Google/ .docx / .pdf)


VyberteDalší >pro použití bloku Jinak pokudv projektu.