Arduino Hello World
logo

Arduino Hello World

Module 1 Module 2 Module 3 Module 4 Module 5 Module 6 Module 7

   Selectie




Bij een selectie- of keuzestructuur kiest de Arduino wat hij doet op basis van een voorwaarde. Om deze voorwaarde te programmeren gebruiken we een specifieke functie: if()

Als de voorwaarde voldaan is (True) wordt een andere weg gevolgd dan wanneer die niet voldaan is (False).
De beslissingsblok wordt in het stroomdiagram als een ruit afgebeeld, de procesblok als een rechthoek.

if()

Lees de documentatie van de if-functie.

De functie heeft één parameter namelijk de voorwaarde. Wanneer aan de voorwaarde voldaan is, wordt de daaropvolgende actie eenmalig uitgevoerd.
Indien er niet aan de voorwaarde voldaan is, dan slaat de computer de if-functie over.

if(voorwaarde) {    // Hier ga je meestal na of iets groter, kleiner of gelijk is aan iets
  proces;           // Wat er moet gebeuren als de voorwaarde voldaan is.
}

Even een voorbeeld:

if(lichtwaarde < drempelwaarde) {   // wanneer de lichtwaarde kleiner wordt dan de drempelwaarde
  digitalWrite(LED_BUILTIN, HIGH);  // schakel de interne led aan
}
 
  Opdracht 1

Programmeer een buitenverlichting. Wanneer de lichtsensor (fototransistor) detecteert dat het donker wordt moet de buitenverlichting aan gaan.
Deze oefening kan je enkel uitvoeren met een fysiek Arduino bordje, wanneer je Tinkercad gebruikt programmeer dan onmiddellijk Opdracht 2 met een if...else functie.

 
  • Bouw volgende schakeling met fototransistor en weerstand.
  • Gebruik de interne LED van je Arduino.
  • Maak een variable voor de sensorPin, de lichtwaarde en drempelwaarde aan.
  • Stel de sensorPin als INPUT in en de interne led als OUTPUT.
  • Lees de analoge sensorwaarde in via analogRead(pin)
  • Print de gemeten sensorwaarde om de drempelwaarde te kunnen bepalen
  • Gebruik een if() functie en denk na over de voorwaarde


Probeer nadat je de lichtsensor hebt afgedekt, er weer licht op te laten schijnen. Gaat de led uit? Om dit op te lossen kiezen we een if... else functie.
TIP: Wil je je code nog eens opnieuw testen, druk dan op de Reset knop op je bordje. Op deze manier wordt de code vanaf het begin opnieuw doorlopen.



if...else()

Als de voorwaarde voldaan is (True) wordt een andere weg gevolgd dan wanneer die niet voldaan is (False).
Zowel bij het True als False pad zijn er procesblokken. De beslissingsblok wordt in het stroomdiagram als een ruit afgebeeld, de procesblok als een rechthoek.

Lees de documentatie van de if...else-functie.

De if...else functie is een uitbreiding van de if-functie waarbij je nu ook aangeeft wat er moet gebeuren wanneer er niet, of niet meer aan de voorwaarde voldaan is.

if(voorwaarde) {    // Hier ga je meestal na of iets groter, kleiner of gelijk is aan iets
  proces indien voldaan;  
}
else {    
  proces indien niet voldaan aan de voorwaarde;  
}

Even een voorbeeld:

if(lichtwaarde < drempelwaarde) {  // wanneer de lichtwaarde kleiner wordt dan de drempelwaarde
  digitalWrite(LED_BUILTIN, HIGH);  // schakel de interne led aan
}
else {                             // indien niet
  digitalWrite(LED_BUILTIN, LOW);  // schakel de interne led uit
}
 
  Opdracht 2

Pas Opdracht 1 aan zodat je gebruik maakt van een if...else functie.

toon oplossing knop


In de volgende opdracht programmeren we een veelvoorkomend probleem. We willen aan de hand van een drukknop een led aan- en uitschakelen.

  Opdracht 3

Bouw onderstaande schakeling en zorg ervoor dat de interne LED aan en uit gaat wanneer je op de drukknop drukt (pin D2).


Probeer de code zelf te schrijven.

  • Denk na over de variabelen die je nodig hebt.
  • met pinMode definieer je ze als INPUT of OUTPUT
  • de status van de drukknop lees je in via de functie digitalRead()
  • de voorwaarde 'als de drukknop is ingedrukt, dan mag de LED aan', codeer je als volgt:



De oplossing vind je bij de Arduino examples. Ga naar File > Examples > 02.Digital > Button.

De weerstand in bovenstaande schakeling noemen ze een Pull Down weerstand. Het zorgt ervoor dat wanneer de drukknop niet is ingedrukt, de pin (D2) 0V leest. Mocht de weerstand, die verbonden is met de ground (0V), er niet zijn dan is de ingang 'zwevend' en kunnen er willekeurige waardes gemeten worden. Voor deze toepassing is een weerstand van 10 kOhm geschikt.

Als je de weerstand en de drukknop in bovenstaande schakeling omwisselt dan wordt het een Pull Up weerstand. De pin (D2) zal altijd een waarde van 5V meten en enkel wanneer de drukknop wordt ingedrukt wordt dit 0V.