Arduino - Knop - Lang indrukken en kort indrukken
Wij leren:
- Hoe u een kort indrukken van een knop detecteert
- Hoe u een lang indrukken van een knop detecteert
- Hoe u zowel lang als kort indrukken van een knop detecteert
- Lang indrukken en kort indrukken met debouncing
In de eerste drie delen leren we de principes van detectie.
In het laatste deel leren we hoe we dit praktisch toepassen met debouncing. Zie waarom debouncen belangrijk is voor knoppen. Zonder debouncing kunnen we de knopdrukken foutief herkennen.
Hardware Benodigd
Of u kunt de volgende kits kopen:
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Over de knop
Als u niet bekend bent met de knop (pinout, werking, programmeren, enz.), leer er dan meer over in de volgende tutorials:
Aansluitschema

This image is created using Fritzing. Click to enlarge image
In deze tutorial gebruiken we de interne pull-up weerstand (pull-up resistor). Daarom is de toestand van de knop HIGH (hoog) als deze normaal is en LOW (laag) wanneer de knop wordt ingedrukt.
Hoe Detecteert u Kort Indrukken
We meten de tijdsduur tussen het indrukken en loslaten van de knop. Als de duur korter is dan een bepaalde maximale tijd, detecteren we dit als een kort indrukken.
Laten we stap voor stap kijken:
- Definieer hoe lang de maximale duur van een kort indrukken is
- Detecteer wanneer de knop wordt ingedrukt en sla de tijd van indrukken op
- Detecteer wanneer de knop wordt losgelaten en sla de tijd van loslaten op
- Bereken de drukduur en
- Bepaal of het een korte druk is door de drukduur te vergelijken met de gedefinieerde maximale korte druk tijd.
Arduino Code voor het detecteren van een korte druk
Snelle Stappen
- Upload de bovenstaande code naar de Arduino via de Arduino IDE
- Druk meerdere keren kort op de knop
- Bekijk het resultaat in de Seriële Monitor
※ Notiz:
De Seriële Monitor kan meerdere korte druk detecties tonen bij één druk. Dit is normaal gedrag van de knop, dit wordt het “chatterfenomeen” genoemd. Dit probleem wordt opgelost in het laatste deel van deze tutorial.
Hoe Detecteert u Lang Indrukken
Er zijn twee gebruikssituaties voor het detecteren van een lang indrukken:
- Het lang-druk event wordt gedetecteerd direct nadat de knop wordt losgelaten
- Het lang-druk event wordt gedetecteerd tijdens het indrukken, ook al is de knop nog niet losgelaten
In de eerste situatie meten we de tijd tussen indrukken en loslaten. Als deze langer is dan een bepaalde tijd, detecteren we lang indrukken.
In de tweede situatie meten we continu de tijd dat de knop ingedrukt wordt en controleren we op lang indrukken totdat de knop losgelaten wordt.
Arduino Code voor het detecteren van lang indrukken na loslaten
Snelle Stappen
- Upload de bovenstaande code naar Arduino via de Arduino IDE
- Houd de knop ongeveer een seconde ingedrukt en laat los
- Bekijk het resultaat in de Seriële Monitor
Het lang-druk event wordt alleen gedetecteerd direct nadat de knop is losgelaten
Arduino Code voor het detecteren van lang indrukken tijdens het indrukken
Snelle Stappen
- Upload de bovenstaande code naar Arduino via de Arduino IDE
- Houd de knop meerdere seconden ingedrukt en laat los
- Bekijk het resultaat in de Seriële Monitor
Het lang-druk event wordt alleen gedetecteerd terwijl de knop nog ingedrukt is
Hoe Detecteert u Zowel Lang Indrukken als Kort Indrukken
Kort indrukken en lang indrukken na loslaten
Snelle Stappen
- Upload de bovenstaande code naar Arduino via de Arduino IDE
- Druk de knop zowel lang als kort in
- Bekijk het resultaat in de Seriële Monitor
※ Notiz:
De Seriële Monitor kan meerdere korte druk detecties tonen bij het lang indrukken. Dit is normaal en wordt het “chatterfenomeen” genoemd. Dit wordt opgelost in het laatste deel van deze tutorial.
Kort indrukken en lang indrukken tijdens indrukken
Snelle Stappen
- Upload de bovenstaande code naar Arduino via de Arduino IDE
- Druk de knop zowel lang als kort in
- Bekijk het resultaat in de Seriële Monitor
※ Notiz:
De Seriële Monitor kan meerdere korte druk detecties tonen bij het lang indrukken. Dit is normaal en wordt het “chatterfenomeen” genoemd. Dit wordt opgelost in het laatste deel van deze tutorial.
Lang Indrukken en Kort Indrukken met Debouncing
Debouncing is erg belangrijk bij het gebruik van knoppen in veel toepassingen.
Debouncing is iets complexer, vooral bij gebruik van meerdere knoppen. Om het voor beginners makkelijker te maken, hebben we een library ontwikkeld, genaamd ezButton.
We gebruiken deze library in onderstaande codes.
Kort indrukken en lang indrukken met debouncing na loslaten
Snelle Stappen
- Installeer de ezButton library. Zie Hoe te installeren
- Upload de bovenstaande code naar Arduino via de Arduino IDE
- Druk de knop zowel lang als kort in
- Bekijk het resultaat in de Seriële Monitor
Kort indrukken en lang indrukken met debouncing tijdens indrukken
Snelle Stappen
- Installeer de ezButton library. Zie Hoe te installeren
- Upload de bovenstaande code naar Arduino via de Arduino IDE
- Druk de knop zowel lang als kort in
- Bekijk het resultaat in de Seriële Monitor
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.
Waarom is Lang Indrukken en Kort Indrukken Nodig
- Om het aantal knoppen te verminderen. Eén enkele knop kan meerdere functies hebben. Bijvoorbeeld, een kort indrukken om de werkmodus te veranderen, een lang indrukken om het apparaat uit te schakelen.
- Gebruik van lang indrukken om per ongeluk kort indrukken te vermijden. Sommige apparaten gebruiken de knop bijvoorbeeld voor een fabrieksreset. Dit kan gevaarlijk zijn als de knop per ongeluk wordt ingedrukt. Daarom is de fabrieksreset alleen geactiveerd als de knop lang wordt ingedrukt (bijvoorbeeld langer dan 5 seconden).