Door een drukknop te gebruiken kun je heel gemakkelijk een invoermethode aan een project toevoegen. Een drukknop is namelijk een ontzettend eenvoudig component. Wanneer de knop is ingedrukt zijn de pootjes elektrisch met elkaar verbonden. Wanneer de knop niet is ingedruk, zijn de pootjes niet met elkaar verbonden.

Het symbool van een drukknop

Pinout

In onze werkplaats maken we voornamelijk gebruik van drie verschillende drukknop-ontwerpen. De pinout van deze knoppen verschilt lichtelijk.

De pinout van de eerste drukknop is hieronder te zien. De roodgekleurde pootjes zijn met elkaar verbonden, en de blauwe pootjes zijn met elkaar verbonden. De rode en blauwe pootjes zullen alleen met elkaar verbonden zijn wanneer de knop is ingedrukt.

Op een breadboard zullen de elektrische verbindingen er dus als volgt uitzien:

De knop aan de linkerkant is niet ingedrukt, de knop aan de rechterkant wel.

Ook hebben we nog een type knop die bedoeld is om op een breadboard te gebruiken, echter is deze niet bedoeld om over het midden van de breadboard te zetten. De pinout van deze knop is, zoals hieronder te zien, net wat eenvoudiger dan die van de andere knop.

Deze knop zet je op de volgende manier in een breadboard:

Het derde type drukknop, die we in onze werkplaats gebruiken, verschilt van de rest. Deze knop is namelijk minder makkelijk om op een breadboard te gebruiken. Hij is bedoeld om op een eenvoudige manier mechanisch geïnstalleerd te worden. Deze knop bevat daarom ook schroefdraad en een moertje.
De pinout van dit type drukknop ziet er als volgt uit:

Het spijt ons, dit plaatje is nog niet beschikbaar.

In een circuit

Een drukknop kan dus gebruikt worden om gemakkelijk een invoermethode toe te voegen aan een project. Maar hoe ziet zo een circuit er eigenlijk uit? In het lab ‘Hoe ontwerp je een circuit?’(nog in ontwikkeling) kun je zelf een circuit, die gebruikmaakt van een knopje, leren bouwen. In dit lab maken we gebruik van het volgende schema:

In dit schema kunnen we zien dat de drukknop in serie met de led staat. Dit betekent dat de stoom zowel door de knop als door de led moet lopen om een stoomkring te vormen. Wanneer de knop niet is ingedrukt, zal er geen stroom doorheen kunnen lopen. Wanneer er geen stroom door de knop loopt, zal er ook geen stroom door de led kunnen lopen. De led zal dus geen licht afgeven.

Wanneer de knop wel is ingedrukt zal er wel stoom door de knop kunnen lopen en zal de led, als gevolg, aan gaan.

De knop mag zich bovendien ook aan de minkant van de led bevinden. Wanneer de knop zich hier bevind kan deze namelijk nog steeds de stroomkring breken. De knop staat in het aangepaste circuit namelijk ook in serie met de led.

Met een Arduino

We kunnen deze drukknopjes ook aan een Arduino verbinden. Hiervoor kunnen we het volgende elektrische schema gebruiken:

In dit schema is de knop dus aan de ene kant verbonden met een Arduino GPIO pin. Dit zijn de A en D pinnen van de Arduino. Dus de pinnen A1, D1, A2, D2, enzovoorts. Voor dit voorbeeld maken we gebruik van de D1 pin. Aan de andere kant is de knop verbonden met ground. Om de knop vervolgens met de Arduino af te lezen moeten we de volgende code tussen de accolades ({}) van de void setup() toevoegen:

pinMode(1, INPUT_PULLUP);
#

Deze code zorgt ervoor dat de Arduino de pin als een input ziet. De Arduino zal hierdoor weten dat het de bedoeling is om deze pin uit te lezen, en dus niet om naar deze pin te schrijven. Ook hebben we de PULLUP ingeschakeld. Dit betekent dat de Arduino deze pin van stroom zal voorzien. Het wordt dus als het ware een vijf volt pin. Deze pin zal echter wel een grote weerstand hebben waardoor we hier weinig stroom van kunnen trekken.

Omdat deze pin dus een vijf volt pin wordt kunnen we, net als onder het kopje ‘In een circuit’ beschreven is, een stroomkring met dit drukknopje maken. Wanneer het knopje ingedrukt is zal er stroom van de Arduino pin naar de ground lopen. De pin van de Arduino wordt hierdoor als het ware omlaag getrokken. Dit komt doordat het voltage van de ground, nul volt is. Doordat de pin omlaag getrokken wordt, zal de uitkomst van de volgende code false zijn:

digitalRead(1)

Wanneer de knop niet is ingedrukt zal er geen stroom door de stroomkring kunnen lopen. Hierdoor zal de pin van de Arduino dus niet omlaag worden getrokken. De pin zal dus een spanning van vijf volt hebben. De uitkomst van de digitalRead functie zal hierdoor true zijn.

Doordat de uitkomst van de digitalRead functie true of false is kunnen we in de code gebruikmaken van een if-statement. Deze zal er als volgt uitzien:

if(digitalRead(1) == true){
  //vul hier de code in die moet draaien wanneer de knop niet is ingedrukt
}else{
  //vul hier de code in die moet draaien wanneer de knop wel is ingedrukt
}