Met een drukknop voeg je heel gemakkelijk een invoermethode toe aan je project. Wanneer de knop is ingedrukt zijn de pootjes elektrisch met elkaar verbonden. Wanneer de knop niet is ingedrukt, zijn de pootjes niet met elkaar verbonden.

Het symbool van een drukknop

Pinout – kleine drukknop met vier pootjes

In de werkplaats van Junior IOT hebben we nu meer dan drie soorten drukknoppen. De pin-out lijkt erg op elkaar. Als voorbeeld kiezen we een eenvoudige drukknop met vier pootjes die goed gebruikt kan worden op een PCB. We kunnen deze ook ggoed gebruiken in het midden van ons breadboard.

In deze foto schetsen we hoe de aansluitingen van deze drukknop werken. Als de knop niet is ingedrukt, zijn telkwns twee pootjes met elkaar verbonden. De roodgekleurde pootjes hebben dan onderling contact, en de blauwe ook. Zodra de knop wordt ingedrukt, worden ook de rode en blauwe pootjes met elkaar verbonden.

Op een breadboard kan je deze elektrische verbindingen als volgt weergeven:

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

Pinout – kleine drukknop met twee pootjes

Het kleine drukknopje met twee pootjes kunnen we ook in het breadboard gebruiken. In dit geval kunnen we deze niet over het midden van het breadboard plaatsen, en we gebruiken dan een andere positie. Met minder pootjes is de pinout ook eenvoudiger.

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

Paneel drukknop met een schroefring

In onze werkplaats hebben we een grotere versie van deze laatste drukknop. Met een stevige ring kan deze in een paneel worden gemonteerd, en in de aansluitingen monteer je de aansluitdraden. met schroefjes. Deze gebruiken we niet met onze breadboards.

Een drukknop gebruiken in een circuit

Je ziet een toepassing van een drukknop in het lab ‘Hoe ontwerp je een circuit?’. Het  schema zie je hier.

Een drukknop gebruiken met een Arduino programma

De drukknop kan je makkelijk gebruiken als input voor de Arduino. Je gebruikt daarvoor  het volgende elektrische schema:

Dit schema toont dat de drukknop is verbonden met een Arduino GPIO pin en de GND. De Arduino GPIO pin zijn de analoge en digitale pinnen van de Arduino, A1, D1, A2, D2, enzovoorts. In dit voorbeeld gebruiken we de D1 pin.

In dit voorbeeld is de drukknop verbonden met ground. Let op: de officiële Arduino lessen vertellen dat je hier altijd nog een pullup of pulldown weerstand moet gebruiken, wij hebben echter gemerkt dat we kunnen vertrouwen op de ingebouwde weerstand in de Arduino.

Om de drukknop met de Arduino af te lezen voeg je de volgende code toe tussen de accolades ({}) van de void setup()

pinMode(1, INPUT_PULLUP);
#

Deze regel 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 te lezen, en dus niet om naar deze pin te schrijven. Ook hebben we de PULLUP ingeschakeld. Dit betekent dat de Arduino deze pin via een interne weerstand als het ware aan de vijf volt pin verbindt.

Op deze manier wordt deze pin als het ware een vijf volt pin. We maken nu de beschreven schakeling, waarmee de poort met de GND is verbonden als de drukknop wordt ingedrukt. We zeggen dan dat de pin van de Arduino omlaag wordt getrokken. Het voltage van de ground is immers nul volt. Wanneer de pin omlaag getrokken wordt, zal volgende code een false als uitkomst geven:

digitalRead(1)

Wanneer de knop niet is ingedrukt dan zal de pin van de Arduino via de interne weerstand naar vijf volt worden gebracht. De pin is dan ‘hoog’. De uitkomst van de digitalRead functie zal hierdoor true zijn.

Met true of false  als uitkomst van de digitalRead functie, kan je deze direct gebruiken binnen een if-statement. Dit ziet er zo uit:

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
}