Arduino Nano - Knop - Lange Druk en Korte Druk
Deze handleiding leert u hoe u met Arduino Nano een lange druk en korte druk op een knop detecteert. We behandelen gedetailleerd de volgende voorbeelden:
- Arduino Nano detecteert een korte druk op de knop
- Arduino Nano detecteert een lange druk op de knop
- Arduino Nano detecteert zowel een lange als een korte druk op de knop
- Arduino Nano gebruikt debounce voor het detecteren van lange en korte drukken
In het laatste gedeelte leren we hoe u debounce gebruikt om knopdrukken in praktische toepassingen te detecteren. Wilt u meer weten over waarom debouncing noodzakelijk is voor knoppen? Bekijk dan dit artikel. Zonder debounce kunnen we soms ten onrechte een korte knopdruk registreren.
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 vertrouwd bent met knoppen (inclusief pinout, functionaliteit en programmeren), kunnen de volgende tutorials u helpen:
Aansluitschema

This image is created using Fritzing. Click to enlarge image
Zie De beste manier om Arduino Nano en andere componenten van stroom te voorzien.
In deze handleiding maken we gebruik van de interne pull-up weerstand. Hierdoor is de stand van de knop in rust HIGH en LOW wanneer deze wordt ingedrukt.
Hoe detecteert u een korte druk
We berekenen het interval tussen het moment dat de knop wordt ingedrukt en losgelaten. Als de duur korter is dan een vooraf ingestelde tijd, wordt een korte druk gedetecteerd.
Geef de duur van een korte druk op.
- Detecteer wanneer de knop wordt ingedrukt en registreer het tijdstip.
- Detecteer wanneer de knop wordt losgelaten en registreer het tijdstip.
- Bereken de duur van de druk.
- Vergelijk de drukduur met de opgegeven korte druk tijd om een korte druk te herkennen.
Arduino Nano Code voor het detecteren van korte druk
Snelle stappen
- Upload de code naar de Arduino Nano via de Arduino IDE.
- Druk meerdere keren kort op de knop.
- Controleer de uitvoer op de Seriële Monitor.
※ Notiz:
De Seriële Monitor kan meerdere detecties van korte drukken tonen bij één druk. Dit is het verwachte gedrag van de knop en wordt het “chattering phenomenon” genoemd. In het afsluitende gedeelte van deze tutorial zullen we dit probleem aanpakken.
Hoe detecteert u een lange druk
Er zijn twee manieren om een lange druk te detecteren:
- Het lange druk event wordt herkend nadat de knop is losgelaten.
- Het lange druk event wordt herkend terwijl de knop nog ingedrukt wordt gehouden, zelfs voordat deze is losgelaten.
- In de eerste toepassing berekenen we de tijd tussen het indrukken en loslaten van de knop. 2. Is de duur langer dan een bepaalde tijd, dan wordt een lange druk herkend.
In het tweede geval meten we continu de drukduur terwijl de knop ingedrukt wordt gehouden en controleren we voortdurend op lange druk totdat de knop wordt losgelaten. Zodra deze drempel wordt overschreden, herkennen we de lange druk.
Arduino Nano Code voor detectie van lange druk na loslaten
Snelle stappen
- Upload de code naar de Arduino Nano via de Arduino IDE.
- Wacht een seconde en druk de knop in en laat deze weer los.
- Bekijk het resultaat op de Seriële Monitor.
Het event 'lange druk' wordt alleen gedetecteerd wanneer de knop wordt losgelaten.
Arduino Nano Code voor detectie van lange druk tijdens indrukken
Snelle stappen
- Upload de code naar de Arduino Nano via de Arduino IDE.
- Houd de knop enkele seconden ingedrukt.
- Controleer de uitvoer op de Seriële Monitor.
Het event 'lange druk' wordt alleen geregistreerd zolang de knop nog niet is losgelaten.
Hoe detecteert u zowel lange als korte druk
Korte druk en lange druk na loslaten
Snelle stappen
- Upload de code naar de Arduino Nano via de Arduino IDE.
- Druk de knop kort of lang in.
- Bekijk de uitvoer op de Seriële Monitor.
※ Notiz:
De Seriële Monitor kan meerdere korte druk detecties weergeven tijdens een lange druk. Dit is het verwachte gedrag van de knop en wordt aangeduid als het "chattering phenomenon". Een oplossing hiervoor wordt gegeven in het afsluitende gedeelte van deze tutorial.
Korte druk en lange druk tijdens indrukken
Snelle stappen
- Upload de code naar de Arduino Nano via de Arduino IDE.
- Druk de knop lang in en daarna kort.
- Bekijk het resultaat op de Seriële Monitor.
※ Notiz:
De Seriële Monitor kan meerdere detecties van korte drukken tonen tijdens een lange druk. Dit is het verwachte gedrag van de knop en wordt het “chattering phenomenon” genoemd. Dit probleem wordt later in deze tutorial opgelost.
Lange en korte druk met Debouncing
Het is essentieel om debounce toe te passen op de knop in veel toepassingen.
Debouncing kan ingewikkeld zijn, vooral bij meerdere knoppen. Voor beginners hebben wij de bibliotheek ezButton ontwikkeld om het eenvoudiger te maken.
We gebruiken deze bibliotheek in onderstaande voorbeelden.
Korte en lange druk met debounce na loslaten
Snelle stappen
- Installeer de ezButton bibliotheek.
- Raadpleeg Hoe Te voor installatie-instructies.
- Upload de code naar de Arduino Nano via de Arduino IDE.
- Houd de knop kort of lang ingedrukt.
- Bekijk de resultaten op de Seriële Monitor.
Korte en lange druk met debounce tijdens indrukken
Snelle stappen
- Voeg de ezButton bibliotheek toe aan uw project. Raadpleeg Hoe Te voor instructies.
- Compileer en upload de code met de Arduino IDE naar uw Arduino Nano.
- Houd de knop kort of lang ingedrukt.
- Bekijk de uitvoer 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 lange en korte druk nodig is
- Om het aantal knoppen te minimaliseren, kan één knop meerdere functies hebben. Bijvoorbeeld: een korte druk schakelt de bedieningsmodus, terwijl een lange druk het apparaat uitschakelt.
- Lange drukken voorkomen ongewenste activering. Sommige apparaten gebruiken een knop bijvoorbeeld voor fabrieksreset. Als de knop per ongeluk wordt ingedrukt, kan dit gevaarlijk zijn. Daarom wordt fabrieksreset alleen geactiveerd als de knop voor een bepaalde tijd wordt ingedrukt (bijvoorbeeld 5 seconden).