Eigen functies
We gebruikten reeds een aantal ingebouwde Arduino functies: pinMode(), digitalWrite(), delay(), Serial.print(), analogRead(), digitalRead(), ...
Een overzicht van alle ingebouwde Arduino functies vind je op de Arduino Language Reference website.
Echter, in sommige gevallen is het nuttig om eigen functies te schrijven.
Functies dienen, net zoals variabelen, om complexere code minder omslachtig en slordig te maken.
Elke reeks handelingen die meermaals wordt uitgevoerd, kan je in een functie schrijven. In de plaats van telkens alle handelingen te herhalen, kan je dan simpelweg de functie uitvoeren.
Eigen functies plaatsen we na het setup() en voor het loop() gedeelte.
Stel dat we een led elke seconde willen laten pinken en daarna elke 2 seconden.
De functie waarbij de led elke seconde knippert ziet er zo uit. Je plaatst ze boven void loop() in de code:
void blinkEenSec() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
In de void loop kan je de gecreëerde functie als volgt aanroepen:
void loop() {
blinkEenSec();
Op deze manier wordt de functie herhaaldelijk uitgevoerd (want het maakt deel uit van de loop()).
Opdracht 1
Vertrek van de Blink code of start een nieuwe code waarbij je twee eigen functies aanmaakt. De functie blinkEenSec(), en de functie blinkTweeSec()
Roep de functies aan in de loop() om een led afwisselend 5 keer elke seconde te laten pinken en 5 keer elke 2 seconden.
Deel 1: declaratie en initialisatie
Werk verder met de interne led op pin 13. Declareer en initieer de variabele.
Mogelijk oplossing
De code voor de functie blinkEenSec() en de functie blinkTweeSec() zijn bijna gelijk. Enkel de tijd die in de delay() functie wordt meegegeven is anders.
Deze tijd zouden we als parameter in onze eigen functie kunnen meegeven.
De functie wordt bepaald door één parameter, namelijk de tijd in millisecondendie die bepaalt hoe lang de led aan en uit blijft:
void blinkTijd(int tijd) {
digitalWrite(LED_BUILTIN, HIGH);
delay(tijd);
digitalWrite(LED_BUILTIN, LOW);
delay(tijd);
}
Opdracht 2
Vertrek van de code uit opdracht 1 of start een nieuwe code waarbij je één eigen functie aanmaakt, blinkTijd(int tijd).
Roep de functie aan in de loop() om een led afwisselend 5 keer elke seconde te laten pinken en 5 keer elke 2 seconden.
Deel 1: declaratie en initialisatie
Werk verder met de interne led op pin 13. Declareer en initieer de variabele.
Mogelijk oplossing
Deel 2: setup
Met pinMode() zet je elke led als OUTPUT.
Maak hier de functie aan, gebruik makend van de parameter.
Mogelijk oplossing