Comment détecter le bouton-poussoir long Appuyez sur Arduino

Comment détecter le bouton-poussoir long Appuyez sur Arduino
Lorsque l'interface humaine est nécessaire pour donner une entrée à un programme Arduino manuellement, des appareils différents comme le clavier ou les boutons poussants peuvent être utilisés. De plus, nous pouvons configurer la fonctionnalité de ces appareils en programmant le microcontrôleur. Par exemple, lorsque nous devons désactiver un appareil, nous pouvons configurer le bouton-poussoir qui ne fonctionnera que s'il est enfoncé pendant un certain temps. Cette fonctionnalité est également utilisée dans les smartphones. Ainsi, pour détecter si le bouton est long sur longtemps, nous avons expliqué le processus à l'aide d'un petit circuit et d'un code Arduino qui détecte si le bouton-poussoir est enfoncé pendant longtemps.

Détection de l'état de presse à long terme du bouton-poussoir

Pour ajouter la fonctionnalité du bouton pour fonctionner lorsqu'elle est enfoncée pendant longtemps, nous avons fait un circuit simple dont le schéma de circuit est donné ci-dessous, suivi des composants que nous avons utilisés pour faire le circuit.

  • Arduino Uno
  • Fils de connexion
  • 1 bouton-poussoir
  • Planche à pain

Assemblage matériel pour détecter l'état d'appui longue du bouton poussoir

Pour voir à quoi ressemblera le circuit sur le matériel réel, nous avons fait l'assemblage matériel qui est donné ci-dessous dans l'image.

Comme vous pouvez le voir dans l'image ci-dessus, nous avons utilisé la broche 8 d'Arduino pour la connecter avec le bouton-poussoir à l'aide du fil vert et à l'aide du fil noir pour connecter le bouton-poussoir avec la broche de terre d'Arduino.

Code Arduino pour détecter l'état de presse à long terme du bouton poussoir

Pour détecter la longue pression sur le bouton-poussoir, nous avons programmé le microcontrôleur à l'aide de la fonction Millis (). Nous avons détecté l'état de presse à long terme en obtenant le temps pour lequel l'état du bouton-poussoir est resté élevé et bas. Après cela, nous avons calculé la durée pour laquelle le bouton a été enfoncé, puis l'avons comparé à une valeur de temps constante en fonction de ce que nous pouvons dire que le bouton a été enfoncé pendant longtemps.

Dans ce cas, nous avons donné la valeur de temps constante d'une seconde qui est de 1000 millisecondes comme appuyez sur le bouton. Si la durée de la presse est plus que le temps pour le temps de presse court, il sera considéré comme la longue presse et sera affiché sur le moniteur série. Ci-dessous, nous avons donné l'esquisse Arduino utilisée pour programmer le contrôleur pour détecter l'état d'appui longue du bouton-poussoir.

Button int = 8; / * Broche arduino pour le bouton-poussoir * /
int short_time = 1000; / * Heure qui sera considérée comme le temps de presse court * /
Long on_Duration; / * variable qui stockera la valeur du temps pour laquelle le bouton est appuyé sur * /
Int PREVERSTATE = LOW; / * Réglage de l'état initial du bouton-poussoir élevé car nous utilisons le mode Input_pullup * /
int présentState; / * Variable qui stockera l'état actuel si le bouton * /
Long Press_time non signé = 0; / * Heure à laquelle le bouton a été appuyé sur * /
unsigned long liset_time = 0; / * temps auquel le bouton est libéré * /
void setup()
En série.commencer (9600); / * donnant le taux de bauds pour la communication en série * /
pinmode (bouton, input_pullup); / * donnant le mode de travail au bouton-poussoir qui est entrée_pullup (inverse les entrées du bouton) * /

VOID LOOP ()
// Lire l'état de l'interrupteur / bouton:
présentState = DigitalRead (bouton); / * Obtenir l'état actuel du bouton-poussoir * /
if (précédemmentstate == high && présentState == Low) / * si le bouton est enfoncé * /
press_time = millis (); / * économisez l'heure en millisecondes en utilisant la fonction Millis * /
else if (précédemmentstate == Low && présentState == high) / * si le bouton est libéré * /
release_time = Millis (); / * Économisez l'heure à laquelle le bouton a été libéré * /
long on_time = release_time - press_time; / * calcul de l'heure pour laquelle le bouton est resté à l'état bas * /
if (on_time> short_time) / * en comparant la valeur du temps pour laquelle le bouton est appuyé sur la valeur de l'heure à courte durée
En série.println ("Le bouton est enfoncé pendant longtemps"); / * Impression des données sur le moniteur série * /

PREMERSTATE = présentState; / * Enregistrer la valeur actuelle dans la valeur précédente * /

Démonstration matérielle

Nous avons réalisé le circuit sur le matériel en fonction de l'assemblage matériel qui est discuté précédemment, et l'image ci-dessous montre l'implémentation matérielle du circuit du bouton-poussoir pour détecter l'état d'appui longue du bouton.

Lorsque nous appuyons sur le bouton pendant plus d'une seconde, le code Arduino affiche sur le moniteur série, ce bouton est enfoncé pendant longtemps comme indiqué dans l'image ci-dessous:

Conclusion

L'importance de l'utilisation de l'état d'appui longue du bouton-poussoir est que vous pouvez utiliser un seul bouton pour effectuer plusieurs tâches. Donc, pour expliquer comment détecter l'état de presse longue du bouton-poussoir, nous avons conçu un circuit et l'avons implémenté sur le matériel réel et nous avons également fourni l'esquisse Arduino qui fournira une grande sous-estimation du sujet.