In een goed programma moet de Arduino keuzes kunnen maken op basis van sensorwaarden. Dit doen we met condities zoals `if`, `else if` en `else`. Deze structuur bepaalt welke acties de robot uitvoert, afhankelijk van of de lijnsensor bijvoorbeeld wel of geen zwart detecteert.
In dit deel leggen we uit:
Met deze techniek kan je robot soepel reageren op de lijn, bochten herkennen en zelfs kruispunten afhandelen!
Zonder condities zou de robot maar één ding kunnen doen, ongeacht de sensorinput.
Met `if/else` wordt de code flexibel en intelligent.
Een conditie wordt in een NS-diagram weergegeven als een driehoekig splitsingsblok, waarbij:
Als OUT1 van onze line follower sensor een donkere achtergrond detecteert, dan moet de gele LED branden, en de groene en rode LED niet. Detecteert geen donkere achtergrond, dan moet dit omgekeerd zijn.
Een conditie bestaat uit een test waarbij je twee waarden met elkaar vergelijkt. Hiervoor gebruik je relationele operatoren, die bepalen of een bepaalde voorwaarde waar (`true`) of onwaar (`false`) is.
De meeste relationele operatoren zijn intuïtief:
Maar twee operatoren vragen wat extra uitleg:
De vergelijking geeft altijd een **boolean** terug:

Logische operatorenMet logische operatoren kan je verschillende condities combineren tot één conditie. Dit zorgt voor een compactere en leesbaardere code. |
|
|---|---|
|
Voorbeeld: Wanneer x groter is dan 5 of kleiner is dan 3, dan is GPIO3 hoog, anders is GPIO3 laag. Je kan dit doen door de 2 condities apart te gaan controleren. Eerst controleer je of x groter is dan 5. Is dit, dan maak je GPIO3 hoog. Als x niet groter is dan 5, dan kan het wel zijn dat x kleiner is dan 3, en dan moet GPIO3 ook hoog zijn. Je kan dit ook samenvoegen tot één conditie.
Hoe je deze, en andere combinaties kan verwezenlijken zie je in de verdiepingspagina die je kan bereiken door op het icoontje te klikken. |
Simulatie opdracht |
|
|---|---|
|
Classes => Maze Runner Online => Op weg naar de start! => Conditie oefening
|
De keuze die ons voertuig moet maken is of hij rechtdoor rijdt of naar links of rechts moeten draaien. Die beslissing zal afhangen van de conditie van de sensoren:
Ziet de linker sensor boven de lijn, dan moet het voertuig naar links draaien.
Ziet de rechter sensor boven de lijn, dan moet het voertuig naar rechts draaien.
Geen sensor boven de lijn, dan moet hij rechtdoor rijden.
Dit gaan we moeten in een algoritme steken.
We beginnen met de eerste conditie: linker sensor boven de lijn
Als de linker sensor boven de lijn is dan moet het voertuig naar liinks draaien
Anders, als de linker sensor niet boven de lijn is, dan gaan we de tweede conditie controleren: rechter sensor boven de lijn
Als de rechter sensor boven de lijn is dan moet het voertuig naar liinks draaien
Anders, als ook de rechter sensor niet boven de lijn is, dan zijn beide sensoren niet boven de lijn en moet het voertuig rechtdoor rijden
Op de simulatie van de lijnsensor zijn ook 3 LEDjes aangesloten die aangeven of een bepaalde uitgang hoog (LEDje aan) of laag is (LEDje uit)