Starten met Arduino

Bij DJO doen we best veel met Arduino (spreek uit als ar-dwie-no). Maar wat als je daar nou nog nooit van gehoord hebt en er niets van weet? Dan is dit artikel voor jou… In dit artikel zal ik de basis van Arduino uitleggen, wat is het, hoe werkt het en wat kun je er zoal mee. Als je dit artikel hebt gelezen, heb je als het goed is genoeg kennis om zelf (evt. samen met een begeleider) verder te experimenteren met Arduino.

Wat is Arduino?

Een Arduino is een klein bordje met programmeerbare elektronica, waarmee je andere elektrische componenten kunt aansturen. Je kunt er bijvoorbeeld lampjes, schakelaars, motortjes, lichtsensoren, temperatuursensoren en ga zo maar door. De Arduino is hierbij het ‘brein’ waarmee je alle elektronica aanstuurt en je ontwerp laat doen wat jij wilt. Je vertelt de Arduino wat je wilt doen door er een programma naartoe te sturen, vanaf je PC of laptop. Hierover verderop meer.

Hoe ziet een Arduino er uit?

Een Arduino ziet er uit zoals op de foto hieronder. Op de foto zie je de Arduino Uno R3. Er zijn nog veel meer soorten Arduino’s, maar dit is het meest gebruikte type Arduino. Bij DJO hebben we er hier een hele berg van liggen die je kunt gebruiken in je projecten. Daarnaast zijn ze te koop in de ‘automaat’ in de hal voor rond de 4 euro.

Arduino Uno
De Arduino Uno R3 (klik om te vergroten)

Aansluitingen

Om alle elektronische componenten (lampjes, schakelaars, etc.) op de Arduino te kunnen aansluiten, zijn er ‘ingangen’ en ‘uitgangen’ op gemaakt. In de foto hierboven zijn dit de zwarte strippen met nummertjes erbij (1 t/m 13 bovenaan, A0 t/m A5 onderaan). Hierop kun je met draadjes jouw sensoren, lampjes en andere componenten aansluiten.

Je ziet aan de linkerkant een grote zilverkleurige aansluiting: dit is de USB poort die je aan je computer/laptop kunt aansluiten. Via deze poort gaan we het programma naar de Arduino sturen, zodat deze ‘weet’ wat hij moet doen. De zwarte aansluiting linksonder is voor een losse voeding. Voor kleinere schakelingen levert de USB aansluiting genoeg stroom om de Arduino te laten werken, maar voor grotere/zwaardere projecten die meer stroom nodig hebben is een externe voeding nodig. Je kunt hier een voeding aansluiten van minimaal 7 en maximaal 12 volt.

Rechts bovenin zie je een klein rood knopje. Dit is de ‘reset’ knop. Als je hierop drukt, zal het programma wat in de Arduino draait opnieuw opstarten en de Arduino weer ‘resetten’ naar de beginstand. Handig als er iets mis ging, of als je je programma opnieuw wilt opstarten.

Als laatste zijn er onderaan onder het blokje ‘POWER’ nog meer zwarte aansluitingen te vinden. Dit zijn aansluitingen voor de voeding van je project. De 5V poortjes geven +5 volt, de GND staat voor ‘ground’, oftewel aarde: de negatieve / – pool voor je projectje. De poort met VIN kan je gebruiken om de Arduino te voeden met 5 volt, als je de grote aansluiting niet wilt gebruiken. Let op: hier kun je geen 12 volt op zetten, dan gaat hij stuk!

De software

Om een programma voor de Arduino te kunnen maken en dit naar de Arduino te sturen, moet je een programma op je PC of laptop installeren. Dit kan werken op Windows, MacOS en Linux. Je kunt het hier downloaden:

https://www.arduino.cc/en/Main/Software

Om de Arduino op je PC of laptop aan te sluiten, heb je een USB kabel nodig die er als volgt uit ziet:

Arduino USB kabel

Als het installeren niet lukt, vraag dan even een begeleider om je te helpen. Als de software is geïnstalleerd en opgestart, zou het er uit moeten zien zoals het plaatje hieronder:

De componenten

Op de Arduino kun je zeer veel verschillende componenten en sensoren aansluiten. Om te beginnen staat hieronder een lijst van veelgebruikte componenten die je bij een eerste projectje tegen kunt komen.

