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.