Ardu? No!MTobjectsLes ensembles de boutons ≫ MTkeypad

MTkeypad, matrice carrée
Gestion par événements pour UNO, Nano, Mega

Un objet MTkeypad gère une matrice carrée de boutons.

Schéma pour la matrice carrée simple

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 bits7 bits8 bits9 bits10 bits
maxi9 boutons12 boutons16 boutons20 boutons25 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);

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