LED
Een LED (Light Emitting Diode) is een heel klein lampje. De Arduino kan het lampje aan en uit laten gaan, maar ook zachtjes of juist helder laten branden.
Weerstand:
De weerstand is er, simpel gezegd, om te zorgen dat er niet teveel stroom gaat lopen tussen de (+) uitgangen van de Arduino en de – (GND). Voor meer uitleg over de verschillende weerstanden, zie: https://www.djoamersfoort.nl/kleurcodes-weerstanden/
Drukknopje
Een klein knopje dat je kunt indrukken, om iets te laten gebeuren. De Arduino kan de stand van het knopje uitlezen en daarop reageren (bijvoorbeeld door een lampje aan te doen)
LDR
Een LDR (Light Dependent Resistor) is een lichtsensor. De sterkte van het licht wat op de sensor schijnt, kun je aan de Arduino doorgeven en hierop laten reageren (bijvoorbeeld een motortje sneller of langzamer laten draaien, of de toonhoogte van een piepje aanpassen)
Speakertje
Dit is een klein rond speakertje waarmee een piepgeluid kunt produceren op verschillende toonhoogten. Je kunt de Arduino verschillende tonen laten maken en er zo muziek mee maken! Of gewoon een piepje geven als er iets gebeurt.
Motortje
Een klein motortje, waarmee je dingen kunt laten draaien, rijden, etc. Je kunt er een tandwieltje op zetten en het motortje daarmee zwaardere dingen laten draaien/bewegen.
Servo
Een servo is een soort motortje, maar dan een die maar een klein stukje (meestal 180 graden, ofwel een halve cirkel) kan draaien. Een servo kan dit wel heel nauwkeurig. Je kunt hiermee bijvoorbeeld klepjes of deurtjes, of zelf klein robot armpjes/benen mee aansturen.
Potentiometer
Dit is een weerstand, maar dan een die variabel is in te stellen door aan de knop te draaien. De Arduino kan de weerstand meten en hierop reageren. Je kunt bijvoorbeeld de toonhoogte van een speakertje laten afhangen van de stand van de knop, of de felheid van een led, of de snelheid van een motortje.
Breadboard
Dit is een plastic plaatje met allemaal gaatjes erin, waarin je componenten met elkaar kunt verbinden, zonder ze aan elkaar te solderen. De Arduino-draadjes, weerstanden, knopjes, etc. passen hier precies in. Let op dat alle gaatjes die verticaal lopen, met elkaar verbonden zijn. Zie verderop voor meer uitleg hierover.

Als je meer wilt weten over elektronica in het algemeen, bekijk dan ook eens dit artikel: https://www.djoamersfoort.nl/elektronica-basis-weerstand-stroom-voltage-en-wattage/

Je eerste projectje

Nu we hebben kennisgemaakt met alle onderdelen van Arduino en een aantal componenten, kunnen we een eerste projectje gaan maken. Je hebt hiervoor het volgende nodig (vraag een begeleider, de meeste spullen liggen in de begeleider kast):

Arduino Uno
  • Een Arduino UNO
  • Een LED-je (de kleur mag je zelf kiezen)
  • Een weerstand van 220 ohm (te vinden in de carousel)
  • Arduino aansluit draadjes
  • Een ‘Breadboard’
  • Een Arduino USB kabel

Met al deze spullen kunnen we nu het eerste projectje gaan maken. Maar voordat we beginnen, eerst even een belangrijk stukje uitleg over het ‘breadboard’ en hoe het precies werkt.

Het breadboard

Hieronder staat een plaatje van een breadboard, met daarop hoe de verschillende gaatjes met elkaar verbonden zijn:

Het breadboard

In het plaatje hierboven loopt verticaal een blauwe streep. Alle gaatjes onder die streep zijn met elkaar verbonden. Als je dus in het eerste gaatje onder de blauwe streep een draadje steekt, en in het laatste gaatje, dan zijn deze via het breadboard met elkaar verbonden.

Bovenaan en onderaan het breadboard lopen 2 banen horizontaal (de roze streep op het plaatje). Ook deze gaatjes zijn met elkaar verbonden, maar nu dus in de andere richting. Deze 4 banen worden vaak gebruikt voor de voeding: je kunt hier dan alle plussen en minnen van je componenten en de Arduino zelf makkelijk mee verbinden, zonder dat het een wirwar aan draadjes oplevert.

Het projectje maken

Nu we weten hoe een breadboard werkt, kunnen we het projectje in elkaar gaan zetten. Het ziet er als volgt uit:

Het projectje (klik om te vergroten)

