GPIO-pinnen (General Purpose Input/Output) op de Arduino kunnen zowel als ingang als uitgang worden gebruikt.
Bij digitale input moeten we de GPIO configureren als INPUT (in plaats van OUTPUT). In plaats van een signaal te schrijven naar de pin, gaan we de status (HOOG of LAAG) lezen. Omdat we deze waarde vaak moeten opslaan, maken we gebruik van variabelen.
In dit deel leer je:
Werken met digitale signalen, die slechts twee waarden hebben:
Dit maakt ze geschikt voor schakelaars, drukknoppen en digitale sensoren.
Om de basis van digitale inputpinnen aan te leren, gaan we één pin (GPIO 2) configureren als input en met een drukknop zorgen dat de status van de pin kan gewijzigd worden. We gaan deze status lezen, en om aan de gebruiker te duidelijk te maken wat deze status was, schrijven we deze status naar digitale pin 13, de pin waarmee het interne ledje verbonden is. We gaan dus wel GPIO 13 moeten configureren als output.
In deze schakeling wordt een schuifschakelaar gebruikt. Deze schakelaar is verbonden met:
Werking van de schakelaar:
Wanneer een GPIO-pin (zoals GPIO 2) als input wordt geconfigureerd, meet de Arduino de spanning (potentiaal) ten opzichte van GND. Dit werkt vergelijkbaar met een voltmeter tussen de GPIO-pin en GND.
De "voltmeter" van de Arduino geeft echter slechts twee mogelijke waarden door:
Met deze instelling kun je eenvoudig bepalen in welke stand de schakelaar staat door de waarde van GPIO 2 uit te lezen.
Je merkt dat je in deze schakelingen drie aansluitingen hebt met de Arduino:
Dit zien we zeer dikwijls terugkomen in modules voor digitale sensoren. Om de module te voeden heb je de +5V en de GND nodig. De derde aansluiting zal dan het signaal zijn.

We hebben eerder gezien hoe je een GPIO-pin als output configureert met:
pinMode(<GPIO>, OUTPUT);
Op dezelfde manier kunnen we een GPIO-pin als input instellen, maar dan gebruiken we `INPUT` in plaats van `OUTPUT`:
pinMode(<GPIO>, INPUT);
Net zoals bij outputs gebeurt dit meestal in de `setup()`-functie. De setup()-functie wordt zo:
void setup()
{
pinMode(2, INPUT);
pinMode(13, OUTPUT);
}

Bij een output gaven we een status (HIGH/LOW) mee met `digitalWrite()`. Bij een input lezen we juist de status van de pin uit met `digitalRead()`.
Voorbeeld:
We lezen de status van digitale ingang pin 3 en slaan deze op in een variabele `status`:
waarde = digitalRead(3);
De variabele `status` kan van het type int`(0 of 1) of bool (`true`/`false`) zijn.
Syntax:
digitalRead(pin)
Parameters
Bron :
https://docs.arduino.cc/language-reference/en/functions/digital-io/digitalread/
Al de andere code kennen we reeds. Zo komen we tot onderstaande sketch.
int waarde;
void setup()
{
pinMode(2, INPUT);
pinMode(13, OUTPUT);
}
void loop()
{
waarde = digitalRead(2);
digitalWrite(13,waarde);
delay(100);
}
Voorbeeld simulatie drukknop zonder breadboard.
Voorbeeld simulatie drukknop met breadboard
Toepassing: |
|
|---|---|
Simulatie openen in TinkercadKlik op het Tinkercad-logo hiernaast om een volledig uitgewerkte simulatie te openen. Na het openen klik je op "Copy and Tinker" om zelf met de schakeling aan de slag te gaan. Opbouw van de schakelingDe simulatie bevat een schuifschakelaar die is aangesloten op:
Werking van de schuifschakelaar:
Weergave van de status via LEDDe status van GPIO2 wordt doorgegeven aan GPIO13, waar een interne LED op aangesloten is:
GPIO2 = LOW → LED gaat uit. Op deze manier kun je direct zien in welke stand de schakelaar staat! |
Drukknoppen (ook wel push buttons of tactile switches genoemd) zijn mechanische schakelaars die een elektrisch circuit sluiten of onderbreken wanneer ze worden ingedrukt. Ze behoren tot de meest gebruikte invoercomponenten in elektronica en Arduino-projecten omdat ze een eenvoudige manier bieden om interactie tussen een gebruiker en een circuit mogelijk te maken.
De eenvoudigste manier om een drukknop in je project te integreren, is door gebruik te maken van een drukknopmodule. Dit is een klein printplaatje (PCB: Printed Circuit Board) dat alle benodigde componenten bevat om de schakelaar stabiel en betrouwbaar te laten werken.
De module heeft drie aansluitingen, een veelvoorkomende opbouw bij elektronica-modules:
Belangrijke opmerkingen
Let op de labelling! De volgorde van de aansluitingen kan per fabrikant verschillen. Controleer dus altijd het bordje of de datasheet.
Test altijd eerst met een eenvoudig programma of de module correct werkt voordat je hem in een complex circuit bouwt.
Simulatie opdracht |
|
|---|---|
|
Classes => Maze Runner Online => Op weg naar de start! => Drukknop module In de simulatieomgeving is er geen drukknopmodule beschikbaar. Om die reden hebben we deze module nagebouwd op een breadboardje. Ook hier moet je in eerste instantie niets kennen van de elektronica, maar gaan we focussen op het aansluiten en het gebruik van de module.
|
In dit project navigeert een robot door een doolhof dat is gemarkeerd met een zwarte lijn. Om de route te volgen, gebruiken we een IR-lijnvolger, een digitale sensor die het contrast tussen de lijn en de ondergrond detecteert.
De sensor bestaat uit twee hoofdcomponenten:
De Arduino gebruikt dit signaal om te bepalen of de robot nog op de lijn rijdt of moet corrigeren.
De sensor heeft drie aansluitingen:
VCC → Sluit aan op +5V (voeding).
GND → Verbinding met ground (GND).
OUT → Digitaal uitgangssignaal naar een Arduino-ingang (bijv. `D2`).
Sommige sensoren hebben een potentiometer om de gevoeligheid af te stellen.
Gebruik `digitalRead()` in de Arduino-code om het signaal te verwerken.

Omdat er in de simulatieomgeving geen echte IR-lijnsensor beschikbaar is, wordt deze nagebootst met een zelfgebouwd circuit op een breadboard. In plaats van infraroodsensoren gebruiken we schuifschakelaars om de werking van een 5-kanaals lijnvolger te simuleren.
Het circuit heeft de volgende aansluitingen (van rechts naar links):
Opdracht |
|
|---|---|
|
Classes => Maze Runner Online => Op weg naar de start! => Line follower initiatie In deze oefening gaan we terug het verkeerslichtje aansluiting, maar in combinatie met de line follower sensor. We maken wel enkel gebruik van OUT1, OUT3 en OUT5. De sketch moet de waarden van OUT1, OUT3 en OUT5 lezen, en deze waarden doorgeven aan respectievelijk de groene, gele en rode LED.
|