Comment faire pour exécuter la boucle principale pour votre entrée projet Arduino système de clavier

Vous devrez exécuter une boucle principale de votre système de projet Arduino d'entrée du clavier. Il ya seulement quelques choses que fait le code pour faire fonctionner votre système d'entrée. La boucle principale fonctionne comme suit:

  1. Écouter pour une clé.

  2. Si une touche a été pressé, l'envoyer à l'écran LED.

  3. Incrémenter le nombre de touches par un.

  4. Entrez dans la mémoire tampon de code dans la prochaine position disponible.

  5. Déterminer si les quatre chiffres ont été entrés.

    Si oui, vérifier si le code est valide.

  6. Si le code est valide, ouvrir la porte et réinitialiser tout pour la prochaine fois.




La principale chose que vous devez faire est de vérifier si une touche a été pressée. La première instruction crée une locale carboniser variable appelée clé pour stocker le caractère qui est renvoyé d'une fonction nommée getKey (). Rappelez-vous le Keymap? Voilà où ce nombre vient finalement de.

La valeur du char clé est également affecté à la codeBuffer [] tableau, ce qui vous permet de tester si le code est valide. Il est ajouté à la position mémorisée par keypressCount, vers le haut qui est incrémenté chaque fois qu'un nouveau caractère est détectée. La “ e-zéro ” caractère est la première pression détectée. Ainsi codeBuffer [0] contient la première touche enfoncée sur le clavier, codeBuffer [1] contient la seconde touche pressée, et ainsi de suite.

La prochaine conditionnelle si déclaration exécute seulement quand une touche a été pressé, à quel point les étapes 2 à 6 de la liste précédente sont traitées. Si une touche n'a pas été pressée, le programme attend juste pour que cela se produise. Lorsque cela se produit, le sendCommand fonction exécute:

sendCommand (keypressCount + 1, la clé) -

La sendCommand prend deux paramètres: qui à sept segments numéro de module pour changer, et ce qu'il faut changer pour. Tu utilises keypressCount non seulement de garder une trace du nombre de touches de fois ont été enfoncées jusqu'à présent, mais aussi de dire lequel sept segments chiffres pour éclairer.

cependant, keypressCount commence à zéro parce que le Code [] la tampon [] tableaux omble commencent leur numérotation à zéro, et que vous souhaitez stocker ces valeurs à la bonne place. Mais la puce Max commence chiffres de numérotation à partir de 1. Par conséquent, à utiliser keypressCount pour éclairer le chiffre sept segments correcte, vous devez ajouter un (+1) À sa valeur.

La déclaration suivante met en œuvre cette option de débogage à portée de main. Si vous avez réglé le DEBUG booléen à vrai, le code sera imprimer toutes vos variables au port série.

Ensuite, vous incrémenter le keypressCount par un, puis tester pour voir si quatre chiffres ont été pressés. Si oui, il est heure de représentation. La retard (500) déclaration vous donne une demi-seconde pour voir le code chiffres du dernier accès entré parce que l'affichage change selon que le code de droit d'accès a été entré. Ce test est effectué avec un peu de code natif C de la langue:

si (memcmp (codeBuffer, code, 4) == 0) {if (DEBUG) {Serial.println ("MATCH!") -} déverrouillage () -}

La fonction memcmp () compare deux objets en mémoire et prend comme paramètres les deux objets et leurs longueurs attendus. Dans ce cas, vous comparez le codeBuffer réseau et le code stocké au début du programme. Les deux ont une longueur de quatre octets.

Si elles sont identiques, la memcmp () fonction retourne un zéro et qui est exactement ce que vous recherchez dans l'instruction conditionnelle. Si elles sont les mêmes (et DEBUG est vrai), “ MATCH ”!; est imprimé sur le port série et le déverrouiller () fonction est exécutée. Si la comparaison de la mémoire échoue, alors la fonction ne retourne pas un “ 0, ” ce qui signifie le mauvais code a été entré.

Dans les deux cas, vous souhaitez effacer l'écran, prêt pour la prochaine fois. Donc, vous appelez le clearDisplay () fonction. Une autre instruction natif du langage C fait un peu de ménage de mémoire:

memset (codeBuffer, 0, 4) -

Cela efface le codeBuffer explicitement par la mise à 0. Sa longueur est de 4, qui est le second paramètre. Certains diront que cette instruction est pas nécessaire, mais il est bien pratique pour gérer explicitement la mémoire plutôt que de laisser les choses au hasard.

Enfin, parce que ce fut le quatrième pression de touche et il ya seulement quatre chiffres pour évaluer, le keypressCount doit être remis à zéro si vous êtes prêt pour la prochaine itération.


» » » » Comment faire pour exécuter la boucle principale pour votre entrée projet Arduino système de clavier