Robopost Les 2 – Elektrotechniek

25 juni 2025

l

Yilmaz Tamer

Onderdeel van de lessenserie: RoboPost – Bouw je eigen slimme postmelder
Voor wie: MBO Techniek/ICT studenten (niveau 3/4) – beginnersniveau
Tijdsduur: ± 45 minuten

In Les 1 heb je geleerd hoe je een Arduino, LEDs en een breadboard gebruikt om een eenvoudige schakeling te bouwen. In deze les breiden we die schakeling uit met een drukknop, en leer je hoe je zorgt voor een stabiel en betrouwbaar signaal met behulp van pull-up of pull-down weerstanden.


Leerdoelen

Na deze les kan jij als student:

  • Uitleggen wat een stroomkring is
  • Werken met pull-up en pull-down weerstanden
  • Een drukknop correct aansluiten op een Arduino
  • Begrijpen waarom een weerstand bij een knop belangrijk is
  • De werking van een digitale ingang uitleggen

Wat is een stroomkring?

Een stroomkring is een gesloten pad waarlangs elektrische stroom kan vloeien. De stroombron (zoals de 5V op je Arduino) stuurt stroom via draden en componenten terug naar GND (de ‘min’). Alleen als de kring gesloten is, kan er stroom lopen.

  • Gesloten kring → alles werkt
  • Open kring → ergens ontbreekt verbinding → component werkt niet

Let op: elke component moet correct worden aangesloten: van plus naar min. Verkeerde aansluitingen kunnen zorgen voor foutgedrag of schade.


Waarom werkt mijn knop niet?

Een veelvoorkomende fout bij beginners: een drukknop aansluiten zonder pull-down weerstand. Daardoor leest de Arduino een zwevend signaal – hij weet dan niet zeker of de knop wel of niet is ingedrukt.


Wat is een pull-down weerstand?

Als je geen pull-down weerstand gebruikt, is het signaal onzeker als de knop niet wordt ingedrukt. De pin “zweeft” als het ware in de lucht.
We noemen dat een zwevende ingang (of floating input).

Daardoor kan het gebeuren dat de Arduino toch HIGH (5V) leest, bijvoorbeeld door:

  • elektromagnetische straling in de ruimte
  • je hand in de buurt
  • signalen van andere apparaten, zoals een mobiele telefoon

Gevolg: het lampje gaat onverwacht aan, ook al druk je nergens op.


De oplossing: een pull-down weerstand

In de juiste schakeling zie je dat er een weerstand is toegevoegd tussen de ingangspin en GND.
Dat is een pull-down weerstand.

Wat doet die?

  • De ingang is nu stabiel en betrouwbaar
  • Hij trekt de ingang standaard naar 0 Volt (LOW)
  • Pas als je op de knop drukt, komt er 5 Volt op de pin → de Arduino leest HIGH
Zie je in de schakeling hierboven hoe de weerstand is aangesloten op GND? Zo voorkom je dat de pin zweeft wanneer je de knop loslaat.
Belangrijk om te onthouden
SituatieGevolg
Geen pull-down weerstandArduino meet willekeurige waarde
Wel pull-down weerstandArduino meet LOW tot je indrukt

Gebruik daarom altijd een pull-down weerstand, óf activeer INPUT_PULLUP in je code (dan werkt de logica omgekeerd).


Hoe sluit je een knop aan?

Volg deze stappen:

  1. Plaats de drukknop in het breadboard, met beide zijden in aparte rijen.
  2. Verbind één kant van de knop met GND via een jumper wire.
  3. Verbind de andere kant met digitale pin 7 op de Arduino.

Zo werkt het:

Hieronder zie je een voorbeeld waarin een knop en een afstandssensor samenwerken: de LED’s gaan aan wanneer een object dichtbij is, tenzij je de knop indrukt om het systeem te resetten.

In deze opstelling gebruiken we in de code INPUT_PULLUP. Dat betekent dat de Arduino intern een pull-up weerstand activeert, waardoor de ingang standaard HIGH is.
Zodra je op de knop drukt, wordt de verbinding met GND gemaakt → de waarde wordt LOW.
Zo weet de Arduino 100% zeker dat de knop is ingedrukt als het signaal LOW wordt. Je hebt dus geen extra weerstand op het breadboard nodig.



Opdracht 1 – Combineer knop en sensor

