Interrupteurs

Page Actions

Les interrupteurs

Introduction

Dans notre kit nous avons 4 types de dispositifs qui peuvent servir d'interrupteur :
  • l'interrupteur m\xE9canique simple (push button)
  • le clavier \xE0 16 touches
  • le d\xE9tecteur infrarouge passif (PIR: Passive InfraRed Sensor)
  • le d\xE9tecteur tactile capacitif
pushbuttton.png keypad.png pir.png
interrupteur m\xE9canique clavier 16 touches capteur PIR

L'interrupteur m\xE9canique

Si on pousse le bouton d'interruption un contact est \xE9tabli et un courant peut passer \xE0 travers le bouton. Si le bouton est rel\xE2ch\xE9 le circuit est interrompu. On peut connecter un tel bouton \xE0 un pin GPIO, programm\xE9 en entr\xE9e avec une r\xE9sistance "pull-up" \xE9galement programm\xE9. L'autre pin du bouton est mis \xE0 la masse. On lit une valeur de "1" si le bouton est rel\xE2ch\xE9 (la tension Vcc appliqu\xE9 via la r\xE9sistance "pull-up", et z\xE9ro si le bouton est press\xE9.

L'interrupteur m\xE9canique a le probl\xE8me que les transitions sont g\xE9n\xE9ralement pas propre. Pendent quelques ms son \xE9tat peut sauter entre z\xE9ro 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\xE9barrasser de ce probl\xE8me.

Pour lire l'\xE9tat de l'interrupteur on peut \xE9crire une boucle qui lit la valeur du pin GPIO en intervalles r\xE9guliers (polling) ou on peut cr\xE9er une interruption quand l'\xE9tat du pin GPIO change. Dans ce cas MicroPython appelle une fonction "callback" ou "interrupt service routine" pr\xE9c\xE9demment d\xE9finie par le programmeur et enregistr\xE9 avec la d\xE9claration 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\xE9 (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\xE9 le contact entre une ligne et une colonne est \xE9tabli. 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\xE9e avec pull-up. Maintenant on change une ligne en mode sortie avec la valeur z\xE9ro (on tire la ligne \xE0 la masse). En suite toutes les colonnes sont lues pour v\xE9rifier si on trouve un z\xE9ro sur une de ces colonnes. Si c'est le cas, la ligne (\xE0 la masse) et la colonne (avec la valeur z\xE9ro) nous dit quel bouton \xE9tait activ\xE9. Apr\xE8s on remet la ligne en entr\xE9e et on poursuit la proc\xE9dure pour la ligne suivante.

-- %USERSIG{UliRaich - 2021-06-21}%

Comments

 
I Attachment Action Size Date Who Comment
keypad.pngpng keypad.png manage 91 K 21 Jun 2021 - 07:59 UnknownUser  
keypadLayout.pngpng keypadLayout.png manage 100 K 29 Jun 2021 - 18:49 UnknownUser  
pir.pngpng pir.png manage 143 K 21 Jun 2021 - 07:59 UnknownUser  
pushbuttton.pngpng pushbuttton.png manage 48 K 21 Jun 2021 - 07:59 UnknownUser  
Topic revision: r4 - 29 Jun 2021, UliRaich