Aansluiten van een drukschakelaar

Een schakelaar lijkt wel zo ongeveer de eenvoudigste denkbare component. Zo simpel als het lijkt, is het echter niet. Het indrukken van de schakelaar moet er voor zorgen dat de spanning op een digitale input van 'laag' (0V) naar 'hoog' (5V) gaat. Als de ingang niet is aangesloten is de waarde ongedefinieerd. In onderstaande figuur zorgt de weerstand (R1) ervoor dat de uitgang 'laag' is zolang de schakelaar niet is ingedrukt. Als de schakelaar wordt ingedrukt, staat over de weerstand een spanning van 5V en daarmee is de uitgang 'hoog'.

Voor digitale techniek in combinatie met een klokfrequentie van 16MHz, is er wel een aandachtspunt: het zogenaamde 'denderen' van de schakelaar. Simpel gezegd komt het erop neer dat als we een schakelaar indrukken dat er contact gemaakt wordt, het contact weer kort verbroken wordt en er dan weer contact wordt gemaakt. En dat eventueel meerdere keren. Aangesloten op een digitale input, lijkt het dan alsof de schakelaar meerdere keren wordt ingedrukt en weer wordt losgelaten. In onderstaande sketch kan het door het denderen bij het indrukken van de schakelaar onmogelijk blijken om de code 1, 2, 1 (schakelaar 1, schakelaar 2, schakelaar 1) in te voeren.
De meest zuivere manier om dit te voorkomen is het gebruik van een drukschakelaar die bij het indrukken een contact verbreekt en in ingedrukte stand een ander contact maakt. Bij het loslaten wordt het eerste contact weer gemaakt.

Onderstaande sketch lost het probleem van het denderen van de schakelaar op. Nadelen van deze oplossing zijn wel dat per druktoets twee digitale inputs gebruikt worden en dat de schakelaars duurder zijn dan de druktoetsen met alleen een maakcontact.

In de projecten maken we gebruik van drukschakelaars met maakcontacten. Om het denderprobleem te omzeilen gebruiken we de 'delay' functie om zolang te wachten dat de schakelaar uitgedenderd zou moeten zijn. Als snel op het indrukken van de schakelaar gereageerd moet worden, komt de 'delay' na de uit te voeren actie. In andere gevallen kan de 'delay' meteen na het indrukken van de schakelaar komen.