Arduino Hello World
logo

Arduino Hello World

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

Module 6
Uitbreiding: Blink Hello world in morse

Home Morse code Lang en kort Functies Hello World

   Functies blinkKort 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.

Oplossing // Fase 1: declaratie en initialisatie fase (wordt eenmalig doorlopen bij opstarten)
int wachttijdKort = 500;

// Functie
void blinkKort() {
  digitalWrite(LED_BUILTIN, HIGH); 
  delay(wachttijdKort); 
  digitalWrite(LED_BUILTIN, LOW); 
  delay(wachttijdKort); 
}

// Fase 2: setup fase (wordt eenmalig doorlopen bij opstarten)
void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

// Fase 3: loop fase (wordt blijvend herhaald)
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.

Arduino

  1. In je sketch ga je naar file > Save as.. > Kies een folder op je computer.
  2. Noem je Sketch “blinkKort_jenaam”.
  3. Doe nadien terug je Hello_World-sketch open om hierin verder te werken!

Tinkercad

  1. Ga naar Tinkercad > circuits. Bij je circuits staat je Hello_World programma.
  2. In de rechterbovenhoek van je Blink, kan je op een tandwieltje klikken. Selecteer "duplicate".
  3. De kopie opent automatisch.
  4. Verander de naam van “Copy of Hello_World” naar “blinkKort”.
  5. 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.

Oplossing // Fase 1: declaratie en initialisatie fase (wordt eenmalig doorlopen bij opstarten)
int wachttijdKort = 500;
int wachttijdLang = 3*wachttijdKort;

// 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); 
}

// Fase 2: setup fase (wordt eenmalig doorlopen bij opstarten)
void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

// Fase 3: loop fase (wordt blijvend herhaald)
void loop() {
  blinkKort();  // De letter L: kort lang kort kort
  blinkLang();
  blinkKort();
  blinkKort();
  delay(2*wachttijdKort);
}