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.
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 😃
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.
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 .
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.
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.
Druk de drukknop precies over de middengoot in het breadboad. Sluit de volgende jumper wires aan:
5V
op de Arduino -> de pin links onder van de drukknop12
op de Arduino -> de pin rechts boven van de drukknopIn 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.
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 aangeslotenledPin
stellen we in op LED_BUILTIN
waarmee we automatisch de juist LED pin terug krijgenswitchState
slaan we op wat de huidige staat van de drukknop is1 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.
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:
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.
Ons programma is nu klaar om naar de Arduino te worden gestuurd. Open hierna de 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.