Erkennen des langen Drückenzustands des Druckknopfs
Um die Funktionalität der Taste hinzuzufügen, um zu funktionieren, wenn sie lange gedrückt wird.
Hardware -Montage zum Erkennen des langen Drückenzustands des Druckknopfs
Um zu sehen, wie die Schaltung auf der tatsächlichen Hardware aussieht, haben wir die Hardware -Montage gemacht, die unten im Bild angegeben ist.
Wie Sie im Bild oben sehen können, haben wir Pin 8 von Arduino verwendet, um es mit dem Druckknopf mit dem grünen Draht und mit dem schwarzen Draht zu verbinden, um den Druckknopf mit dem Bodenstift von Arduino anzuschließen.
Arduino -Code zum Erkennen des langen Drückenzustands des Druckknopfs
Um die lange Drücke der Drucktaste zu erkennen, haben wir den Mikrocontroller mithilfe der Millis () -Funktion programmiert. Wir haben den langen Druckstatus festgestellt, indem wir die Zeit erhalten haben, für die der Status des Druckknopfs hoch und niedrig blieb. Danach berechneten wir die Dauer, für die die Taste gedrückt wurde.
In diesem Fall haben wir den konstanten Zeitwert von einer Sekunde mit 1000 Millisekunden als kurzer Drücke für die Taste gegeben. Wenn die Pressedauer mehr als Zeit für die kurze Pressezeit ist, wird sie als lange Presse angesehen und wird auf dem seriellen Monitor angezeigt. Im Folgenden haben wir die Arduino -Skizze gegeben.
int button = 8; /* Arduino -Pin für den Druckknopf*/
int Short_time = 1000; / * Zeit, die als kurze Druckzeit angesehen wird */
lange On_Duration;/ * Variable, die den Zeitwert speichert, für den die Taste gedrückt wird */
int Pothstate = niedrig; / * Setzen Sie den anfänglichen Status der Drucktaste hoch, da wir den input_pullup -Modus verwenden */
int präsent; /* Variable, die den gegenwärtigen Status speichert, wenn die Schaltfläche*/
nicht signiert long press_time = 0; / * Zeit, zu der die Taste gedrückt wurde */
nicht signiert long release_time = 0;/ *Zeit, zu der die Taste freigegeben wird */
void setup ()
Serie.Beginnen Sie (9600);/* Geben Sie die Baud -Rate für die serielle Kommunikation*/an
PinMode (Taste, input_pullup);/* Geben Sie den Arbeitsmodus für die Drucktaste ein, die input_pullup ist (umdreht die Eingänge der Taste)*/
void Loop ()
// Lesen Sie den Status des Switch/Taste:
Presentate = digitalread (Taste);/ * Erhalten Sie den gegenwärtigen Status der Drucktaste */
if (voreinstaat == High && prässtate == low) / * Wenn die Taste gedrückt wird * /
drücken Sie_time = millis ();/ * Speichern Sie die Zeit in Millisekunden mit der Millis -Funktion */
else if (vorher (vorherstate == low && präsState == hoch) /* Wenn die Schaltfläche veröffentlicht wird* /
release_time = millis ();/ * Speichern Sie die Zeit, zu der die Schaltfläche veröffentlicht wurde */
long on_time = Release_time - Drücken Sie_Time;/* Berechnung der Zeit, für die die Taste im niedrigen Zustand blieb*/
if (on_time> Short_time) /* Vergleich des Zeitwerts, für den die Taste für die kurze Drückenzeit auf den Wert gedrückt wird
Serie.println ("Taste wird lange gedrückt");/ * Drucken der Daten auf dem seriellen Monitor */
Vorherigesstate = präsentieren;/ * Speichern des Barwerts im vorherigen Wert */
Hardwaredemonstration
Wir haben die Schaltung auf der Hardware direkt gemäß der zuvor besprochenen Hardware -Montage gemacht, und das Bild unten zeigt die Hardware -Implementierung der Druckknopfkreis, um den langen Status der Taste zu erkennen.
Wenn wir die Taste länger als eine Sekunde drücken, zeigt der Arduino -Code auf dem seriellen Monitor angezeigt, dass die Taste für lange Zeit wie im folgenden Bild gezeigt gedrückt wird:
Abschluss
Die Bedeutung der Verwendung des langen Druckstatus der Drucktaste besteht darin, dass Sie eine einzelne Taste verwenden können, um mehr als eine Aufgabe auszuführen. Um zu erklären, wie Sie den langen Druckstatus des Druckknopfs erkennen, haben wir eine Schaltung entworfen und auf der tatsächlichen Hardware implementiert. Wir haben auch die Arduino -Skizze zur Verfügung gestellt, die das Thema großartig unterschätzt.