Étape 7: Le clavier...
Pour ceux qui n’ont jamais utilisé un clavier de type tableau, c’est comment ils fonctionnent.
Dans le but de réduire le nombre de fils qui sortent d’un clavier, les conducteurs sont disposées en lignes et colonnes. Ce type de clavier prend quelques Kung Fu afin qu’ils fonctionnent, mais elle réduit également le nombre de quilles que vous devez utiliser.
Dans un clavier filaire standard, vous avez un fil commun et un fil pour chaque bouton. Dans ce cas, ce serait un total de 17 fils.
Dans un tableau filaire clavier que vous avez seulement 8. Voici la capture. Les micro-contrôleurs possède 4 broches comme sorties (les lignes) et 4 broches comme intrants (les colonnes), que vous pouvez seulement lire 4 boutons à la fois.
"Quoi???!!! A quoi bon est que pour moi, j’ai acheté un clavier à 12 touches!"
Seul de la ligne est activée à la fois. Par exemple, que la première ligne est activée, cela met puissance d’un côté de chaque bouton sur la rangée du haut (1,2,3, A) si vous appuyez sur 1 alors vous savez pouvoir circule de sortie 1 à l’entrée 1. Si vous appuyez sur 2, alors vous savez débit d’alimentation de sortie 1 entrée 2. Si vous appuyez sur 3 puis coule puissance de sortie 1 à l’entrée 3, et si vous appuyez sur A puis puissance circule de sortie 1 à entrée 4.
Si vous deviez tourner sortie 2 sur qui mettrait puissance à côté de chacun des boutons sur la deuxième rangée (4,5,6, B) si vous appuyez sur 4 flux de puissance de sortie 2 à l’entrée 1. Si 5 est appuyé sur des flux de puissance de sortie 2 à entrée 2. Si le 6 est flux pressés puis puissance de sortie 2 à l’entrée 3 et enfin si vous appuyez sur B flux de puissance de sortie 2 à entrée 4.
Comment lire le clavier tout que vous demandez. Un autre sauterelle bonne question. Voici comment cela fonctionne. Le microcontrôleur pense très vite, donc ce qui se passe est la suivante. Ligne 1 est activé qui est relié à 1,2,3, A et ses quatre entrées sont examinés. Si aucune alimentation n’est trouvé sur l’une des entrées, alors que le rang est éteint et puis la ligne 2 est activé qui est attachée à 4,5,6, B. Puis tous les quatre entrées sont regarda à nouveau. Si aucun pouvoir n’est remarqué aux entrées alors que le rang est éteint et troisième rangée est en marche qui est attachée à 7,8,9, C et les entrées sont à nouveau examinées. Si aucun pouvoir n’est à nouveau remarqué aux entrées alors que rang et la quatrième ligne est activé qui est relié au *, 0, #, D. et encore une fois les entrées sont recherchées au pouvoir. Si aucun pouvoir n’est constatée puis ligne 4 est éteint et les processus recommence avec la ligne 1.
* Partie importante - si vous mettez plus d’une ligne et une touche alors qu’il pourrait y avoir deux possibilités quant à laquelle le bouton est pressé puisqu’il n’y a plus d’une puissance de source venant de deux lignes différentes. Dire que vous mettez sur la ligne 1 et ligne 2. Si vous appuyez sur la 1 touche puis puissance sera vu à l’entrée 1. Si vous appuyez sur la touche 4 puis 1 entrée reverrai puissance. Je l'ai?
C’est là que ça devient cool. Le microcontrôleur déplace tellement vite que n’importe quelle vitesse vous poussez le bouton le scan verront votre doigt sur un bouton un paquet de temps avant que vous pouvez obtenir votre doigt sur le bouton. Au programme, vous écrivez un if instruction. "Si mon doigt se voit sur un bouton puis arrêter le scan et attendez que le bouton pour être libéré (cette garde vous d’entrer dans les 5000 bouton presses avant que vous pouvez obtenir le doigt vers le haut). Une fois que votre doigt relâche le bouton, puis à l’aide de la ligne et histogramme de définir une variable pour tenir compte de quel numéro a été enfoncé. Revenez ensuite à la numérisation du clavier nouveau d’attente pour une autre touche. Un si l’instruction doit être rédigé pour chaque combinaison de lignes et de colonnes.
J’entends certains d'entre vous disant « Il y a une bibliothèque pour qui a déjà fait, sa keypad.h appelé » c’est exact, il y a, cependant, je ne voulais pas être constamment recherchant un bouton, qu’à certains moments et ainsi c’est un peu plus facile pour moi de contrôle, ou au moins dans ma tête, c’est. Le scan est écrit dans une fonction distincte de la fonction de boucle. À certains moments au cours de la boucle si je veux chercher des clés presses alors j’ai envoyer le programme de cette fonction qui exécute ensuite le scan une fois. J’ai écrit ma boucle pour progresser par étapes et ignorer tout le reste. Alors que la boucle vient autour l’et que l’étape est active alors l’analyse s’impose. Surtout facile squeezy.