Les 3: Voorwaardelijke uitspraken
In de vorige les hebt u geleerd hoe u gegevens van de optische sensor in een project kunt gebruiken om een schijf op kleur te sorteren. In deze les bouwt u voort op wat u hebt geleerd en onderzoekt u de opties in VEXcode waarmee het project een beslissing kan nemen, ongeacht welke kleur door de optische sensor wordt gedetecteerd. Je leert over:
- Waarom het optimaliseren van besluitvorming belangrijk is in een industriële omgeving.
- Het verschil tussen de blokkenAls dan,Als dan andersenAls dan.
Meerdere voorwaarden controleren
In de vorige les hebt u een project gemaakt waarmee u een schijf op kleur kunt sorteren: een rood of een groen palet. Hoewel dit effectief is, kan het project slechts één schijf tegelijk sorteren. In een fabriek moeten veel objecten herhaaldelijk worden gesorteerd en gepalletiseerd. Om dit effectief te kunnen doen, moet de 6-assige arm herhaaldelijk kunnen beslissen hoe de objecten moeten worden verplaatst, en of er menselijke tussenkomst nodig is. Denk eens aan de kubussen die u hebt verplaatst in de cursus Inleiding tot de 6-assige arm.
Wat als er een blauwe Cube in de laadzone zou staan? Wat zou er gebeuren in het project van de vorige les? In een industriële omgeving moeten alle mogelijke omstandigheden in overweging worden genomen. Als er een afwijkend object tussen de te sorteren objecten terechtkomt, is er waarschijnlijk menselijk ingrijpen nodig om ervoor te zorgen dat de werkcel en de werknemers eromheen veilig blijven en effectief blijven functioneren.
SequentieelAls danblokken
In de vorige les hebt u tweeAls danblokken achter elkaar gebruikt om twee afzonderlijke voorwaarden één voor één te controleren. U stelt hiermee feitelijk twee vragen binnen het project.

Eerst Is het object rood?, danIs het object groen?. Elke voorwaarde wordt elke keer dat het project wordt uitgevoerd gecontroleerd, ongeacht wat er door de optische sensor wordt gedetecteerd. Hoewel u met deze structuur effectief één schijf tegelijk kunt sorteren, is dit niet de meest efficiënte manier om dit te doen. Een rode schijf kan worden gesorteerd, maar de optische sensor kan ook iets groens detecteren van iets anders in de omgeving, en vice versa. Ook wordt er geen rekening gehouden met een object dat noch rood noch groen is, zoals een onverwacht object dat een veiligheidsprobleem zou kunnen veroorzaken.
Projectstroomafbeeldingen
In deze les worden afbeeldingen gedeeld die de stroom van VEXcode-projecten uitleggen. U kunt deze afbeeldingen opnieuw maken in uw technisch notitieboekje en tijdens het doorlopen van de les.
Gebruik hulpmiddelen in Google Presentaties of Microsoft PowerPoint, zoals pijlen, kaders of stroomdiagrammen, om visualisaties te maken die het beste bij u passen in uw notitieboek.

SequentieelAls dan andersblokken
Er is een ander blok dat gebruikt kan worden om zowel de rode als de groene omstandigheden te controleren en rekening te houden met een andere kleur. Het blokIf then elseis een C-blok dat de blokken in deif-tak of deelsetak uitvoert, op basis van de gerapporteerde Booleaanse waarde.

Nadat de ifbranch of de elsebranch is uitgevoerd, gaat het project naar het volgende blok in de stack. De projectstroom vanAls dan Andersblokken kan ook worden weergegeven om de takken beter zichtbaar te maken.

Houd er rekening mee dat in deze voorbeelden de tak anderswordt gebruikt om de voorwaarde te verwerken dat een object noch rood noch groen is. In dat geval is menselijk ingrijpen nodig. Eerder leerde u dat het blauwe licht op de signaaltoren dient om aan te geven dat er menselijk ingrijpen nodig is. Bovendien zorgt een gecontroleerde stop ervoor dat de beweging van de 6-assige arm stopt om de veiligheid van mens en machine te garanderen. Aan de takanderskunnen een blok Set signaaltorenen een blokSet bedieningsstopworden toegevoegd, zodat een object dat niet rood of niet groen is, deze veiligheidsvoorzieningen activeert.

De beelden lieten tot nu toe alleen zien hoe je met de conditie van het rode object moet omgaan. Nog een als, anders isnodig om de conditie van het object te controleren, namelijk groen.

Laten we eens nadenken over de projectstroom met deze structuur. Elke keer dat het project wordt uitgevoerd, worden er meerdere vertakkingen uitgevoerd, ongeacht welke kleur door de optische sensor wordt gedetecteerd.

