Stap 3: Het toevoegen van een debouncer
Sommige drukknoppen zijn niet erg nauwkeurig en valse pers signalen kan geven. U zult merken dat deze bug wanneer u drukt op een knop en de acties van de uitvoer tweemaal worden geactiveerd. Dit verschijnsel heet stuiteren, en de methode om te voorkomen dat heet debouncing.
Wij gaan tot het instellen van een variabele te registreren de tijd in milliseconden en vervolgens elke wijziging pers signaal te vergelijken om te weten of al meer dan 50 milliseconden tussen hen. Als it´s is minder dan dat, is vervolgens, zonder twijfel, een valse push-signaal, en het script moet negeren.
#include "Keyboard.h"const int buttonPin = 2;int buttonState = 0;int prevButtonState = HIGH; long lastDebounceTime = 0;long debounceDelay = 50;void setup() { pinMode(buttonPin, INPUT_PULLUP); digitalWrite(buttonPin, HIGH); Keyboard.begin();}void loop() { buttonState = digitalRead(buttonPin); if ((buttonState != prevButtonState) && (buttonState == HIGH)) { // Here starts the output action Keyboard.press(KEY_LEFT_GUI); // Command key in Mac, use KEY_LEFT_CTRL for Pc Keyboard.press('v'); delay(100); Keyboard.releaseAll(); // This is important after every Keyboard.press it will continue to be pressed } prevButtonState = buttonState;}