In deze opdracht combineer je een drukknop met een afstandssensor (HC-SR04). Als er iets binnen 20 cm van de sensor komt, gaan beide LED’s aan.
Je kunt ze uitzetten met de knop. In deze opdracht zie je dat we al een afstandssensor gebruiken. Je hoeft nog niet precies te weten hoe deze sensor werkt of wat pulseIn() doet.
In Les 3 – Programmeren met sensoren leggen we dit uitgebreid uit.
Voor nu mag je de sensor gebruiken als “trigger” voor je LED’s – de logica komt straks.

Let op: Je hoeft nog niet alles van de onderstaande code te begrijpen.
In deze les gaat het vooral om de werking van de knop en de stroomkring. In Les 3 gaan we deze code stap voor stap uitleggen: je leert dan precies wat functies als digitalWrite(), pinMode() en pulseIn() betekenen.

Voor nu mag je de code letterlijk kopiëren en uploaden in de Arduino IDE. Werkt je schakeling zoals verwacht? Top! In de volgende les duiken we in de logica achter de regels.

Wat je nodig hebt:

  • HC-SR04 sensor (Trig = pin 4, Echo = pin 3)
  • LED 1 op pin 9, LED 2 op pin 8
  • Drukknop op pin 7 (tussen pin en GND)
const int led1 = 9;
const int led2 = 8;

const int trigPin = 4;
const int echoPin = 3;

const int knopPin = 7;
const int drempelAfstand = 20;  // cm

bool ledsActief = false;

void setup() {
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);

  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(knopPin, INPUT_PULLUP); // knop tussen D7 en GND

  Serial.begin(9600);
}

void loop() {
  // Knop controleren
  bool knop = (digitalRead(knopPin) == LOW);
  if (knop) {
    ledsActief = false; // Druk op knop → LED’s uit
  }

  // Sensor controleren als LED’s nog niet handmatig zijn uitgezet
  if (!ledsActief) {
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);

    long duur = pulseIn(echoPin, HIGH, 30000);
    float afstand = duur * 0.034 / 2;

    Serial.print("Afstand: ");
    Serial.println(afstand);

    if (afstand > 0 && afstand <= drempelAfstand) {
      ledsActief = true;  // Iets gedetecteerd → LED’s aan
    }
  }

  // LEDs aan/uitzetten op basis van status
  digitalWrite(led1, ledsActief ? HIGH : LOW);
  digitalWrite(led2, ledsActief ? HIGH : LOW);

  delay(100);
}

Testopdracht: Knop uitlezen

Voordat we de knop gaan gebruiken in een grotere schakeling, testen we eerst of hij correct is aangesloten en goed reageert. In deze test schakelt de knop een LED aan of uit.

Gebruik onderstaande code om te testen of je knop goed is aangesloten. De LED gaat aan zodra je op de knop drukt.

Wat je nodig hebt:

  • Drukknop aangesloten op pin 7
  • LED aangesloten op pin 9
  • Vergeet niet: gebruik INPUT_PULLUP en sluit je knop aan tussen pin 7 en GND
// Knop-test: laat een LED branden als je de knop indrukt

int knopPin = 7;
int ledPin = 9;

void setup() {
  pinMode(knopPin, INPUT_PULLUP); // interne pull-up weerstand
  pinMode(ledPin, OUTPUT);
}

void loop() {
  if (digitalRead(knopPin) == LOW) {  // knop ingedrukt
    digitalWrite(ledPin, HIGH);       // LED aan
  } else {
    digitalWrite(ledPin, LOW);        // LED uit
  }
}

Let op: De Arduino leest LOW als de knop wordt ingedrukt, omdat je INPUT_PULLUP gebruikt.

Reflectievragen

  • Waarom is een pull-down weerstand nodig bij een knop?
  • Wat gebeurt er als je de weerstand weglaat?
  • Kun je ook een pull-up weerstand gebruiken in plaats van een pull-down?
  • Wat zou er gebeuren als je de pin instelt als INPUT in plaats van INPUT_PULLUP?

Bespreek je antwoorden kort met een klasgenoot of noteer ze in je logboek.


Vooruitblik op Les 3 – Detectie met sensoren

In de volgende les leer je:

• Hoe een sensor signalen doorgeeft aan de Arduino
• Wat het verschil is tussen een analoge en digitale ingang
• Hoe functies als pulseIn() en Serial.print() je helpen om sensordata te verwerken

Kun jij al bedenken waarom sommige sensoren een analoge pin nodig hebben?

Geschreven door Yilmaz Tamer

Comments

0 reacties

Een reactie versturen

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *