Etape 8: Logiciel - avec l’explication technique (partie 1) !
Dans notre projet, nous avons créé 2 versions de notre code pour les casiers.
TL; DR :
Si vous souhaitez ignorer l’explication technique, voici ce qu’il faut faire :
1. Téléchargez le code maître à l’unité avec un clavier et l’écran LCD connecté. Le fichier c’est « Master.ino ».
2. Télécharger le code de l’esclave de l’esclave. Le fichier c’est « Slave.ino ».
Explication technique :
Pour l’unité principale, le codage a obtenu un peu compliqué. Pour le bénéfice de ceux qui ce Instructable, voici une brève explication sur le fonctionne du code.
1. l’obtention de données à partir du tableau :
-Maintenant, ce projet était initialement prévu pour le microcontrôleur PIC 18 utilisé dans Polytechnique de Singapour, mais que nous avons constaté que la fonction Serial Monitor qui a fourni la plate-forme Arduino a été plus facile pour l’exportation des données que l’ancien, nous avons donc opté pour aller avec ce dernier pour notre projet.
-Cela signifie que nous avons un dilemme : le clavier qui l’école qui nous utilise le décodeur 74C922, ce qui signifie que nous avons dû faire quelques ingénierie inverse pour le faire fonctionner avec l’ONU. Cela vaut la peine, car il nous permet d’économiser 2 broches sur les 7 broches requis par défaut dans la bibliothèque de clavier. En substance, le clavier dispose de 5 sorties - un disponible des données de sortie, qui va haut qu’une touche est pressée et D, C, B, des bits, qui composent une représentation de 4 bits de quelle touche a été enfoncée.
Par conséquent, la partie initiale du code fonctionne en lisant les sorties du décodeur clavier uniquement lorsque la broche de données disponibles est élevée, mais rappelez-vous de ceci - la fonction digitalRead est couplée à une variable, et avec les bits de 4 données, cela signifie que nous avons 4 variables. C’est très bien, mais ils sont tous en position LSB !
Dans ce cas, quelques rudiments de programmation contribue - accéder à la fonction de déplacement au niveau du bit. En faisant usage de l’opérateur shifting fonction, nous sommes en mesure de restaurer la sortie de données 4 bits qui fournit le décodeur. Comme bit D est le MSB, nous procédons à un déplacement vers la gauche au niveau du bit, déplaçant par 3 positions, B et C par 2 positions, en 1 position.
Pour l’essentiel, voici ce qui arrive :
Légende :
|3|2|1|0| = Se réfère à des positions de bits individuels dans les données binaires. |3| désigne le bit 3, ou la quatrième position. |0| se rapportent au bit 0, la première position.
Entrée originale :
|3|2|1|0|
| NIL| NIL| NIL| D, C, B, POINTS A| (Comme vous pouvez le voir, bits D, C, B et A sont tous dans la position de bit 0, qui est incorrecte!)
Après un décalage au niveau du bit :
|3|2|1|0|
| D | C | B| POINTS A|
(Il s’agit de la forme originale des données, et cela signifie que nous pouvons faire maintenant utiliser cela pour lire à partir du clavier!)
Maintenant, remarquez que notre clavier est organisé selon le format suivant :
1, 2, 3, F,
4, 5, 6, E
7, 8, 9, D
A, 0, B, C
Ce que cela signifie, c’est qu’il faut organiser ces derniers en un modèle que nous pouvons utiliser pour correspondre au nombre de bit 4 unique généré par le décodeur pour chaque clé de la clé actuelle.
Par conséquent, à l’aide d’un tableau de caractères, nous avons
char de charSet [17] = « 123F456E789DA0BC »
(Ceci est extrait à partir du code)
Cela veut dire que lorsque vous appuyez sur la touche « 1 », le décodeur retourne la valeur de 4 bits « 0000 », ce qui correspond à la position 0 dans le tableau de caractères, ce qui est « 1 ». Si vous appuyez sur « C », le décodeur retourne « 1111 », ce qui correspond à la position 16 dans le tableau de caractères, qui est « C ». Si vous remarquez que notre tableau de caractères est 1 chiffre plus élevé qu’il doit être si cela se fait en C++, frettes pas, car cela fait partie de la syntaxe dans l’IDE Arduino.
Félicitations pour ce qui en fait ici ! Vous avez maintenant compris la méthode derrière l’interfaçage avec un clavier à l’aide d’un décodeur de clavier 74C922 !