Tags:
create new tag
view all tags

Les interrupteurs

Introduction

Dans notre kit nous avons 4 types de dispositifs qui peuvent servir d'interrupteur :

  • l'interrupteur mécanique simple (push button)
  • le clavier à 16 touches
  • le détecteur infrarouge passif (PIR: Passive InfraRed Sensor)
  • le détecteur tactile capacitif
pushbuttton.png keypad.png pir.png
interrupteur mécanique clavier 16 touches capteur PIR

L'interrupteur mécanique

Si on pousse le bouton d'interruption un contact est établi et un courant peut passer à travers le bouton. Si le bouton est relâché le circuit est interrompu. On peut connecter un tel bouton à un pin GPIO, programmé en entrée avec une résistance "pull-up" également programmé. L'autre pin du bouton est mis à la masse. On lit une valeur de "1" si le bouton est relâché (la tension Vcc appliqué via la résistance "pull-up", et zéro si le bouton est pressé.

L'interrupteur mécanique a le problème que les transitions sont généralement pas propre. Pendent quelques ms son état peut sauter entre zéro et un avant de se stabiliser. On appelle cet effet "switch bouncing" et vous allez trouver sur Internet plusieurs solutions hardware et software pour se débarrasser de ce problème.

Pour lire l'état de l'interrupteur on peut écrire une boucle qui lit la valeur du pin GPIO en intervalles réguliers (polling) ou on peut créer une interruption quand l'état du pin GPIO change. Dans ce cas MicroPython appelle une fonction "callback" ou "interrupt service routine" précédemment définie par le programmeur et enregistré avec la déclaration de l'interruption.

Le contact tactile capacitif

L'ESP32 fourni une interface pour les contacts tactiles capacitifs (TouchPad). On lit une valeur d'un contact faible s'il est touché (quelque dizaines) et in valeur forte (plus que 1000) sinon.

Le clavier 16 touches

Le clavier 16 touches utilise 4 pins lignes (row) et 4 pins colonne (column):

keypadLayout.png

Si une touche est pressé le contact entre une ligne et une colonne est établi. Le bouton "8" par exemple court-circuit la ligne r3 avec la colonne c2.

Analyser les touches

On met toutes les touches en mode entrée avec pull-up. Maintenant on change une ligne en mode sortie avec la valeur zéro (on tire la ligne à la masse). En suite toutes les colonnes sont lues pour vérifier si on trouve un zéro sur une de ces colonnes. Si c'est le cas, la ligne (à la masse) et la colonne (avec la valeur zéro) nous dit quel bouton était activé. Après on remet la ligne en entrée et on poursuit la procédure pour la ligne suivante.

-- Uli Raich - 2021-06-21

Comments

Topic attachments
I Attachment History Action Size Date Who Comment
PNGpng keypad.png r1 manage 91.4 K 2021-06-21 - 07:59 UliRaich  
PNGpng keypadLayout.png r1 manage 100.6 K 2021-06-29 - 18:49 UliRaich  
PNGpng pir.png r1 manage 143.3 K 2021-06-21 - 07:59 UliRaich  
PNGpng pushbuttton.png r1 manage 48.1 K 2021-06-21 - 07:59 UliRaich  
Edit | Attach | Watch | Print version | History: r4 < r3 < r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r4 - 2021-06-29 - UliRaich
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback