Raspberry Pi - Knop - Lang indrukken en kort indrukken
Deze handleiding legt uit hoe u met de Raspberry Pi een lange en korte indrukking van een knop kunt detecteren. Om het eenvoudig te houden, verdelen we het in de volgende voorbeelden:
- De Raspberry Pi detecteert een korte indrukking van de knop.
- De Raspberry Pi detecteert een lange indrukking van de knop.
- De Raspberry Pi detecteert zowel korte als lange indrukking van de knop.
- De Raspberry Pi past debouncing toe op zowel lange als korte indrukking.
In de laatste sectie onderzoeken we hoe u debouncing in een praktische situatie kunt gebruiken. Voor meer informatie over waarom debouncing bij knoppen noodzakelijk is, raadpleeg dit artikel. Zonder debouncing kunt u per ongeluk een korte indrukking van de knop verkeerd detecteren.
Hardware Vereist
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 knoppen (inclusief pinouts, werking en programmering), kunnen de volgende tutorials u op weg helpen:
Bedradingsschema

This image is created using Fritzing. Click to enlarge image
Om uw bekabelingsopstelling te vereenvoudigen en te organiseren, raden we het gebruik van een Schroevenklemaansluiting-shield voor Raspberry Pi aan. Deze shield zorgt voor veiligere en beter beheerbare verbindingen, zoals hieronder weergegeven:

In deze tutorial maken we gebruik van de interne pull-up weerstand. Dit betekent dat de knopstatus HIGH is wanneer de knop niet ingedrukt is, en LOW wanneer de knop ingedrukt wordt.
Hoe detecteert u een korte indrukking
We berekenen de tijd tussen het indrukken en loslaten van de knop. Als deze periode korter is dan een vooraf bepaalde tijd, registreren we een korte indrukking.
Specificeer de duur van een korte indrukking.
- Detecteer wanneer de knop is ingedrukt en registreer het tijdstip van indrukken.
- Bepaal wanneer de knop is losgelaten en registreer het tijdstip van loslaten.
- Bereken de drukduur.
- Vergelijk de drukduur met de gedefinieerde korte indrukkingstijd om een korte indrukking te identificeren.
Raspberry Pi Code voor het detecteren van de korte indrukking
Snelle stappen
- Zorg dat u Raspbian of een ander Raspberry Pi compatibel besturingssysteem op uw Pi hebt geïnstalleerd.
- Zorg dat uw Raspberry Pi verbonden is met hetzelfde lokale netwerk als uw pc.
- Zorg dat uw Raspberry Pi verbonden is met internet als u nog libraries moet installeren.
- Als dit uw eerste keer met Raspberry Pi is, bekijk dan de handleiding: Raspberry Pi instellen.
- Verbind uw pc met de Raspberry Pi via SSH met de ingebouwde SSH-client op Linux en macOS of PuTTY op Windows. Zie hoe verbind ik mijn pc via SSH met Raspberry Pi.
- Zorg dat de RPi.GPIO bibliotheek geïnstalleerd is. Zo niet, installeer die met het volgende commando:
- Maak een Python-scriptbestand met de naam short_press.py en voeg de volgende code toe:
- Sla het bestand op en voer het Python-script uit via het terminal met het volgende commando:
- Druk meerdere keren kort op de knop.
- Bekijk het resultaat in de Terminal.
Het script draait in een oneindige lus totdat u Ctrl + C indrukt in de terminal.
Hoe detecteert u een lange indrukking
Er zijn twee scenario’s om een lange indrukking te herkennen:
- Het lange-indrukken evenement wordt pas herkend nadat de knop is losgelaten.
- Het lange-indrukken evenement wordt herkend terwijl de knop ingedrukt wordt gehouden, nog vóór het loslaten.
In het eerste scenario wordt de tijd tussen indrukken en loslaten berekend. Als deze tijd langer is dan een vooraf bepaalde tijd, wordt een lange indrukking geregistreerd.
In het tweede scenario wordt de duur van het indrukken continu gecontroleerd zolang de knop ingedrukt is. Zodra de duur de vooraf bepaalde tijd overschrijdt, wordt de lange indrukking herkend, zelfs als de knop nog niet is losgelaten.
Raspberry Pi Code voor het detecteren van lange indrukking bij loslaten
Snelle stappen
- Maak een Python-scriptbestand met de naam long_press_1.py en voeg de volgende code toe:
- Sla het bestand op en voer het Python-script uit via het terminal met het volgende commando:
- Houd de knop 2 seconden ingedrukt en laat daarna los.
- Bekijk het resultaat in de Terminal.
Het lange-indrukken evenement wordt alleen herkend op het moment dat de knop losgelaten wordt.
Raspberry Pi Code voor het detecteren van lange indrukking tijdens indrukken
Snelle stappen
- Maak een Python-scriptbestand met de naam long_press_2.py en voeg de volgende code toe:
- Sla het bestand op en voer het Python-script uit via het terminal met het volgende commando:
- Houd de knop enkele seconden ingedrukt en laat de knop los.
- Bekijk het resultaat in de Terminal.
Het lange-indrukken evenement wordt al gedetecteerd terwijl de knop nog ingedrukt is, dus ook vóór het loslaten.
Hoe detecteert u zowel lange als korte indrukking
Snelle stappen
- Maak een Python-scriptbestand met de naam long_short_press.py en voeg de volgende code toe:
- Sla het bestand op en voer het Python-script uit via het terminal met het volgende commando:
- Druk korte en lange tijd op de knop.
- Bekijk de resultaten in de Terminal.
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 zijn lange en korte indrukking nodig?
- Om het aantal knoppen te minimaliseren, kan één knop meerdere functies uitvoeren. Bijvoorbeeld: een korte indrukking kan worden gebruikt om een bedieningsmodus te wisselen, terwijl een lange indrukking het apparaat uitschakelt.
- Een lange indrukking helpt per ongeluk indrukken te voorkomen. Sommige apparaten gebruiken een knop om een fabrieksreset te starten. Onbedoeld indrukken kan gevaarlijk zijn. Daarom werkt het apparaat zo dat een fabrieksreset alleen begint als de knop gedurende een bepaalde tijd wordt vastgehouden (bijvoorbeeld 5 seconden).