Etape 11 : Capture les données de contrôle à distance IR
Tout d’abord, allez ouvrir la feuille de données AT90USB1686 et pour tout savoir sur les minuteries. En particulier, comprenons bien timer 1 et son unité de capture d’entrée. J’ai un appendice sur minuteries, veuillez lire que.
Nous allons courir le minuteur en permanence. L’unité de capture d’entrée nous donnera un horodatage de lorsque le récepteur IR change sa sortie. De cette façon, nous pouvons mesurer la longueur de chaque « on » et « off » impulsion.
Si nous ne sommes pas confus, n’oubliez pas que notre récepteur est peu active, ce qui signifie qu'un « ON pulse » est lorsque la sortie est basse, et une « impulsion OFF » est lorsque la sortie est haute. Le ON et le OFF veut dire si oui ou non la lumière infrarouge est envoyée.
Nous savons de la forme d’onde, j’ai capturé et vous affiché à l’étape précédente, qu’une seule commande est répétée maintes et maintes fois en maintenant appuyée la touche de la télécommande. Nous savons quand cette commande est répétée car chaque commande commence par le plus long "à l’écoute".
Connaissant ces faits, nous pouvons capturer avec succès et correspondent à une série d’impulsions contre un motif connu à l’aide de logiciels. Nous pouvons simplement enregistrer les impulsions dans un tableau, et quand nous détectons un très long "le pouls", nous savons pour commencer à enregistrer au début du tableau.
Toutes les commandes contiennent le même nombre d’impulsions, afin de nous tenir le compte des impulsions combien de savoir lorsqu’une commande est terminée. Lorsque la commande est terminée, nous essayons de correspondre à notre tableau enregistré en un tableau connu pour voir quelle commande a été envoyée, en utilisant le processus d’élimination.
Remarque : Cette méthode n’est pas la preuve complète, mais j’ai essayé d’autres méthodes telles que de faire une comparaison en sens inverse après chaque impulsion ON (et non pas après un certain nombre de sur impulsions). La quantité de données que nous avons besoin de comparer le microcontrôleur lent causée le processus de comparaison à prendre trop de temps et le microcontrôleur « manqué » quelques impulsions.
Pour obtenir la liste des commandes connues, vous simplement associer le microcontrôleur pour le récepteur IR et avez ensuite le port série vous dire combien de temps chacun des impulsions. J’ai installé un utilitaire appelé « Visualiseur de Code IR » écrit en Javascript qui vous permettra de Découvre le port de sortie comme une forme d’onde, comme un analyseur de logique.
Si fil de sortie du récepteur IR à la broche PORT-D-4, qui est l’entrée de l’unité de capture d’entrée de 1, et branchez l’alimentation et masse du récepteur IR. Vous n’avez pas un diagramme pour cela, au moins je l’espère... Mais j’ai inclus un de toute façon.
Prenez les fichiers j’ai avez fourni, compiler, télécharger et exécuter sur le Teensy ++. Ouvrez le terminal série, puis appuyez sur un bouton sur la télécommande. Vous verrez les impulsions indiquées sur l’écran. Enregistrer les résultats pour chaque bouton, collez-les dans le « visualiseur de Code IR » pour voir la forme d’onde.
Je vais vous montrer comment utiliser les résultats dans l’étape suivante.
Pop quiz, ce qui est l’unité utilisée pour capturer et les valeurs de largeur d’impulsions magasin l’IR que nous utilisons ?
Le Teensy ++ a un cristal de 16 MHz, mais nous les menons à 3, 3V au lieu de 5V, donc nous utilisons "clock_prescale_set(clock_div_2);" donc c’est effectivement cadencé à 8 MHz. Le code source montre le timer 1 qui est configuré pour utiliser un prescaler de « diviser par 8 », alors que la minuterie est cadencé à 1 MHz. Ainsi, 1/1000000 secondes est 1 nanoseconde, et que de ce que les valeurs sont capturées et stockées dans.
--Copiés à partir de mon appendice sur minuteries