Étape 3: Lire rapidement sur la touche sur AVR
J’ai choisi PD [2..7] et PB [0.. 1] pour mes connexions. Répugnent à PD [0.. 1] Si vous souhaitez utiliser la communication série sur votre arduino ou autre clone. J’ai aussi eu des problèmes avec mes broches flottant, alors j’ai utilisé quatre résistances de k 10 de démolir les broches de la colonne au sol. Votre AVR a probablement des pull-ups internes, mais la logique que j’avais déjà proposé dans ma tête ne fonctionne pas bien avec qui. Vous remarquerez qu’il n’y a aucun code pin ou raccordement d’alimentation au clavier, contrairement à l’interrupteur molette binaire, j’ai parlé dans un précédent instructable.
Voici l’idée de base. Retirez les goupilles de quatre colonnes à 0V. La valeur de ces broches comme entrée. Définissez vos NIP de ligne en sortie avec des valeurs initiales logique 0. Effectuer une boucle sur chaque ligne, envoyant une logique 1 à la ligne et lire les broches de la colonne. Si il y a un là-dedans, alors vous avez une pression de touche. Aussi de note est la question du debounce clé. Par expérimentation, j’ai trouvé un taux de retard réalisable, sinon vous aurez beaucoup beaucoup keypress notifications pour chaque pression de touche unique. Selon la vitesse de votre microcontrôleur, vous devrez peut-être tweek il un peu trop.
J’ai joint un fichier au bas que j’ai écrit pour cette section afin de démontrer le lien direct et lecture du clavier. Si vous choisissez de l’utiliser, vous devrez modifier les bibliothèques de référence que j’ai écrit pour communication série comme je l’ai. Autre que cela, selon moi, qu'il devrait être généralement bon. Voici le pseudo-code de montrer le débit :
ROWS set INPUT COLS set OUTPUT for (ever) { for each ROW from 0 to 3 { Set ROW HIGH if COL1 HIGH number pressed is ( 4 * ROW) else if COL2 HIGH number pressed is ( (4 * ROW) + 1) if COL3 HIGH number pressed is ( 4 * ROW) + 3) if COL4 HIGH number pressed is ( (4 * ROW) + 3) delay for debounce Set ROW LOW } }
N.-B. Les nombres sont leur logique nombres de 0 à 15, pas le nombre réel sur la touche qui a été utilisée. Pour ce faire, vous devez ajouter une logique plus dans votre section « nombre pressé est... », ou le mapper à un tableau, qui est à quelques pas de là. Tout d’abord, nous allons voir comment réduire le nombre de broches d’e/s ce clavier prend notre microcontrôleur.