Het doel van een Arduino is om elektronica toegankelijk te maken voor iedereen, zonder dat je hiervoor een uitgebreide elektronica-opleiding hoeft te volgen. Arduino moedigt gebruikers aan om creatief aan de slag te gaan en zelf projecten te ontwikkelen.
De drijvende kracht achter Arduino, en vooral het succes ervan als Open Source-platform, is Massimo Banzi. Hij heeft een belangrijke rol gespeeld in de ontwikkeling en popularisering van Arduino. Je kunt meer over hem te weten komen door zijn inspirerende TED Talk te bekijken.
Een Arduino is een experimenteerbordje met een microcontroller, omgeven door alle benodigde elektronica om te communiceren met sensoren, actuatoren en computers. Je programmeert de Arduino in een afgeleide van C/C++ via de Arduino IDE (Integrated Development Environment).
Een van de grote voordelen van Arduino is dat het open source is. Dit betekent dat er naast de bekende blauwe en blauwgroene bordjes ook veel clones en andere experimenteerbordjes op de markt zijn, die eveneens geprogrammeerd kunnen worden in de Arduino IDE.
In deze cursus werken we met de Arduino UNO, een van de meest populaire en veel gebruikte experimenteerbordjes. Hoewel er inmiddels verschillende soorten Arduino-bordjes bestaan, was de UNO het eerste model dat ontwikkeld werd. Sinds de introductie in 2005 is de Arduino UNO nog steeds in productie, ondertussen in de vierde generatie. Dit komt vooral door de ideale vormgeving en pinindeling, die het bordje bijzonder geschikt maakt om te leren werken met microcontrollers.
Met de Arduino UNO kun je op een eenvoudige en toegankelijke manier kennismaken met de wereld van elektronica en programmeren, waardoor het een perfecte keuze is voor beginners en gevorderden alike.
Op de afbeelding zie je de verschillende onderdelen van de Arduino UNO. Aan de bovenzijde van het bordje vind je 14 digitale I/O-pinnen (Invoer/Uitvoer-pinnen). Deze pinnen zijn genummerd van 0 tot 13 en kunnen zowel als invoer (input) als uitvoer (output) worden gebruikt. Wel moet je in je sketch (het Arduino-programma) aangeven of een pin als input of output moet functioneren. De digitale pinnen 0 tot en met 13 worden ook wel aangeduid met GPIO. Dit staat voor General Purpose Input Output. Digitale pin 13 wordt zo GPIO 13.
Aan de onderzijde van het bordje bevinden zich 6 analoge input pinnen, genummerd van A0 tot A5. Het verschil tussen analoge en digitale ingangen zullen we later bespreken, zodra we met ingangen gaan werken.

De meeste microcontrollers werken op 3,3 volt, maar de Arduino-familie is een uitzondering: deze werkt meestal op 5 volt. Daarom vind je op de Arduino UNO zowel een 5V-pin als een 3,3V-pin. Daarnaast zijn er 2 GND-pinnen (GROUND), die een potentiaal van 0 volt hebben. Aan de bovenzijde van het bord vind je nog een derde GND-pin. Als deze 3 GND-pinnen zijn intern met elkaar verbonden.
Je kunt de 5V- en GND-pinnen zien als de aansluitingen van een 5V-bron, waarbij de 5V-pin de positieve kant en de GND-pin de negatieve kant vertegenwoordigt.
Op het bordje is ook de microcontroller prominent aanwezig, evenals een USB-aansluiting. Deze USB-poort wordt gebruikt om de microcontroller te programmeren, maar kan ook dienen om het bordje van stroom te voorzien.
Verder zijn er 4 LEDjes op het bordje te vinden:
Met deze opbouw is de Arduino UNO een ideaal bordje om mee te experimenteren en de basisprincipes van microcontrollers te leren.
Wanneer we het over Arduino hebben, gaat het niet alleen over de experimenteerbordjes, maar ook over de programmeeromgeving, de Arduino IDE (Integrated Development Environment). Deze software is speciaal ontwikkeld om Arduino-bordjes te programmeren. De nieuwste versie van de IDE is Arduino IDE 2.3.4.


