Functies
Hernemen we nog even de Blink code, bekijk welke functies er allemaal in deze code gebruikt worden.
// Fase 1: declaratie en initialisatie fase (wordt eenmalig doorlopen bij opstarten)
int wachttijd = 1000;
// Fase 2: setup fase (wordt eenmalig doorlopen bij opstarten)
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
// Fase 3: loop fase (wordt blijvend herhaald)
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(wachttijd);
digitalWrite(LED_BUILTIN, LOW);
delay(wachttijd);
}
Ga met je muis over de code en otdek de functies.
pinMode()
De functie pinMode() wordt gedefinieerd door 2 parameters: pin en mode.
pinMode (pin, mode)
- Bij pin geef je het pin-numer in waarvan je de mode gaat instellen.
- Bij mode definieer je de pin als INPUT of OUTPUT pin.
digitalWrite()
digitalWrite dient om spanning over de pin hoog of laag te maken. De functie digitalWrite() wordt gedefinieerd door 2 parameters: pin en waarde.
digitalWrite (pin, waarde)
- Bij pin geef je het pin-numer in waarvan je de waarde gaat instellen.
- Bij waarde definieer je de pin als HIGH of LOW.
delay()
De delay()-functie onderbreekt tijdelijk de uitvoering van het programma.
De enige parameter die je meegeeft, is het aantal milliseconden dat de Arduino moet wachten voordat het verdergaat met de volgende instructie.
delay (tijdsduur in ms)
- Bij ms geef je het aantal milliseconden in waarmee je wilt dat het programma pauzeert.
OPGELET: Het programma stopt daar effectief. Je kan deze functie het best vergelijken met een pauzeknop van je muziekspeler. Er kunnen op dat moment geen andere taken uitgevoerd worden.
setup() en
loop() zijn speciale functies in Arduino.
Ze zijn eigen aan de structuur van een Arduino programma. Je codeert ze zelf en geeft ze daarom een data type mee namelijk void.
Dit geeft aan dat de functie enkel instructies uitvoert.
De functies pinMode(), digitalWrite() en delay() zijn ingebouwde functies bij Arduino en hoeven geen void ervoor.
Opdracht 1
Programmeer en bouw een schakeling die de twee rode lichten aan een spoorwegovergang voorstelt.
Hierbij knippert LED 1 (pin D5) afwisselend met LED 2 (pin D4).
Mogelijke oplossing
Opdracht 2
Verbind een LED met pin D6 via een weerstand. Programmeer de Arduino zo dat de LED altijd blijft branden.
Mogelijke oplossing
Opdracht 3
Programmeer en bouw een schakeling waarbij je LED1 elke seconde laat knipperen en LED2 elke 2 seconden.
Mogelijke oplossing
Vertrek van de voorbeeldcode die de functie millis() gebruikt en pas die aan om bovenstaande opdracht te vervullen. Ga naar File > Examples > 02.Digital > BlinkWithoutDelay.
pinMode (pin, mode)
- Bij pin geef je het pin-numer in waarvan je de mode gaat instellen.
- Bij mode definieer je de pin als INPUT of OUTPUT pin.
digitalWrite (pin, waarde)
- Bij pin geef je het pin-numer in waarvan je de waarde gaat instellen.
- Bij waarde definieer je de pin als HIGH of LOW.
delay (tijdsduur in ms)
- Bij ms geef je het aantal milliseconden in waarmee je wilt dat het programma pauzeert.
De tekst in de blauwe vakken toont ons hoe functies in Arduino correct geformuleerd worden.
Elke functie bestaat uit een naam en één of meerdere parameters die bepalen wat de functie doet.
De manier waarop deze elementen worden gecombineerd noemen we de syntax.
Elke programmeertaal heeft zijn eigen syntax: een specifieke manier om instructies en functies te schrijven zodat de computer ze begrijpt.
Op de volgende pagina ontdek je wat syntax nog allemaal inhoudt, en waarom het zo belangrijk is bij het schrijven van correcte en leesbare code.