8.1.4 Programmeren in Arduino

Een Arduino programma heeft altijd dezelfde structuur. En die is erg simpel. Hij programma bestaat uit tenminste twee functies: setup() en loop(). Het ziet er dan zo uit:


void setup() {
  // Hier komen opdrachten te staan die te maken hebben met
  // de voorbereiding. Dit wordt eenmalig uitgevoerd.
  // Bijvoorbeeld: hoe de poorten (aansluitingen) moeten werken
}

void loop()  {
  // En hier komen opdrachten te staan die continu herhaald
  // worden. Bijvoorbeeld: controleren of een knop wordt ingedrukt of
  // het meten van de temperatuur via een sensor.
}

In de code zie je regels die met // beginnen. Dit zijn eigenlijk regels die geen rol spelen in de code maar vooral bedoeld zijn om een toelichting op de code te geven. De zogenaamde commentaarregels.
Wanneer je meerdere commentaarregels wilt groeperen kan dat ook door gebruik te maken van /* aan het begin en */ aan het eind.
Zo zou je de code hierboven ook geschreven kunnen hebben als:

void setup() {
  /* Hier komen opdrachten te staan die te maken hebben met
  de voorbereiding. Dit wordt eenmalig uitgevoerd.
  Bijvoorbeeld: hoe de poorten (aansluitingen) moeten werken*/
}

Of nog fraaier:

void setup() {
  /************************************************************* 
  ** Hier komen opdrachten te staan die te maken hebben met
  ** de voorbereiding. Dit wordt eenmalig uitgevoerd.
  ** Bijvoorbeeld: hoe de poorten (aansluitingen) moeten werken.
  *************************************************************/ 
}

Beide functies zijn nodig om een programma te kunnen laten werken.
In setup() worden variabelen gedeclareerd en wordt bepaald welke pinnen ingang of uitgang worden. setup() wordt eenmaal doorlopen.
loop() volgt na setup() en wordt vaak oneindig herhaald. loop() “leest” bijvoorbeeld wat er op de invoerpoorten gebeurt en laat (meestal afhankelijk daarvan) bepalen wat er op de uitvoerpoorten moet gebeuren. Bijvoorbeeld een verwarmingselement aanzetten of een motortje laten draaien.
Eigenlijk komt het er op neer dat loop() de motor van het programma is dus daar waar al het werk moet gebeuren. 

Het woordje void voor deze functies betekent dat je deze functies wel aan kunt roepen maar dat je geen waarde of iets dergelijks terug krijgt. Dit in tegenstelling tot bijvoorbeeld een functie die iets moet berekenen. Dan verwacht je de uitkomst van de berekening terug.
Naast deze twee functies kunnen nog meer zaken aan de orde komen zoals het declareren van variabelen en het inlezen van zogenaamde libraries.
Ook kun je zelf functies aanmaken die je dan aanroept vanuit de loop functie.