Sluit alles aan zoals op het plaatje. Belangrijk is dat de LED (het rode lampje) goed-om wordt aangesloten. Het langste pootje van de LED, moet aan de weerstand en het rode draadje komen (de + dus), het korte pootje aan het zwarte draadje. Let goed op dat je de draadjes op de arduino ook precies op het juiste gaatje aansluit (nummer 3 en GND)

Het programma

Nu je alles hebt aangesloten, kun je de Arduino aansluiten op je PC of laptop met de USB kabel. Als het goed is gebeurt er nog niets. Hoe komt dat? Omdat de Arduino nog geen programma heeft en dus niet weet wat hij moet doen. Als er per ongeluk toch wat gebeurt kan het zijn dat er nog een programma in zat van de vorige gebruiker. Geen probleem, dat lossen we zo op.

Start nu het Arduino programma op. Je krijgt nu weer het volgende te zien:

Startscherm Arduino programma

Verwijder nu alle tekst die er staat en vervang het met onderstaande code:

int LEDPIN = 3;

void setup() {
  // Zet pin 3 in OUTPUT mode
  pinMode(LEDPIN, OUTPUT);
}

void loop() {
// Zet de LED aan
digitalWrite(LEDPIN, HIGH);
// Wacht 1 seconde
delay(1000);
// Zet de LED uit
digitalWrite(LEDPIN, LOW);
// Wacht nog 1 seconde
delay(1000);
}

Het is belangrijk dat je de code precies zo overneemt (knippen en plakken is het makkelijkst). Ook hoofdletters en kleine letters moeten exact gelijk zijn. De regels met ‘//’ mag je overslaan, dit is commentaar niet belangrijk voor de werking. Verderop leg ik uit wat het programma precies doet en wat het allemaal betekent.

Je zult nu het programma moeten uploaden naar de Arduino. Om dit te doen moet je eerst de juiste poort en Arduino type selecteren in het programma. In het plaatje hieronder zie je waar dat moet doen:

Druk daarna op het vinkje in de linkerhoek van het Arduino programma. Het progamma-tje wordt nu “gecompileerd”, omgezet van tekst naar machine-code die de Arduino kan uitvoeren, en daarna via de USB kabel naar de Arduino gestuurd. Als je alles goed hebt gedaan, begint het LED-je nu te knipperen, met een tussenpauze van 1 seconde.

Gefeliciteerd! Je hebt zojuist je eerste Arduino projectje gemaakt!

Arduino code begrijpen

Als je al eens eerder het geprogrammeerd, dan zal je de code van het knipperlicht projectje misschien al wel een beetje snappen. Om het beter uit te kunnen leggen, eerst een aantal begrippen die je zult tegenkomen als je een Arduino programma maakt.

VariabeleEen variabele is een naam, die een bepaalde waarde bevat. Dit kan een getal zijn, maar bijvoorbeeld ook een stukje tekst. In het voorbeeld is er een variabele genaamd LEDPIN, met de waarde 3.
FunctieEen functie is een stukje programma dat je een naam geeft, en vervolgens op meerdere plekken kunt ‘aanroepen’. Je kunt hiermee dus stukjes programma ‘hergebruiken’, zodat je niet steeds dezelfde code hoeft over te tikken. In het voorbeeld zijn er 2 functies: setup() en loop(). Een functie kan een waarde teruggeven (een variabele), maar dat hoeft niet. Als er geen waarde terugkomt, is het type ‘void’.
ParameterEen parameter is een variabele of waarde die je meegeeft aan een functie, zodat hij zijn werk kan doen. In ons voorbeeld roepen we bijvoorbeeld de functie pinMode aan, met 2 parameters: het pin nummer (3) en de gewenste mode (OUTPUT)
SketchDit is de Arduino-naam voor een compleet programma. Zo’n sketch (programma) kun je opslaan op je computer, net als een bestand in bijvoorbeeld word of notepad, zodat je het later weer kunt laden en er aan verder kunt werken.

Om het beter te snappen, gaan we nu regel voor regel door het programma heen om te zien wat er gebeurt.

int LEDPIN = 3;

Hier wordt een variable aangemaakt met de naam LEDPIN. Het woordje ‘int’ is het soort variabele wat gemaakt moet worden: een integer, oftewel een ‘geheel getal’. In de variabele wordt de waarde 3 opgeslagen. Dit is de pin op het Arduino bordje waarop de LED is aangesloten.

void setup() {

Hier wordt op de eerste regel een functie gemaakt met de naam “setup”. Het type van deze funtie is “void”, wat betekent dat er geen waarde wordt teruggegeven als de functie klaar is. Deze functie moet setup heten, en wordt door Arduino eenmalig aangeroepen bij het starten van het programma.

// Zet pin 3 in OUTPUT mode
pinMode(LEDPIN, OUTPUT);

Binnen de functie setup() staan 2 regels. De eerst regel met de ‘//’ tekens, is commentaar. De Arduino doet hier niets mee, maar voor mensen is het handig om te beschrijven wat de code precies doet, zodat als iemand anders er naar kijkt, hij beter snapt wat de bedoeling is.

In de 2e regel wordt de functie ‘pinMode’ aangeroepen, met 2 parameters: Het pin nummer (LEDPIN) en de gewenste mode (OUTPUT). LEDPIN hebben we eerder zelf gemaakt en de waarde 3 gegeven, OUTPUT is een standaard variabele van Arduino. Het resultaat is dat we pin 3 op de Arduino, waar ons ledje aan hangt, in ‘OUTPUT’ mode zetten, oftewel het leveren van een signaal. Het tegenovergestelde is INPUT, dit zouden we voor een sensor gebruiken (we lezen een signaal).

void loop() {

Hier wordt een nieuwe functie gemaakt met de naam loop(). Ook deze functie moet zo heten (anders kan de Arduino hem niet aanroepen). De loop() functie wordt zoals de naam al doet vermoeden, in een lus aangeroepen. Als hij dus afgelopen is, begint hij weer opnieuw.

// Zet de LED aan
digitalWrite(LEDPIN, HIGH);
// Wacht 1 seconde
delay(1000);
// Zet de LED uit
digitalWrite(LEDPIN, LOW);
// Wacht nog 1 seconde
delay(1000);

In de loop functie, roepen we eerst digitalWrite() aan, met 2 parameters: het nummer van de pin waarnaar we willen schrijven, en de waarde HIGH. Nu wordt dus pin 3 op ‘HIGH’ gezet, wat betekent dat er 5 volt op de uitgang komt te staan, en het ledje aan gaat.

Daarna roepen we de functie delay() aan: de Arduino gaat nu even ‘niets’ doen. De 1000 staat voor 1000 milliseconden, wat 1 seconde is.

Nu de seconde voorbij is, zetten we het ledje weer uit door ‘LOW’ naar pin 3 te schrijven.

Als laatste wachten we nog 1 seconde. Nu zal de loop() weer bovenaan beginnen en begint het hele feest weer opnieuw. Zo blijft het ledje dus knipperen, met steeds 1 seconde wachttijd ertussen.

Ingebouwde functies

Zoals je in de programma uitleg kunt zien, heeft Arduino een aantal ingebouwde functies die je niet zelf hoeft te maken. Een aantal belangrijke en veelgebruikte functies worden hieronder benoemd en uitgelegd.

delay(milliseconden)Deze functie laat de Arduino even wachten. Als parameter geef je het aantal milliseconden mee: delay(2000) -> 2 seconden
pinMode(pin, mode)Hiermee stel je een pin op de arduino in op INPUT of OUTPUT, oftewel moet de pin een signaal leveren/sturen, of juist uitlezen.
digitalWrite(pin, waarde)Schrijf een waarde naar een digitale pin. Parameters zijn het pin nummer en HIGH of LOW.
digitalRead(pin)Lees een waarde van een digitale pin. De pin moet eerst in mode INPUT worden gezet, met pinMode(). Er wordt HIGH of LOW teruggegeven.

Er zijn nog veel meer ingebouwde functies die je kunt gebruiken als je wat verder bent met het maken van programma’s. Voor een complete lijst, zie de website van Arduino: https://www.arduino.cc/reference/en/

Hoe nu verder?

Nu je je eerste projectje het gemaakt en alles hebt gelezen, snap je hopelijk de basis van hoe een Arduino werkt. Nu komt het leukste: je eigen project bedenken en maken! Probeer eenvoudig te beginnen en aarzel niet om een begeleider om hulp te vragen!

In het arduino programma zijn een heleboel ‘examples’ (voorbeelden) opgenomen die je kunt proberen. Dit is een goede plek om te starten, als je nog niet zo veel van Arduino weet:
https://www.arduino.cc/en/Tutorial/BuiltInExamples

Wat vaak ook helpt is een bepaalde component die je zou willen gebruiken opzoeken in google met het woordje ‘arduino’ erbij. Je vindt dan bijna altijd een kant-en-klaar voorbeeld van hoe je dat component kunt aansluiten en gebruiken. Om nog wat meer inspiratie op te doen zijn er veel websites met kant-en-klare Arduino projecten:

Veel plezier met Arduino!