Bekijk de 38 andere Arduino lessen

Ik vind het belangrijk dat Bas on Tech door iedereen kosteloos gebruikt kan worden.

Help mij de toekomst van Bas on Tech te verzekeren. Je donatie zal o.a. worden gebruikt voor hosting, video's en onderhoud.

Alvast bedankt!

iDEAL en Bancontact vind je onder het "Direct Debit" tabblad in de 4e stap.

5 · LED schakelen met drukknop


Introductie

In deze Nederlandstalige Arduino tutorial voor beginners leer ik je hoe je een drukknop op de juiste manier kunt uitlezen. Wist je bijvoorbeeld dat het handig is om een pull-down weerstand te gebruiken? Nee? Lees dan verder 😃

Lesmateriaal

Onderaan op deze pagina vind je de knop lesmateriaal waarmee je het lesmateriaal kunt downloaden. Dit materiaal bestaat uit de code, schakelschema en andere bestanden die in de les worden gebruikt.

Drukknop

In het Engels heeft een drukknop verschillende namen zoals push button, switch en tactile switch. Ze zijn er in allerlei soorten en maten. Wij gaan gebruik maken van een 4-pins drukknop .

schematische weergave drukknop
schematische weergave drukknop

Rechts zie je een schematische weergave van de drukknop. Pin 1 en 2 zijn met elkaar verbonden, net als pin 3 en 4. Zodra we de knop indrukken worden alle pins met elkaar verbonden.

Normally open / normally closed.

Deze drukknop is een zogenaamde Normally Open knop. Dit wordt vaak afgekort tot NO. Dit betekend dat de knop standaard open is en dus geen verbinding maakt tussen de pins. Een Normally Closed schakelaar is het spiegelbeeld. Hier zijn juist alle pins met elkaar verbonden. Deze verbinding wordt pas verbroken als de knop wordt ingedrukt.

De schakeling

4-pins drukknop aangesloten op de Arduino
4-pins drukknop aangesloten op de Arduino

Druk de drukknop precies over de middengoot in het breadboad. Sluit de volgende jumper wires aan:

  • De 5V op de Arduino -> de pin links onder van de drukknop
  • De 12 op de Arduino -> de pin rechts boven van de drukknop

Pulldown weerstand

In principe zou de drukknop nu al zijn werk kunnen doen. Zodra we de knop in drukken wordt de 5V met pin 12 verbonden en ziet de Arduino dit als HIGH. Het probleem wat nu ontstaat is dat je een "zwevende" staat hebt als je de knop niet indrukt. Het kan zo zijn dat drukknop niet 100% stroom tegenhoudt. Dit kleine stroompje kan ervoor zorgen dat de Arduino de staat van de drukknop niet goed kan uitlezen.

Daarom maken we in deze schakeling gebruik van een pull-down weerstand. Deze weerstand zorgt ervoor dat de staat van de drukknop echt 0 Volt is als de knop niet in ingedrukt. We plaatsen de weerstand tussen de pin rechts onder van de drukknop en de GND van de Arduino. De weerstand "trekt" nu de stroom naar de GND toe.

Arduino Code

We beginnen de code met het definiëren van drie variabelen:

1 int switchPin = 12;
2 int ledPin = LED_BUILTIN;
3 int switchState = LOW;
  • switchPin is de pin waarop we de drukknop hebben aangesloten
  • ledPin stellen we in op LED_BUILTIN waarmee we automatisch de juist LED pin terug krijgen
  • In switchState slaan we op wat de huidige staat van de drukknop is

setup()

1 void setup() {
2     Serial.begin(9600);
3     pinMode(ledPin, OUTPUT);
4     pinMode(switchPin, INPUT);
5 }

Als eerste initialiseren we de seriële monitor. Daarna stellen we de ledPin in als uitvoer de switchPin als invoer.

loop()

1 // Herhaal oneindig
2 void loop() {
3     switchState = digitalRead(switchPin);
4 
5     Serial.println(switchState);
6 
7     if (switchState == HIGH) {
8         digitalWrite(ledPin, HIGH);
9     } else {
10         digitalWrite(ledPin, LOW);
11     }    
12 }

De loop() functie bestaat uit 3 delen:

  • Uitlezen van drukknop
  • Printen naar seriële monitor
  • LED aan/uit schakelen

Uitleg code

Als eerste lezen we de staat van drukknop met digialRead uit. Hierna gebruiken wel Serial.println om de uitgelezen waarde naar de seriële monitor te sturen.

In het if statement bepalen we of de staat van de drukknop HIGH of LOW is. Zodra deze HIGH is, zetten we de ingebouwde LED aan en omgekeerd.

Code uploaden naar Arduino

Ons programma is nu klaar om naar de Arduino te worden gestuurd. Open hierna de seriële monitor:

Hulpmiddelen ▸ Seriële monitor

Als het goed is, zie je zodra je de knop indrukt het getal van 0 naar 1 veranderen en het ingebouwde LED aan of uit gaan.

5 · LED schakelen met drukknop schakelschema