Arduino Nano - Knop - Debounce
Wanneer een knop wordt ingedrukt of losgelaten, of een schakelaar wordt omgezet, denken beginners vaak dat de status verandert van LOW naar HIGH of van HIGH naar LOW. In werkelijkheid is dat niet altijd het geval. Door mechanische en fysieke eigenschappen kan de status van de knop (of schakelaar) snel tussendoor meerdere keren heen en weer schakelen tussen LOW en HIGH als reactie op één enkele actie. Dit fenomeen staat bekend als chattering. Chattering kan ervoor zorgen dat één enkele druk wordt gelezen als meerdere drukken, wat kan leiden tot storingen in bepaalde toepassingen.

De methode om dit probleem te elimineren noemen we debouncing of debounce. In deze tutorial leert u hoe u dit toepast wanneer u een knop gebruikt met de Arduino Nano. We doorlopen de volgende stappen:
- Arduino Nano code zonder debounce voor een knop.
- Arduino Nano code met debounce voor een knop.
- Arduino Nano code met debounce voor een knop met de ezButton bibliotheek.
- Arduino Nano code met debounce voor meerdere knoppen.
Hardware Benodigdheid
Of u kunt de volgende kits kopen:
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Over de Knop
Als u nog niet bekend bent met knoppen (pinout, functionaliteit, programmeren, enzovoort), kunnen de volgende tutorials u helpen:
Bedradingsschema

This image is created using Fritzing. Click to enlarge image
Zie De beste manier om Arduino Nano en andere componenten van stroom te voorzien.
Laten we de Arduino Nano code zonder en met debounce vergelijken, evenals hun respectievelijke gedrag.
Knop uitlezen zonder Debounce
Voordat we ingaan op het concept van debounce, bekijken we eerst de code zonder debounce en observeren we het gedrag.
Snelle Stappen
- Verbind een USB-kabel tussen de Arduino Nano en uw pc.
- Open de Arduino IDE, selecteer het juiste board en de juiste poort.
- Kopieer onderstaande code en open deze in de Arduino IDE.
- Klik op de Upload knop in de Arduino IDE om de code te compileren en te uploaden naar het Arduino Nano board.

- Open de Seriële Monitor.
- Druk de knop een paar seconden in en laat hem los.
- Herhaal dit meerdere keren.
- Bekijk het resultaat in de Seriële Monitor.
Soms heeft u de knop maar één keer ingedrukt en losgelaten. Toch interpreteert de Arduino Nano dit als meerdere drukken en loslaten. Dit is het chattering-fenomeen dat eerder in de tutorial is genoemd. Laten we in het volgende deel zien hoe dit op te lossen.
Knop uitlezen met Debounce
De onderstaande code past de methode toe die debounce heet om het chattering-effect te voorkomen.
Snelle Stappen
- Kopieer bovenstaande code en open deze in de Arduino IDE.
- Klik op de Upload knop in de Arduino IDE om de code naar de Arduino Nano te uploaden.
- Open de Seriële Monitor.
- Houd de knop een paar seconden ingedrukt en laat hem los.
- Bekijk het resultaat in de Seriële Monitor.
Zoals u kunt zien, is de knop slechts één keer ingedrukt en losgelaten. De Arduino Nano herkent dit als een enkele druk en loslaten. Het ongewenste ruis-effect is geëlimineerd.
Het Makkelijk Gemaakt - Arduino Nano Knop Debounce Code met Bibliotheek
We hebben een bibliotheek ontworpen, ezButton, om het eenvoudiger te maken voor beginners, vooral bij het werken met meerdere knoppen. Meer informatie over de ezButton bibliotheek vindt u hier.
Arduino Nano Knop Debounce Code voor Één Knop
Arduino Nano Knop Debounce Code voor Meerdere Knoppen
Het schema bij bovenstaande code: de illustratie van de bedrading bij deze code: De visuele weergave van de bedrading voor deze code:

This image is created using Fritzing. Click to enlarge image
Video Tutorial
We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.
Aanvullende Kennis
- De waarde van DEBOUNCE_DELAY varieert afhankelijk van de fysieke eigenschappen van elke knop. Het is mogelijk dat verschillende knoppen verschillende waarden vereisen.
Uitbreidbaarheid
De debounce-techniek kan ook worden toegepast met een schakelaar, touch sensor en meer.