Étape 5: Code
## OPÉRATION ##
1. Appuyez sur le bouton start/stop pour signaler que vous êtes prêt à commencer le code d’entrée. Le voyant d’état commence à clignoter lentement.
2. Tapez votre code sur le code. Le voyant d’état clignote à 120 BPM, donc vous pouvez l’utiliser comme votre métronome si vous le souhaitez. Cependant, le programme cryptap permettra de mesurer les longueurs d’impulsion par rapport à l’autre proportionnellement, donc vous pouvez également utiliser votre propre tempo. Assurez-vous que vous qui sont assez précis !
3. une fois l’entrée de code est terminée, appuyez de nouveau sur le bouton start/stop. Le programme décidera alors s’il faut vous laisser.
Puisque les humains ne sont pas détenteurs de temps très précises (vôtre est vraiment pas), j’ai mis le rapport de tolérance de +/-30 %. Cela signifie que les longueurs de battements peuvent être inexacte de ce montant et encore passer de rassemblement. C’est assez bon pour faire la différence entre des airs assez similaires. Il y a une petite quantité de dur-à-atteignent chevauchement entre doubles et triple-longueur beats, mais le code est toujours assez difficile à briser.
Pour déverrouiller la porte, les battements doivent être dans les proportions correctes les uns aux autres (+/-le ratio de la tolérance), et le nombre de battements doit être exact. Si un mot de passe incorrect est entré, le programme attend quelques secondes tout en ignorant toute entrée d’utilisateur. Il clignote également le voyant d’état rapidement. Si le bon code est entré, le témoin lumineux s’allume régulièrement et la porte se déverrouillera pendant 8 secondes.
## CONFIGURATION UTILISATEUR ##
La clé est stockée dans un tableau comme ceci :
#define keylength 5
const int clé = {2, 1, 3, 3, 3} ; « Happy birthday to you »
Le tableau stocke le laps de temps qui se passe entre les battements. Donc si votre mot de passe a SIX notes comme « Happy birthday to you », il devrait y avoir cinq éléments dans le tableau. Si votre mot de passe est vraiment long et vous avez plus de 16 battements en elle, (vraiment dur, que je ne le recommande pas), vous devez augmenter le nombre défini dans cette ligne :
#define inputCodeLength 16
## LE RESTE DU CODE ##
J’étais curieux de connaître les interruptions, j’ai donc eu mes boutons déclenchent des interruptions. Pour ces interruptions rendent facile à utiliser, j’ai eu mes gestionnaires d’interruption vérifier pour certains pointeurs de fonction. Si le pointeur n’est pas défini avec la valeur NULL, la fonction qu’il désigne est appelée. Celles-ci sont définies avec les diverses fonctions de « mode-setting » à l’intérieur de cryptap.c.
J’ai fait un effort pour éviter des débordements de tampon en définissant un nombre maximal d’entrées impulsions. Si le nombre maximal d’impulsions est entré, le programme lance l’analyse de mot de passe immédiatement et décide s’il faut déverrouiller la porte.
J’espère que mes commentaires dans l’aide de code.
## BUGS ##
J’ai tenté de supprimer la clé USB débogage de code, mais le code ne fonctionnera pas si je le fais. Alors, j’ai laissé dans les usb_init() et les diverses déclarations de print(). J’apprécierais si quelqu'un pouvait les enlever et ont encore le programme de travail. Encore mieux si ils peuvent expliquer pourquoi il n’a pas fonctionné pour moi.
Immédiatement après la programmation, le Teensy parfois n’accepte pas d’entrée de code. Pour résoudre ce problème, cycle d’alimentation du circuit.