De Arduino IDE biedt drie belangrijke functies:
Om dit goed te laten werken, moet de IDE weten welk type bordje je gebruikt en op welke COM-poort het bordje is aangesloten. Meestal wordt het bordje automatisch gedetecteerd, maar soms kan de COM-poort problemen opleveren. Je kunt deze instellingen handmatig aanpassen.
"Hello World!" is een eenvoudig programma dat vaak wordt gebruikt om te controleren of een nieuwe compiler of interpreter correct is geïnstalleerd en werkt. Het programma toont de tekst "Hello World!" op het scherm, wat aangeeft dat de ontwikkelomgeving goed functioneert en dat je klaar bent om meer complexe code te schrijven. Dit programma wordt beschouwd als een traditionele eerste stap bij het leren van een nieuwe programmeertaal.
In de wereld van microcontrollers is de tegenhanger van "Hello World!" het "Blink"-programma. Hierbij wordt een LEDje op een experimenteerbordje aan en uit geschakeld met een frequentie van 0,5 Hz, wat betekent dat het LEDje elke seconde knippert. Dit eenvoudige programma controleert of de microcontroller correct is geprogrammeerd en of de basis hardware, zoals de GPIO-pinnen, goed functioneert. Net zoals "Hello World!" is "Blink" vaak de eerste stap bij het werken met microcontrollers.
Wanneer je een lege sketch opent in de Arduino IDE, staat er al een beetje code klaar. Dit zijn twee functies, oftewel blokken code die kunnen worden aangeroepen. Deze functies vormen de basis van elk Arduino-programma.

De twee functies die standaard in de sketch staan, zijn de setup()- en loop()-functie.
Zowel de setup()- als de loop()-functie moeten in je sketch aanwezig zijn, ook al zijn ze leeg. Ze worden automatisch aangeroepen door de Arduino, dus hun aanwezigheid is verplicht.
Om het algoritme dat we nodig hebben duidelijk weer te geven, gebruiken we een Nassi-Shneidermann diagram. In dit diagram worden functies aangegeven door een rechthoek waarvan de verticale zijden uit dubbele lijnen bestaan.

We beginnen met het uitwerken van de loop()-functie. Deze functie is een iteratie (herhaling) waarin we het volgende doen:
Dit proces blijft zich oneindig herhalen zolang de Arduino aanstaat.
Het interne LEDje op de Arduino UNO is verbonden met GPIO 13. Om dit LEDje te kunnen gebruiken, moeten we GPIO 13 configureren als een output. Dit doen we in de setup()-functie, omdat deze instelling maar één keer hoeft te worden uitgevoerd bij het opstarten van de Arduino.
Een sketch, script of programma is de vertaling van een algoritme naar code. We gaan dit ook blokje per blokje doen.
![]()
Wanneer we een GPIO willen configureren als input of output hebben we 3 dingen nodig:
Syntax:
pinMode(pin, mode)
Parameters
Bron:
https://docs.arduino.cc/language-reference/en/functions/digital-io/pinMode/
GPIO 13 configureren als output:
pinMode(13, OUTPUT);
Merk op dat elke instructie moet afgesloten worden met een punt-komma “;”. Een blok code wordt geplaatst tussen twee accolades. Omdat een functie een blok code is die kan aangeroepen worden, moet ook deze code tussen twee accolades geplaatst worden.
void setup() {
pinMode(13,OUTPUT);
}

Wanneer we een digitale pin als OUTPUT configureren, dan kan je dit voorstellen alsof die aansluiting, via een schakelaar, verbonden is met de +5V. In de sketch kunnen we zeggen dat de schakelaar moet gesloten worden, en dan wordt de uitgang hoog (HIGH), of dat de schakelaar moet openen, en dan wordt de uitgang laag (LOW).
Sluiten we een LEDje aan op deze uitgang, dan zal dit LEDje aan gaan als de uitgang HOOG is, en uit gaan als de uitgang LAAG is. Omdat het interne LEDje, het LEDje op het experimenteerbordje, verbonden is met uitgang 13, kunnen we dit op deze manier laten aan en uit gaan.
Om een uitgang hoog of laag te maken moet je:
Syntax:
digitalWrite(pin, waarde)
Parameters
Bron:
https://docs.arduino.cc/language-reference/en/functions/digital-io/digitalwrite/
Je maakt uitgang 13 hoog met:
digitalWrite(13, HIGH);
en laag mag:
digitalWrite(13, LOW);
![]()
Het laatste stukje dat we moeten vertalen is de vertraging van 1 seconde. Dit kan met de delay()-functie.
Syntax:
delay(waarde)
Parameters
Bron:
https://docs.arduino.cc/language-reference/en/functions/time/delay/
De code om 1 seconde, of 1 000 ms te wachten is:
delay(1000);
Alle blokjes zijn nu gekend. Nu moeten we ze gewoon gaan samenvoegen.
void setup() {
pinMode(13,OUTPUT);
}
void loop() {
digitalWrite(13,HIGH);
delay(1000);
digitalWrite(13,LOW);
delay(1000);
}
Als laatste stap vertalen we de sketch naar machinetaal en uploaden deze naar de Arduino.