Étape 13 : Programmer le PIC
Le commandant de bord peut être programmé en C++ ou en langage assembleur. J’ai choisi C++, surtout pour gagner du temps, mais aussi parce que je ne voulais nécessairement s’engager à cette architecture et il est vrai, langues de l’Assemblée ne sont aucun drôle ! Pour plus de simplicité, j’ai développé le panneau à l’aide de la PIC12F509 DIP, qui est compatible avec la 508 broche. C’est aussi plus grandes et plus faciles à manipuler pour des fins de test, et j’ai trouvé qu’il n’avait plus de mémoire que j’avais besoin, j’ai pu descendre la puce pour le produit final.
Comment fonctionne la carte POV
_______________________________________________________________________
La carte est désactivée jusqu'à ce que l’interrupteur momentané est maintenu enfoncée. Sur la mise sous tension, le programme simule une petite boule de roulement avec un compteur binaire qui roule dedans et dehors avec l’inclinaison de la carte. Après environ quatre s’incline en arrière, il passe en mode de Persistence Of Vision et permet de sélectionner une série de motifs programmés. Actuellement, il est dit mon nom, suivi d’un modèle d’onde carrée soignée qui agit comme un séparateur, puis mon numéro de téléphone. La fermeture de l’interrupteur à bascule, le programme reconnaît que comme le début d’une vague et joue l’actuel modèle une fois à travers, puis attend jusqu'à ce qu’une autre vague commence. Tant que la vague doubler pas revenir trop tôt, et le patron n’est pas trop long, il n’y aura aucun chevauchement comme le modèle sera vide jusqu'à ce qu’il se réinitialise.
Les patrons
_______________________________________________________________________
Chaque modèle est un tableau d’octets, chaque octet d’une colonne dans l’ordre. Le temps qui reste sur chaque colonne (cadre) dans le modèle et le temps entre les trames détermine la vitesse de l’affichage, et comment fermer les cadres sont espacés lorsque la carte est agitée. Fondamentalement, il modifie la largeur des caractères et le modèle dans son ensemble. En outre, la vitesse à laquelle vous agiterez la carte joue également un rôle dans l’espace, mais pas assez pour le rendre plus lisible ; puisqu’elle changements cadres à un taux constant, la variation ne suffit pas à la matière, mais il est suffisant pour le rendre dynamique. Soignée, hein ?
Pour créer les modèles, j’ai modifié un script que j’ai trouvé écrit par Andrew Mason. Ma version est personnalisée pour permettre autre octet de mise en forme et nombre de LED, mais le placement de LED est fixé, pour l’instant. Vous pouvez faire n’importe quel modèle que vous voulez, pourvu qu’il soit assez petit pour tenir dans la mémoire de PICs. Le taux auquel le modèle reproduit à peut être modifié dans le code, aussi bien.
Le programme
_______________________________________________________________________
Le code est très simple. Sans PWM ou interruptions, il n’y a pas beaucoup de choses difficiles que je pouvais le faire, même si je le voulais. Économiser l’espace et l’optimisation font un peu plus intéressant, bien que, compte tenu de la nécessaire d’adapter le code dans la mémoire de minuscules photos de peaufiner.
Pour lire un patron, le commandant de bord vérifie simplement pour l’interrupteur à bascule à activer, puis effectue une boucle dans un modèle. Il affecte les sorties GPIO l’octet actuel dans le tableau, qui représente un frame, attend une période définie, puis incrémente le tableau. Une fois que le patron a joué tout au long, il supprime l’affichage et attend jusqu'à ce que l’interrupteur à bascule a été activé. Ceci indique une autre vague a commencé, et il passe par le modèle une fois de plus.
Le code de l’image ressemble à ceci, sans les guillemets: « 0b00000000, ». Le 0 b délimite un octet et la virgule sépare chaque octet de l’autre. C’est tous placé à l’intérieur d’un tableau de constantes, car il ne sera pas changer au cours de la lecture et qui va sauver RAM. Cinq des bits dans le tableau indiquent une LED de sortie, alors qu’on n’est pas utilisée et l’une est un peu de lecture seule utilisé pour fixer l’axe d’entrée. Les bits utilisés sont : 0bXX12X543, où le nombre indique la broche.
Le Code
_______________________________________________________________________
#include < htc.h >
#include < stdlib.h > à
Le Comité de programmation
_______________________________________________________________________
Tout le code a été écrit dans Notepad ++, un excellent éditeur gratuit de multi-langue. Vous aurez également besoin du MPLAB IDE avec une copie du compilateur C Hi-Tech. Les deux sont disponibles en version gratuite.
Vous aurez besoin d’une copie du logiciel de programmation Pickit2 de Microchip. Avec la puce connecté et l’iCP01 branché, définir la famille d’instruments à « Bas du texte » et sélectionnez PIC12F508 dans la liste déroulante périphérique. Ensuite, chargez le fichier hex et appuyez sur le bouton write.
Références
- Fiche technique PIC12F508/509/16F505
- Guide de l’utilisateur pour le compilateur 9,81 C Hi-Tech
- POVgen Générateur de mires de LED en ligne
- Compliler C Hi-Tech
- Environnement de développement intégré MPLAB
Outils et fournitures
- PIC12F508 j’ai / SN SOIC ou PIC12F508 I / PmicrocontrôleurDIP
- Programmateur série de In-Circuit USB (iCP01)
- Carte de prototypage
- carte de dérivation IC SMD 8 broches ou extra inhabitée PCB