Arduino Hello World
logo

Arduino Hello World

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

Module 7
Herhalings- en keuzestructuren

Home For... While... If... Else... Uitbreiding - Een drukknop plaatsen

   For...


Allereerst gaan we terug naar de blinkKort-functie. Doe je blinkKort-sketch/programma open.

int wachttijdKort = 500;
int wachttijdLang = 3*wachttijdKort;

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}
void blinkKort() {
  digitalWrite(LED_BUILTIN, HIGH); 
  delay(wachttijdKort); 
  digitalWrite(LED_BUILTIN, LOW); 
  delay(wachttijdKort); 
}

void loop() {
  blinkKort();
  blinkKort();
  blinkKort();
  blinkKort();
  delay(2*wachttijdKort);
}

Bekijk de instructies om "H" te pinken:

  blinkKort();   // H
  blinkKort();
  blinkKort();
  blinkKort();
  delay(2*wachttijdKort);

 

De instructie "blinkKort();" wordt 4 keer na elkaar uitgevoerd.

Dat kan beter opgelost worden.

 


Net zoals variabelen en functies, kan een herhalingsstructuur ervoor zorgen dat de code properder is.


   Opdracht 1


 

Dit is een begrensde herhaling:

Voor         een gegeven aantal keer:

        voer een instructie uit.

Ga daarna verder met de volgende instructie.

Deze methode van Nederlandse zinnen herformuleren zodanig dat ze al in de vorm van een codeertaal staan, noemt men pseudocode.

In het Engels wordt for... gebruikt in de plaats van voor...

Deze begrensde herhaling wordt de for-loop genoemd.


De incrementele operator

De herhaling zal "een gegeven aantal keer" worden uitgevoerd.

Dat "aantal keer" zullen we implementeren in de code via de incrementele operator.


   Opdracht 2


Klik op het cijfer hieronder om te achterhalen wat de incrementele operator juist doet.



   Opdracht 3

Lees op de website van Arduino welke parameters je nodig hebt om de for-loop te implementeren:

    https://www.arduino.cc/reference/en/



 

pseudocode

Voor         (initialisatie, voorwaarde, increment){

        blinkKort();

}


   Opdracht 4

Zoek op de website van Arduino bij de operatoren hoe de incrementele operator eruit ziet:

    https://www.arduino.cc/reference/en/


   Uitwerking 1

Vervang de vier herhalingen van blinkKort(); voor de letter H door deze for-loop.

Vergeet niet dat je de variabele "teller" nog moet declareren, en eventueel al initialiseren.

Probeer de code uit.

Oplossing int wachttijdKort = 500;
int wachttijdLang = 3*wachttijdKort;
int teller = 0;

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}
void blinkKort() {
  digitalWrite(LED_BUILTIN, HIGH); 
  delay(wachttijdKort); 
  digitalWrite(LED_BUILTIN, LOW); 
  delay(wachttijdKort); 
}

void loop() {
  for(teller = 0; teller < 4; teller++){
    blinkKort();
  }
  delay(2*wachttijdKort);
}



De for-loop is een begrensde herhaling.

Bij de initialisatie initialiseer je een teller, meestal de letter i, meestal op waarde 0.
Bij de voorwaarde geef je aan welke voorwaarde moet voldaan zijn om de instructie binnen de for-loop uit te voeren. Hiermee bepaal je het aantal herhalingen.
Bij het increment stijgt de teller, elke keer dat de for-loop uitgevoerd wordt, met 1.
Als er niet meer aan de voorwaarde wordt voldaan, zal er verder gegaan worden met de instructies na de for-loop.