Etape 3: Développement logiciel
Nous commencer par le côté infra-rouge des choses et ignorer les servo(s) pour l’instant. Ouvrez BV_COM et communiquer avec le BV500 (ci).
Maintenant charger ce fichier :
http://www.byvac.com/mBlib/FLB/Library/IRD/IR_DecodeMX1.bas
Il suffit de copier le texte et placez-le dans la boîte de dialogue de transfert de texte, puis appuyez sur Envoyer. Il faudra quelques tentatives jusqu'à ce que le fichier est mis en cache, il tout dépendra de la connexion internet. Après l’envoi il devrait dire quelque chose comme lignes chargement 120.
Le fichier est assez court, mais il ne charge pas le fichier de bibliothèque d’IR par conséquent le nombre de lignes. Obtenir une télécommande et définissez-la sur un téléviseur Philips (je suppose que vous avez un de ceux que vous pouvez programmer à l’aide de différents codes). La raison de l’utilisation qui est que le décodage de IR fonctionne uniquement avec code RC5 qui sert à rien ce que Philips dans leurs appareils.
Type, passez, pointer la télécommande vers le photodoide IR et vous devriez voir quelques résultats comme sur la photo. Il ne peut pas produire les mêmes résultats exacts, mais ça ne fait rien. Le résultat, que j’ai obtenu est :
-volume 3511
-volume 3 11
+ volume 3510
Les 3 premiers est les bits de départ et ils sont toujours là, le code de la clé est les deux derniers chiffres, en l’occurrence 11 pour moins et 10 de plus. La bascule est le nombre qui varie de 5 à D (les numéros sont en hexadécimal). Les valeurs réelles sont sans importance tant que c’est cohérent. Si vous obtenez quelque chose qui est immuable ou inconstant alors la télécommande envoie pas RC5 afin de choisir une autre TV ou VCR ou autre.
Un coup d’oeil sur le code.
Ceci est illustré sous forme d’image pour que les numéros de ligne et la coloration de syntaxe sont maintenues.
Ligne 5: C’est le fichier qui fait l’essentiel du travail, si vous voulez regarder le code réel, alors il est à l’URL indiqué dans l’image. Le #include il charge sur la puce avant le reste du code.
Ligne 12 : Il s’agit de la seule fonction qui consiste au code. Pour exécuter le type de fonction en son nom que nous avons fait lorsque vous tapez « aller » ci-dessus.
Ligne 12 à 16 : Voici les fonctions dans le code qui se trouve dans le fichier include et ils initialiser les ports à utiliser et mettre en place quelques interruptions afin que l’IC puisse répondre, dès qu’il reçoit un infra-rouge. Ces lignes sont nécessaires pour obtenir l’IR va.
Ligne 17 : Juste le « Ready » sur le terminal afin que nous sachions que tout est correct
Lignes 18 et 24 : Il s’agit d’une boucle continue qui peut être quittée lorsqu’une clé est reçue à la borne, c’est à dire lorsque vous appuyez sur une touche au clavier. Cela fonctionne parce que le terminal est connecté à UART2 et comkey ? (2) retournera le nombre de clés dans le tampon UART2 (UART est un port série). Qu’il ne sont a pas de clé dans la mémoire tampon jusqu'à ce que vous appuyez sur une touche au clavier, puis il va rester dans la boucle.
Ligne 19 à 22 : IRDstate (la casse est importante) est une variable qui va être mises à 1 lorsqu’il y a eu une valeur reçue par l’IR. La valeur est dans currentWord, ligne 21 il imprime simplement les comme un nombre hexadécimal. La valeur de currentWord sera seulement imprimée lorsqu’il y a une valeur valide. Il est important que la fonction réinitialise IRDstate à 0 après avoir lu le mot.
Lignes 26 et 27 : LAISSEZ TOUJOURS UN COUPLE DE LIGNES VIDES À LA FIN D’UN FICHIER
Servo
Bon alors, maintenant que nous avons un travail infra-rouge son temps à regarder du côté de servo de choses. Copiez et collez cette URL
http://www.byvac.com/mBlib/FLB/Tutorial/PIC32MX1_Family/46_IRServo/IRServo_b.bas
dans le texte transférer le dialogue comme avant et appuyez sur Envoyer. Vous devrez peut-être réinitialiser l’IC comme il tourne les interruptions et l’interface série n’a pas une poignée de main.
Type svo_init
Le servo mai printemps à la vie après cette commande. Maintenant, tapez :
= 200 (C’est @ O pour Oscar pas zéro)
et le servo doit se déplacer. Vous pouvez découvrir les limites de votre servo et découvrir les valeurs maximales et minimales, ceux que j’ai avez varie de 121 à 384.
Le servo est en utilisant le module de sortie comparer intégré à l’IC. Dans le mode que c’est qu’il produit un signal modulé largeur d’impulsion et de la valeur de Registre qu'oc2rs contrôle la largeur de cette impulsion donc tous que vous faites quand changer les valeurs réellement change la largeur de l’impulsion. La granularité est assez bonne à quelques microsecondes, et c’est ainsi que comment nous sommes en mesure d’obtenir une résolution de plus de 200 dans le secteur de l’asservissement.
C’est probablement au-delà de la portée de ce texte pour entrer dans les détails de comment le code fonctionne comme il est plus souvent mise en place des registres de l’IC, le matériel de IC fait le travail. Si vous êtes intéressé, j’ai eu 3 va à ce les (lesdétails sont ici) et ma première tentative était d’imiter PWM dans le logiciel.