Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Seulement trois broches pour un clavier 4x3

Composants et fournitures

Résistance 330 ohm
× 1
Résistance 1k ohm
× 3
Résistance 3k ohm
× 1
Clavier de commutation de matrice 4x3 à 12 touches
× 1
Arduino UNO
× 1

Outils et machines nécessaires

Fer à souder (générique)

Applications et services en ligne

Arduino IDE

À propos de ce projet

Présentation

L'objectif de ce projet est de réduire considérablement le nombre de broches requises par un pavé numérique. En effet, nous avons souvent besoin de nombreuses broches d'E/S par rapport à celles disponibles sur les cartes Arduino Uno ou Nanoboards.

Les claviers numériques ordinaires sont structurés en matrice :un clavier 4x3, nécessite 4+3 broches numériques Arduino. De nombreuses librairies sont disponibles sur le net pour l'utiliser avec Arduino.

Ma solution

La solution que je propose est bien meilleure car elle n'utilise que trois entrées analogiques, avec un circuit comme celui représenté sur la figure suivante.

Pour chaque colonne, il n'y a que 4 valeurs de tension, correspondant à chacune des 4 touches, plus zéro volt au cas où aucune touche n'est enfoncée. Dans le schéma équivalent (b), le R1e indique l'une des quatre résistances R1-R4, tandis que R2e est l'une des trois résistances R5-R7.

Voyons maintenant comment faire les quatre intervalles les plus larges possibles. Tout d'abord les résistances R2e =R5 =R6 =R7 peuvent être rendues égales, puis on peut régler R1 =0 pour avoir les sorties correspondant à la première ligne à 5V.

Avec R2=330 ohm, R3=1 k ohm, R4=3 k ohm et R5, R6, R7=1 k ohm, les intervalles suivants sont obtenus pour chaque sortie :

Comme vous pouvez le voir, les intervalles sur les trois sorties sont les plus grands possibles et vous pouvez utiliser six résistances standards avec une tolérance de ±5%. Avec une entrée analogique supplémentaire et une autre résistance, un clavier 4x4 peut être utilisé et ainsi de suite. La figure suivante montre les connexions avec Arduino.

Dans le schéma, la résistance R1 est connectée à la ligne 2 car celle de la ligne 1 l'a dessinée avec un fil, donc les références de résistance ont été mises à l'échelle par un. Les affectations de broches peuvent être modifiées selon les besoins, tant qu'elles sont configurables en broches analogiques.

Bien sûr, si Arduino est alimenté à 3,3 V, rien ne changera car le convertisseur ADC par défaut utilise la tension d'alimentation et les numéros ADC ne changent pas.

Pour tester le programme, n'ayant pas de clavier de ce type, je l'ai construit avec des touches recyclées, la figure ci-dessous montre mon prototype. Le connecteur droit à 5 broches est utilisé pour le câbler à Arduino.

Code

  • Analog4x3Keybf.ino
Analog4x3Keybf.inoArduino
Programme simple pour tester la fonction KeyPad()/* programme Analog4x3Keybf * test pour clavier 4x3 touches avec 3 sorties analogiques * G. Carrera - 19/11/2018 */// limites des valeurs de sortie clavier :const int NADCm100[4 ] ={923.669.412.256};const int NADCp100[4] ={1123.869.612.356};const char key[13] ={'1','4','7','C','2','5' ,'8','0','3','6','9','E'};int keyval[3];int i,colp,val;void setup(){ Serial.begin(9600); // utilisé avec le moniteur série}void loop() { char k; k =KeyPad();// lire le clavier if (k !='N'){ // une touche a été enfoncée Serial.print("key ="); Serial.println(k); retard (500); }}/******** Fonctions utilisées par le programme ********/char KeyPad(){// lit le clavier et renvoie la touche char// key ='N' pour aucun KeyScan();// lit le clavier analogique if (keyval[0]+keyval[1]+keyval[2] <40) { return 'N'; } else { // une touche a été enfoncée delay(10);// antibounce KeyScan();// relire le clavier analogique pour (i=0; i <3; i++){//identifier à quelle colonne il appartient if (keyval [i]> 40){ colp=i; val=keyval[i];// c'est la valeur correspondante pour (int j=0; j <4; j++){// identifier quelle touche a été pressée sur la colonne if (val>=NADCm100[j] &&keyval <=NADCp100[j]){ clé de retour[colp*4+j] ; Pause; } } } } }}void KeyScan(){// read clavier analogique keyval[0]=analogRead(A0); retard(1) ; keyval[1]=analogRead(A1) ; retard(1) ; keyval[2]=analogRead(A2) ; retard(1) ; }

Schémas


Processus de fabrication

  1. Excel pour les animations de matrice de LED RVB WS2812
  2. Alarme de soif d'usine
  3. Horloge de mots italienne
  4. Compteur kWh Sigfox
  5. Moniteur de température Bluetooth
  6. Serrure à commande gestuelle
  7. Le compagnon IC
  8. Une entrée analogique isolée pour Arduino
  9. Mesurez votre temps de réaction