Arduino et claviers (guide complet)

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:

image

image

Principe de fonctionnement


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

image

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:

image

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:

image

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;//    void setup() { Serial.begin(9600); analogReadResolution(10);//      0...1023 } void loop() { Serial.println(getPressedKeypadButton());//       } short int getPressedKeypadButton(){//  keypad`a //   1  16      0     const int OCCURACY = 5;//     int sensorValue = analogRead(KEYPAD_PIN);//    int keys[] = {1016, 937, 860, 794, 683, 641, 604, 571, 509, 485, 464, 444, 407, 328, 275, 236};//    (0-15,  0=1, 1=2  ..) if(sensorValue > -OCCURACY && sensorValue < OCCURACY){return 0;}//   ,    0 for(short int i = 0; i < 16; i++){//             if(sensorValue > (keys[i] - OCCURACY) && sensorValue < (keys[i] + OCCURACY)){ return i+1;//   , ..     0   ,    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!

Source: https://habr.com/ru/post/fr460409/


All Articles