MTkeypad, matrice carrée
Gestion par événements pour UNO, Nano, Mega
Un objet MTkeypad gère une matrice carrée de boutons.
Les boutons sont sur une grille de L lignes et de C colonnes, et on a besoin de L+C entrées sur la carte. La matrice devrait être la plus carrée possible (L et C égaux ou différents de 1). Par exemple pour 12 touches, une matrice 4x3 demande 7 broches, une 3x5 ou 2x6 en demande 8 et une 1x12 en demande 13.
| 6 bits | 7 bits | 8 bits | 9 bits | 10 bits | |
| maxi | 9 boutons | 12 boutons | 16 boutons | 20 boutons | 25 boutons |
L'objet MTkeypad ne peut lire qu'une touche à la fois. Si plusieurs touches sont pressées, il retourne la touche de la ligne la "plus basse" et éventuellement la plus "à droite", ou même une touche non appuyée. Cela est dû au câblage lui même. On peut avoir jusqu'à 128 boutons (il faut 15 broches!). Il n'est pas possible d'utiliser les broches du keypad pour d'autres tâches car la gestion est sous interruption.
Avantages:
- intéressant avec des claviers 12 et 16 touches déjà câblés
- pas de composants supplémentaires
Inconvénients:
- lecture impossible si on appuie sur plusieurs touches
- d'autres structures semblables utilisent moins de broches
Include à rajouter
#include <MTobjects.h> // Voir http://arduino.dansetrad.fr/MTobjects
Je conseille fortement de laisser le commentaire, si une autre personne voulait essayer le programme, elle aurait directement un lien de téléchargement. C'est valable pour toutes les bibliothèques que vous utilisez.
Commentaire utile
lignes_sur colonnes_sur
Ce commentaire est un mot que l'on peut rajouter n'importe où et qui est ignoré par le compilateur.
Constructeur
MTkeypad(pinLignes,
pinColonnes,
onSelectFunction = PAS_D_ACTION,
onUnselectFunction = PAS_D_ACTION);
- pinLignes (uint8_t[]): broches sur lequel est branché la matrice, tableau contenant le nombre de lignes suivi des noms des broches
- pinColonnes (uint8_t[]): broches sur lequel est branché la matrice, tableau contennant le nombre de colonnes suivi des noms des broches
- onSelectFunction: ce qui se passe quand on appuie sur un bouton
- PAS_D_ACTION → rien ne se passe
- fonction → appel d'une fonction "void fonction(uint8_t touche) {...}" Le paramètre passé est le numéro de la touche.
- onUnselectFunction: ce qui se passe quand on relâche les boutons
- PAS_D_ACTION → rien ne se passe
- fonction: → appel d'une fonction "void fonction(void) {...}"
Variable utile
bounce
bounce (word): temps pendant lequel les rebonds sont ignorés. Par défaut 32ms, arrondi aux paquets de 16ms supérieurs. P. ex. bounce = 50 milli_secondes; donne des rebonds max de 64ms .
Fonctions utiles
byte getKey(void); virtual void onSelect(uint8_t touche); virtual void onUnselect(void);
getKey: renvoie le numéro de la touche appuyée, -1 si aucune
onSelect: fonction à surcharger appelée quand on appuie sur le bouton
onUnselect: fonction à surcharger appelée quand on relâche le bouton
Fonctions bonus
void setOnSelectFunction(onSelectFunction); void setOnSelectFunction(); void setOnUnselectFunction(onUnselectFunction); void setOnUnselectFunction();
setOnSelectFunction: change la fonction appelée lors d'un appui
setOnSelectFunction: sans paramètres supprime la fonction appelée lors d'un appui
setOnUnselectFunction: change la fonction appelée lors du relâchement
setOnUnselectFunction: sans paramètres supprime la fonction appelée lors du relâchement
Tests
- Exemple 1: Serrure codée
- Exemple 2: Serrure codée et raz
- Test 1: Simple test
- Test 2: Test et caractère
- Test 3: Test de getKey
- Test 4: Test de setOnSelectFunction
- Test 5: Test de onSelect