Étape 5: logiciels
La bande de LED de Radio Shack est livré avec un lien pour tester le code pour l’Arduino. Cela formait la base du programme ci-joint, cependant la version Radio Shack utilise un jeu codé en dur de patrons et la modification de ces schémas est beaucoup de travail pour peu de résultats.
J’ai créé une nouvelle méthode pour conduire la bande qui prend deux composantes :
- couleurs - couleurs tableau de RVB (rouge vert bleu)
- illum - tableau des grandeurs/intensités (0,0 = 0 % = OFF, 1,0 = 100 % = pleine ON)
Cela vous permet de générer une gamme dynamique plus large de modèles rapidement sans avoir à spécifier autant d’informations chaque séquence. Il suffit de multiplier chaque composante de la valeur hexadécimale RBG par l’ampleur et que conduire la bande (effectuée dans la fonction light_strip()).
Brève de diversion sur le fonctionne de la LED code de bas niveau
Le code de conduire réellement les bits de la bande de LED dans la fonction send_strip() n’a pas besoin d’être modifié, mais si vous êtes curieux de savoir ce qui se passe avec le code de conduire la LED, lisez le...
Voici le lien vers les fichiers de Support de Radioshack pour la bande tricolore qui contiennent de la feuille de données pour la bande de LED. Cette bande fonctionne sur le protocole de TM1803 qui est de 24 bits pour définir une couleur (8 bits rouge, 8 bits bleu, 8 bits vert). Un segment de la bande reçoit 24 bits, les prochaines données passez sur le segment et passer au segment suivant. De cette manière le premier segment de route 24 bits 1, les 24 bits sont pour le segment 2, etc...
Pour réellement transmettre ces morceaux, vous verrez que pour conduire un 0, que vous devez définir la broche de données à haute (1 logique) pour 0,78 microsecondes et puis définissez la broche de données à faible (logique 0) pour 1,55 microsecondes. Pour conduire un bit 1 vous cherchez le calendrier ci-contre, haut pour 1,55 microsecondes et faible 0,78 microsecondes.
Ainsi, par exemple, que si vous voulez envoyer sur une valeur 0110 en binaire, vous le feriez réel besoin de transmettre
HAUT de 0.78us, faible pour 1.55us, haute de 1.55us, faible pour 0.78us, 1.55us, température élevée faible pour 0.78us, 0.78us, température élevée faible pour 1.55us
Alors, comment est-ce cela est atteint dans le code, dans la fonction send_strip() ?
Le code effectue une boucle sur tous les 24 bits, et si chaque bit est 1 ou 0 il effectue une opération différente. Prenons par exemple 1, le code exécute en premier données_1 qui affecte la broche de sortie haute, puis effectue 28 sans opération (nop) Notice de montage. L’Arduino Uno a une vitesse d’horloge de 16 MHz, ce qui signifie que chaque instruction met la dernière main à un moment approximatif 62,5 nanoseconde. Ainsi les 28 codés non-ops aura 28 fois 62,5 nanosecondes pour compléter, qui est 1750 nanosecondes = 1,75 microsecondes. C’est un peu sur la 1.55us fois que nous recherchons, mais est correct en raison du fait que l’opération données_1 ne se termine pas immédiatement avant que le premier nop est touché, donc en gros le premier couple nop ne compte pour l’heure un le signal est élevé. Pour développer un code comme celui-ci, vous utiliseriez idéalement un oscilliscope pour ajouter/supprimer des instructions nop et mesurer le temps qui en résultent sur l’oscilliscope, jusqu'à ce que vous frappez cette 1.55us sweet spot dans la feuille de données.
Heureusement la plupart des bandes de LED sont des bibliothèques de Arduino qui a déjà figuré ceci dehors pour l’utilisateur, mais il est toujours bon de savoir comment le code réalise le calendrier dans la feuille de données.
Réflexions finales
J’ai commenté le code assez bien que je n’irai en plus les détails sur comment ça marche, mais comme j’ai mentionné plus tôt, je pense que juste l’idée de créer des motifs lumineux plus intéressantes serait une excellente façon d’apprendre quelques simples codage et débogage de compétences.
Le débit global du programme est :
- Démarrer l’Arduino
- Attendez de Motion
- Dessiner un arc en ciel
- Attirer plus de 20 modèles
- Redémarrez le programme
Bonne chance et profiter ! Si vous avez aimé l’Instructable, je serais ravi de votre vote pour le concours de création de code.