Étape 4: le logiciel LED 3D
Logiciel pour le cube LED est écrit en C et compilé sous l’environnement de développement arduino. Le code est transféré à l’arduino uno via un câble USB, donc cela nécessite un convertisseur série USB programmer l’AVR directement.
La meilleure façon de penser du logiciel est en deux parties principales :
- la philosophie de l’affichage de l’image
- les modèles et algorithmes utilisés pour générer l’image
Philosophie de l’affichage de l’Image
La philosophie d’affichage permet seulement s’allumer une seule couche de lumières LED à la fois, donc afin de visualiser la totalité du cube de LEDs simultanément, nous nous appuyons sur un phénomène appelé Persistence of Vision. C’est ainsi que nous pouvons numériser à travers toutes les LEDs ou couches de LED sans les avoir nécessairement tout sur à un moment donné. Si nous pouvons numériser à travers eux assez rapide, (généralement 20 à 25 cycles par seconde ou 8 couches 25 fois par seconde), puis ils apparaîtront à tous être sur en même temps.
En réalité, en raison de la structure du code, la durée du cycle varie donc l’image ou l’état actuel de l’image est représentée par un tableau d’octets de dimension 3. C’est un tableau avec les dimensions de 0 - 8 dans toutes les directions, mais avec réalisme, seulement 1 à 8 sont utilisés pour l’état actuel de l’affichage. L’adresse 0 est utilisé pour manipuler la ligne quand on pense à des modèles et des algorithmes. Se concentrer uniquement sur le 1-8 pour chaque axe pour l’instant. Ceci nous donne 512 octets de stockage et chaque octet représente 0 - 255 gris valeur ensuite convertie en une impulsion modulée représentation sous forme d’intensité.
Sur chaque boucle du programme, il y a une boucle imbriquée qui parcoure le tableau à 3 dimensions et écrit une seule couche à la fois. Il y a un retard de preprogram qui peut être ajusté si besoin être qui détermine combien de temps chaque couche est activée pour.
Lorsque vous augmentez la vitesse de cette analyse, il y a quelques problèmes, dans que vous pouvez exécuter c’est pourquoi nous avons besoin d’incorporer le découpage sur le d-multiplexeur. En utilisant le d entrée pour le d-multiplexeur qui dépasse la spécification 3-8, nous pouvons alors vierges toutes les sorties de la d-multiplexeur. Il s’agit de ce qui est connecté à la broche 7 de l’arduino et est représenté par la valeur de sortie 128 parce que c’est le bit le plus significatif d’un octet. Comme nous scannons l’affichage plus rapide, si nous n’en blanc, nous allons rampante de la lumière à travers les couches où nous ne voulons pas réellement la lumière donc la valeur de la couche précédente transportera à travers sur celle qui suit. Nous avons besoin pour le contrôle de la couche pour un temps très court en blanc alors que nous écrivons les nouvelles valeurs pour les colonnes, et nous pourrons passer à la couche supérieure et supprimer qui influent sur les images fantômes.
Une chose qu'il faut faire attention lorsque le réglage ou la compilation de ce code est la configuration de la bibliothèque de TLC. Vous devez regarder dans la section commentaires du code source fourni pour vérifier ce que les paramètres doivent être modifiés dans le fichier de configuration de TLC. Quand on aborde les puces de TLC que la bibliothèque disponible permet qu'un interfaçage functionwhich nous permet de parler à la chaîne sur le système de TLC. Dans le fichier de configuration de bibliothèque, nous spécifions qu’il y a 4 TLC puces parce qu’il y a 16 sorties par puce de TLC. Cela nous permet de conduire 64 canaux ou 64 sorties simultanément si elles sont adressées Channel 0 - 63. Comme nous faisons nos boucles imbriquées et parcourir pour une couche qu'il faut consécutivement écrire chaque valeur à chaque canal alors il est beaucoup de nidification ou de boucle imbriquée. Chaque LED est représentée par 0 - 255 ou 1 valeur de gris d’octets. Ces données sont transmises directement dans la fonction de TLC.