Laten we dit eens met een rode schijf als voorbeeld bekijken. Als de optische sensor rood detecteert, is de conditie van het eersteIf-blok dan anderswaar. Het blok binnen dealstak zou draaien en de 6-assige arm over het rode pallet verplaatsen. De voorwaarde in het tweedeIf then elseblok zou echter als false worden gerapporteerd. Dit betekent dat het blok binnen zijnanderstak zou gaan draaien, waardoor de 6-assige arm gecontroleerd zou stoppen en blauw zou gaan knipperen op de signaaltoren. Omdat de 6-assige arm zich in een gecontroleerde stoptoestand zou bevinden, konden geen andere blokken in het project worden uitgevoerd en zouden alle bewerkingen worden stopgezet totdat het probleem was opgelost.

We kunnen nu weliswaar rekening houden met een onverwacht object (zoals een blauwe kubus), maar de 6-assige arm zal nooit het punt in het project bereiken waarop de schijf op het pallet wordt losgelaten. In plaats van de rode en groene condities één voor één te controleren, is er een manier om te controleren of een object groen isen alleenals het object niet rood is.
GenesteAls dan andersblokken
Elk van de takken van hetIf then elseblok kan andere C-blokken binnen zich opnemen. Dit wordt 'nesten' genoemd. Dit betekent dat het tweedeIf then elseblok genest kan worden binnen deelsetak van het eerste, zoals hier.
Vanaf nu wordt de conditie van de optische sensor die groen detecteert alleen gecontroleerd als de vorige conditie (optische sensor die rood detecteert) als onwaar rapporteert. Wanneer de optische sensor dus rood detecteert, wordt alleen de eerstealstak uitgevoerd, waardoor de schijf boven het rode palet komt.

Als de optische sensor groen detecteert, zou de conditie van de eerstealstak (optisch detecteert rood) onwaar rapporteren, en dus zouden deanderstakken worden uitgevoerd. De conditie van het geneste Indien dan zou andersblok gecontroleerd worden om te zien of de optische sensor groen detecteert. Die voorwaarde zou als waar worden gerapporteerd, wat betekent dat het blok in de tweedealstak zou worden uitgevoerd en de schijf over het groene palet zou worden verplaatst.
Als de optische sensor noch rood noch groen detecteert (zoals in het geval van een blauwe kubus die wordt opgepikt), worden beide omstandigheden als onwaar gerapporteerd. De takandersvan het geneste blokAls dan anderswordt uitgevoerd, waardoor een gecontroleerde stop wordt geactiveerd en werknemers worden gewaarschuwd dat er menselijk ingrijpen nodig is. Deze projectstromen kunnen ook worden gevisualiseerd als een stroomdiagram, zoals hier weergegeven.

GenesteAls dan andersblokkenkunnen worden beschouwd als een trapsgewijze lijst met vragen. De vragen zijn hier als volgt:
- Is het voorwerp rood?
- Ja? Ga aan de kant van het rode palet en stop met het stellen van vragen.
- Nee? Stel nog een vraag.
- Is het object groen?
- Ja? Ga aan de kant van het groene palet en stop met het stellen van vragen.
- Nee? Dan is het voorwerp niet rood of groen. Verander de kleuren van de signaaltoren en activeer een gecontroleerde stop.
- Is het object groen?
Let op: deze vragen worden alleen gesteld als het antwoord op de vorige vraag ontkennend is.
Hoewel hiermee alle voorwaarden die we willen controleren worden afgehandeld, is er nog een ander blok dat de voorwaarden op dezelfde manier controleert. Dit blok is echter eenvoudiger te bouwen dan het nesten van blokken.
Anders alsBlok
Met het blok Else if kunt u meerdere voorwaarden binnen hetzelfde blok controleren. Elke voorwaarde in dit blok wordt sequentieel gecontroleerd, maar alleen als de voorgaande voorwaarde als onwaar wordt gerapporteerd. Als alle Booleaanse voorwaarden voor de else if-vertakkingen onwaar zijn, worden de blokken in de else-sectie uitgevoerd.

Dit blok heeft dezelfde projectstroom als de genesteIf then elseblokken, maar is eenvoudiger te bouwen omdat er geen blokken hoeven te worden genest. In de volgende les leert u meer over coderen met het Else ifblok.
Controleer uw begrip
Voordat u doorgaat naar de volgende les, moet u ervoor zorgen dat u de concepten in deze les begrijpt door de volgende vragen in uw technische notitieboekje te beantwoorden.
Controleer uw begrip vragen > (Google Doc/ .docx / .pdf)
SelecteerVolgende >om het blok Anders alsin een project toe te passen.