Functies
Hernemen we nog even de Blink code, bekijk welke ingebouwde functies er allemaal in deze code gebruikt worden.
// Deel 1: declaratie en initialisatie (wordt eenmalig doorlopen bij opstarten)
int wachttijd = 1000;
// Deel 2: setup (wordt eenmalig doorlopen bij opstarten)
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
// Deel 3: loop (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 ontdek 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
Bouw en programmeer een schakeling die de twee rode lichten aan een spoorwegovergang voorstelt.
Hierbij knippert led 1 (pin 5) afwisselend met led 2 (pin 4).
Deel 1: declaratie en initialisatie
1. Maak voor elke led een variabele aan..
- Kondig het gebruik van de 2 leds aan, declareer ze in dit deel van je sketch.
- Duid aan op welke pin deze leds aangesloten zijn. Initialiseer de variabelen.
2. Maak een variabele aan om aan te geven hoe lang de leds zullen branden.
Mogelijk oplossing
Deel 3: loop
Laat de pins achtereenvolgens aan- en uitgaan, door gebruik te maken van de variabele die je gedeclareerd hebt in deel 1 van je sketch.
Mogelijk oplossing
Opdracht 2
Verbind een led met pin 6 via een weerstand. Programmeer de Arduino zo dat de led altijd blijft branden.
Deel 1: declaratie en initialisatie
Deel 2: setup
Bepaal de pin als een OUTPUT pin.
De pin moet altijd branden, en moet bijgevolg niet in een loop aan- en uitgaan. Kan je hier code toevoegen die dit mogelijk maakt?
Mogelijk oplossing
Deel 3: loop
De pin moet altijd branden, en moet bijgevolg niet in een loop aan- en uitgaan. Moet er hier code staan?
Mogelijk oplossing
Opdracht 3
Bouw en programmeer een schakeling waarbij je led 1 elke seconde laat knipperen en led 2 elke 2 seconden.
Deel 1: declaratie en initialisatie
1. Je gebruikt 2 leds in je sketch. Declareer en initialiseer deze 2 leds als variabelen.
2. Maak een variabele aan om aan te geven hoe lang de leds zullen branden.
Mogelijk oplossing
Deel 3: loop
Laat de pins achtereenvolgens aan- en uitgaan, door gebruik te maken van de variabele die je gedeclareerd hebt in deel 1 van je sketch.
denk goed na: 1 led moet om de seconde aan- en utigaan, de andere led om de 2 seconden!
Mogelijk 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.