Salut les habitants de Habr! Aujourd'hui, j'ai décidé de faire un guide complet du clavier pour l'Arduino.
Attention! L'article s'adresse principalement aux débutants!Dans de nombreux projets, il est nécessaire de créer la possibilité d'une entrée utilisateur. Si vous devez implémenter (relativement) un grand nombre de boutons, les connecter séparément devient à la fois long et irrationnel. À cet effet, il est préférable de choisir un clavier, mais comme tout choix, vous devez l'approcher consciemment. Quels sont les types de claviers et comment interagir avec eux?
Globalement, tous les modules de ce type peuvent être divisés en deux grandes catégories:
matrice et
analogique .
Claviers matriciels
Le clavier le plus simple, le moins cher et le plus populaire. Il est relativement facile à fabriquer et remplit la plupart du marché des modules Arduino. Cela ressemble le plus souvent à ceci:


Principe de fonctionnement
Vous pouvez comprendre le fonctionnement de ce clavier en étudiant le schéma suivant:

Pour comprendre quel bouton a été enfoncé, vous devez appliquer un signal aux quatre premiers contacts du module et regarder quel signal revient du second. Mais n'ayez pas peur de devoir écrire manuellement des algorithmes de traitement pour huit broches - la bibliothèque prête à l'emploi «keypad.h» nous y aidera, grâce à laquelle nous n'aurons pas à réinventer la roue.
Connexion Ă la carte
Connexion du module lui-mĂŞme
Dans cet article, j'utiliserai le schéma de connexion suivant:

Vous avez probablement une question: "Pourquoi ai-je décidé d'utiliser des broches du deuxième au neuvième, en sautant le zéro et le premier?" - le fait est que certains modules les utilisent respectivement comme canaux RX et TX pour recevoir et transmettre des données. Par exemple, un module Bluetooth. Par conséquent, compte tenu de l'ajout éventuel du projet à d'autres modules, il a été décidé de laisser ces broches de connexion libres.
Écriture de croquis
Pour commencer, afin de pouvoir utiliser la bibliothèque pour connecter les claviers dans le code, vous devez l'installer sur votre appareil. Cela peut être fait comme suit: dans l'IDE Arduino lui-même, cliquez sur
Sketch -> Connect Library -> Manage Libraries ... ou utilisez le raccourci clavier "Ctrl + Shift + I". Dans le lecteur de recherche dans "keypad.h" (sans crochets) et appuyez sur "Installation".
Après l'installation, passez à l'écriture du croquis:
#include <Keypad.h> // const byte ROWS = 4; // const byte COLS = 4; // char hexaKeys[ROWS][COLS] = {// , , {'1','4','7','*'}, {'2','5','8','0'}, {'3','6','9','#'}, {'A','B','C','D'} }; byte rowPins[ROWS] = {5, 4, 3, 2}; // byte colPins[COLS] = {9, 8, 7, 6}; // // : Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); void setup(){ Serial.begin(9600);// } void loop(){ char customKey = customKeypad.getKey();// if (customKey){// - Serial.println(customKey);// } }
Avantages et inconvénients
Inconvénients
- Trop de broches doivent être connectées pour fonctionner. C'est un gros problème, si vous créez non pas une calculatrice ou une serrure à combinaison, mais un projet plus important, dans lequel vous devez toujours utiliser un grand nombre de modules différents - peut-être qu'ils n'ont tout simplement pas assez de broches.
- La qualité d'exécution du module est trop faible: personne ne garantit un signal stable constant. Les claviers d'origine ne sont pas fabriqués à un niveau très élevé, et si vous avez passé une commande sur Aliexpress, vous devrez probablement réparer les montants des ingénieurs chinois avec un fer à souder afin d'obtenir un fonctionnement stable.
- Une bibliothèque supplémentaire est utilisée, qui occupera également la mémoire du microcontrôleur, dont il n'a déjà pas beaucoup. Si vous écrivez un grand projet avec de nombreuses fonctions et calculs et que vous devez lire les données du clavier manuellement ou utiliser un clavier analogique, chaque octet du compte.
Avantages
- Petit prix
- Facile Ă trouver en vente
Claviers analogiques
Principe de fonctionnement
Dans les claviers analogiques, des résistances sont utilisées pour modifier le niveau de tension et le signal passe par un canal, qui est en fait connecté à la broche analogique de la carte. Comment tout est organisé peut être compris en regardant le diagramme suivant:

Connexion Ă la carte
La connexion est très simple, mais peut varier en fonction du clavier spécifique. Dans cet article, je considérerai un exemple d'utilisation de
ce clavier analogique chinois avec Ali.
Donc: nous connectons la sortie analogique du clavier à n'importe quelle broche analogique de la carte, connectons la broche VCC de la carte à 3,3 V (ne regardez pas l'inscription sur le clavier qui dit 5 V - c'est une erreur), et GND sur la carte avec GND sur le module. Vous pouvez utiliser le schéma suivant:

Écriture de croquis
Il n'est pas nécessaire d'utiliser des bibliothèques tierces, car tout est extrêmement simple et clair. Voici le code lui-même, qui lit le bouton pressé et affiche son numéro, de 1 à 16 (de gauche à droite, de haut en bas) ou 0 si rien n'est pressé, sur le moniteur de port.
unsigned const short int KEYPAD_PIN = 0;
Avantages et inconvénients
Avantages
- Connexion très simple
- Une seule broche
- Enregistre la mémoire que vous ne passez pas sous la bibliothèque
- Fournit un fonctionnement stable (Ă condition que vous n'appuyiez pas sur plus d'un bouton Ă la fois)
Inconvénients
- Plus cher que les claviers matriciels
- La seule façon d'acheter sera probablement de passer commande en Chine et la livraison prendra un certain temps
Résumé
Personnellement, je recommande d'utiliser des claviers analogiques, car ils sont souvent, le plus souvent de meilleure qualité et les connecter est simple, simple. L'essentiel est de faire attention au tableau de valeurs des boutons enfoncés fourni par le fabricant ou, s'il n'y en a pas, vous pouvez effectuer ces mesures vous-même, en affichant les valeurs du port analogique dans le moniteur de port, afin de pouvoir les utiliser plus tard dans le code. Mais le choix vous appartient toujours: utiliser l'option bon marché standard ou surpayer pour des avantages importants dans certaines situations.
C’est tout pour moi. Laissez vos questions dans les commentaires, écrivez votre opinion et nous nous rencontrerons sur les espaces ouverts de Habr!