Structuur en syntax

Structuur

Programmeren van de Arduino gebeurt in C/C++. Deze taal is zeer gestructureerd en is opgebouwd uit functies.

Een C-programma bevat altijd een functie main(). Bij de Arduino bestaat er geen main() functie, maar is deze vervangen door twee andere functies: setup() en loop().

de basis van elk Arduino programma

 

Wanneer een Arduino wordt opgestart zal hij altijd eerst de setup()-functie uitvoeren, om daarna de loop()-functie blijvend te herhalen.

Het is natuurlijk heel eenvoudig om te zeggen dat een programma uit functies bestaat, maar wat is nu eigenlijk een functie?

Een functie is een groep van instructies die met een eigen naam aangeduid worden. Een functie geeft altijd een resultaat van een bepaald type weer. Indien geen resultaat wordt teruggegeven door de functie is het resultaat van het type void (=leegte). De functies setup() en loop() zijn typisch twee functies die niks teruggeven. Ze zijn dan ook allebei void.

Het type van de teruggegeven waarde is de eerste aanduiding waarmee een functie beschreven wordt. Zo kan een functie bijvoorbeeld een som van twee gehele getallen opleveren. De definitie van deze functie begint dan met de type-aanduiding int.

Na de type-aanduiding krijgen we de naam van de functie. Deze naam kan naar believen gekozen worden, zolang hij maar begint met een letter. Merk op dat namen in C hoofdlettergevoelig zijn.

Na de naam komt een paar haakjes. Deze haakjes kunnen eventuele parameters bevatten die aan de functie worden doorgegeven. Ook als er geen parameters worden doorgegeven moeten de haakjes na de functienaam komen. Dat is terug het geval bij zowel setup() als loop().

We weten nu al wat het resultaat van de functie zal zijn, wat zijn naam is, en met welke parameters de functie zal rekenen, maar hoe bepalen we welke instructies er wel en niet tot de functie behoren?

Daarvoor worden accolades gebruikt. Alles wat binnen de accolades staat behoort tot de functie. Elke instructie wordt van de volgende gescheiden door een puntkomma.

Terug naar de basisstructuur

Zoals reeds eerder vermeld bestaat de basis van een arduino programma uit twee functies:
  • Setup()
  • Loop()

Beide functies zijn van het type void, omdat ze geen informatie teruggeven aan de aanroepende functie. Die is er immers niet.

De setup() functie wordt éénmaal doorlopen en dient dus hoofdzakelijk voor initialisatie. De loop()-functie wordt steeds opnieuw herhaald en vormt een oneindige lus. Hieruit kun je al concluderen dat een microcontroller nooit stopt met werken.

voorbeeldprogramma: Blink

 

Het eerste programma dat gebruikt wordt is zo goed als altijd het blink-programma. Met dit programma kijken we of de arduino omgeving werkt, en of we in staat zijn om een programma op het arduino-bord te laten uitvoeren.

We zien duidelijk de twee basisfuncties setup() en loop().

In de setup wordt pin 13 van het arduino bord geconfigureerd als een output. Op het bord zit een SMD-led die met deze pin 13 verbonden is. Door deze te laten knipperen kunnen we het  bord testen zonder dat we extra hardware nodig hebben.

Het laten knipperen gebeurt in de loop-functie. Met behulp van een digitalWrite instructie wordt pin 13 achtereenvolgens hoog en laag gezet. De controller werkt aan een zeer hoge snelheid, waardoor het nodig is om na elke digitalWrite instructie een delay-functie te gebruiken om het knipperen zodanig te vertragen dat het voor een mens nog te volgen is.

De waarde die als parameter bij de delay-functie wordt meegegeven is een tijd, uitgedrukt in milliseconden. De delay(1000) instructie zal de controller dus 1 seconde doen pauzeren.

syntax

Een programma zal slechts succesvol gecompileerd worden als de syntax van het programma klopt. Dit betekent dat alle code volgens strikte regels moet geschreven worden.

Het groeperen van een aantal instructies gebeurt met behulp van accolades. Dit kan zowel bij de definitie van een functie voorkomen, als bij een instructie zelf, zoals te zien in de for-loop.

gebruik van accolades om statements te groeperen.

Een instructie wordt altijd beëindigd met een puntkomma. Een einde-regel teken heeft geen enkele betekenis binnen een programma. Je kan dus perfect alle instructies op één lijn schrijven, zolang ze maar van elkaar gescheiden zijn door middel van een puntkomma.

In sommige gevallen wil men tekst aan het programma toevoegen om iets te verduidelijken voor iedereen die het programma leest. Het is niet de bedoeling dat deze tekst aan de syntax voldoet. Het gaat hier dus om commentaar, dat door de compiler moet worden overgeslagen.

Het gebruik van commentaar is dan ook zeer belangrijk om in je programma aanwijzingen op te nemen over het verloop of het doel van het programma. Deze wordt door de compiler genegeerd, en zal ook geen invloed hebben op de snelheid of grootte van je programma.

Een eerste manier is de blok commentaar. De combinatie forward slash en sterretje geeft aan dat alles wat hierna komt commentaar is. Je kunt hiermee dus grote stukken commentaar plaatsen tussen de code in. De commentaar wordt afgesloten met de combinatie sterretje-forward slash. Deze combinatie geeft het einde van de blokcommentaar aan. Alles erna wordt weer behandeld als programmacode.

Wanneer we korte commentaar willen toevoegen kunnen we ook gebruik maken van regel commentaar. Deze wordt aangegeven door een dubbele forward slash en wordt niet afgesloten. Alles wat na de dubbele slash staat op deze ene regel wordt als commentaar behandeld. Door naar een volgende regel te gaan wordt de commentaar beëindigd.