Functies blinkKort() en blinkLang()
We kunnen nu alle andere letters ook gaan uittypen op deze manier. Maar dat wordt wel slordig en onoverzichtelijk. Dit lossen we anders op. We gaan functies maken.
In de plaats van ellenlange code om het lampje aan en uit te zetten, zullen we een functie maken die meteen kort of lang kan pinken.
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.
Voor de letter H hebben we korte pinkjes nodig. We schrijven een functie die korte pinkjes maakt.
Schrijf vlak boven void loop() de volgende code:
void blinkKort() {
digitalWrite(LED_BUILTIN, HIGH);
delay(wachttijdKort);
digitalWrite(LED_BUILTIN, LOW);
delay(wachttijdKort);
}
Dat is onze eerste functie. Tussen de accolades {} van de functie zie je de code staan die we gebruiken om 1 keer kort te pinken.
Opdracht 1
Gebruik de functie blinkKort() om de letter H te laten pinken. De letter H: kort kort kort kort.
- Vervang de code in void loop()
- Vergeet op het einde de spatie tussen twee letters niet. Denk hier goed over na want in de functie blinkKort() eindig je met een korte wachttijd.
- Test je code.
Mogelijk oplossing
// Deel 1: declaratie en initialisatie
int wachttijdKort = 500;
// Eigen functie
void blinkKort() {
digitalWrite(LED_BUILTIN, HIGH);
delay(wachttijdKort);
digitalWrite(LED_BUILTIN, LOW);
delay(wachttijdKort);
}
// Deel 2: setup
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
// Deel 3: loop
void loop() {
blinkKort(); // De letter H: kort kort kort kort
blinkKort();
blinkKort();
blinkKort();
delay(2*wachttijdKort); // Vanuit de functie blinkKort eindig je met een korte wachttijd. Hier moeten dus nog twee korte wachttijden bij.
}
We gaan deze sketch later opnieuw gebruiken. We maken daarvoor een kopie van de sketch.
- In je sketch ga je naar file > Save as.. > Kies een folder op je computer.
- Noem je Sketch “blinkKort_jenaam”.
- Doe nadien terug je Hello_World-sketch open om hierin verder te werken!
- Ga naar Tinkercad > circuits. Bij je circuits staat je Hello_World programma.
- In de rechterbovenhoek van je Blink, kan je op een tandwieltje klikken. Selecteer "duplicate".
- De kopie opent automatisch.
- Verander de naam van “Copy of Hello_World” naar “blinkKort”.
- Ga nadien terug naar je Hello_World programma om hierin verder te werken!
Bekijk de instructies voor Tinkercad in dit filmpje:
Opdracht 2
De code in void loop() is door het gebruik van de functie blinkKort() korter en overzichtelijker. Morse code bestaat uit korte en lange tekens, schrijf daarom nu de functie blinkLang() en gebruik beide functies om de letter L te laten pinken.
De letter L: kort lang kort kort.
- Neem hiervoor de blinkKort() functie over en pas waar nodig aan.
- Voeg de blinkLang() functie toe aan de sectie functies.
- Maak een variabele wachttijdLang aan.
- Codeer de letter L.
Mogelijk oplossing
// Deel 1: declaratie en initialisatie
int wachttijdKort = 500;
int wachttijdLang = 3*wachttijdKort;
// Eigen functies
void blinkKort() {
digitalWrite(LED_BUILTIN, HIGH);
delay(wachttijdKort);
digitalWrite(LED_BUILTIN, LOW);
delay(wachttijdKort);
}
void blinkLang() {
digitalWrite(LED_BUILTIN, HIGH);
delay(wachttijdLang);
digitalWrite(LED_BUILTIN, LOW);
delay(wachttijdKort);
}
// Deel 2: setup
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
// Deel 3: loop
void loop() {
blinkKort(); // De letter L: kort lang kort kort
blinkLang();
blinkKort();
blinkKort();
delay(2*wachttijdKort);
}