Étape 3: logiciel
La fonction « putc » placera un personnage à l’écran comme suit :
putc (caractère, position, couleur de premier plan, couleur de fond)
Cela montre juste deux de ces fonctions, il existe d’autres tels que le dessin de boîtes, de lignes et de texte de défilement de gauche à droite.
Le logiciel est construit en couches qui rend plus facile à comprendre et à développer. Ce qui suit est une description de chaque couche et comment il fonctionne.
Driver de LED
Il y a une description complète de la conduite de ces LEDs adressables à http://www.bypic.co.uk/projects/colour-addressable-leds/ cependant un petit récap n’ira pas mal.
Le contrôleur de WS2811 a besoin qu’un seul fil, le signal est envoyé de LED et LED à spécifiques à une rythme (fréquence) et si le timing est important. Les appareils utilisés dans cette présentation sont 400kHz qui, selon la feuille de données, est la moitié de la vitesse, pleine vitesse est 800kHz
La 1 et de 0 sont envoyés comme ci-dessus où le passage de H à L se produit avant la mi-chemin pour 0 et après à mi-chemin pour 1. Le moment réel le cadre ou la cellule est 2500nS pour 400kHz. Pour la BV500 cadencé à 40MHz, c’est 24 cycles CPU donc c’est arrangé que 1 est 16/8 cycles (haute/basse) et 0 est de 8/16 cycles (haute/basse).
Cela se fait en retardant la boucle de chronométrage avec nop ou instructions factices. J’ai vu l’interface SPI utilisée à cet effet mais ne peut pas comprendre pourquoi ?
La prochaine étape vers le haut est de fournir la LED avec trois octets qui décrira la couleur, l’ordre est vert, rouge et bleu, plus le nombre plus que particulier coloris. Pour plus de commodité, les trois octets sont placés dans un entier de 32 bits et il y a autant de nombres entiers qu’il sont a LEDs donc pour une bande de 40 LED, il y aura 40 entiers de 32 bits. Un tableau de ByPic est idéalement utilisé pour stocker ces et deux tableau dimensionnel est utilisé parce qu’il y a 8 bandes, une dimension pour chaque bande.
Parce que le timing est critique, il est géré directement en C, via une fonction Plug-in. ByPic peut appeler une fonction et passer les informations à lui. La fonction gère le moment critique, envoyant les données qui lui sont passées. Heureusement les LEDs conservent leur statut et donc le plug-in ne doit exécuter lorsqu’il y a une mise à jour. C’est ce qu’on appelle render() qui mettra à jour tous les 8 bandes.
Illuminer une LED individuelle est simplement une question de définir la valeur de tableau sur le RVB requis et rendant ensuite en appelant la fonction render(). La taille du tableau est supérieure à 8 x 40 car certains des premiers octets du tableau servent à dire le plug-in qui port et les lignes à utiliser donc la première réelle LED Strip 1 est disp(7,0).
Niveaux plus élevés
La prochaine série de fonctions initialiser le tableau et s’occuper de l’affichage des caractères. Les formes des caractères sont formés à l’aide de 5 octets et sont affichés sous forme d’une cellule de 5 x 7 à l’écran. J’avais déjà le fichier de police et donc fait usage.
Une complication légère est le défilement, au lieu d’afficher le caractère tout à la fois, il est possible de juste afficher une colonne de celui-ci, c’est ce qui rend le défilement possible.
Il y a 7 programmes dans l’ensemble, la liste au dos de ce texte. Mis à part le CCF chacun s’appuie sur la fonction précédente. Cela aurait pu tous être placé dans un programme, mais de faire de cette façon il facilite le développement.
A titre d’exemple, il y a un programme graphique qui dessine des lignes et des boîtes etc.. En ayant les fonctions de base en place, en Flash, c’est facile et rapide à développer et à repenser ces fonctions sans avoir à charger toutes les fonctions précédentes maintes et maintes fois. De même, le programme « effets » a été élaboré après le programme graphique à l’aide de certaines fonctions dans le programme graphique.
Pièges
Comme dit précédemment que cet affichage est un concept et donc si vous avez l’intention de construire quelque chose comme ça, alors voici les choses à surveiller.
LEDs morts : L’affichage, j’ai construit 3 LEDs morts – n’a pas complètement juste une seule couleur. Il n’était pas quelque chose je m’attendais et donc n’a pas vérifié pour. Avant d’utiliser une bande de s’assurer que toutes les couleurs fonctionnent.
Distance de LED: J’étais sous l’impression que quand vous avez acheté un chapelet de 5m de LEDs qui c’était toute une bande, pas tellement. Les LEDs sont joignent à des intervalles à souder ensemble les pièces en cuivre du circuit imprimé. L’articulation provoque l’espacement des LED à varier et donc ceux-ci doivent être hors soudé et soudé à la bonne distance.
Construction : Acrylique sur un châssis en aluminium fonctionne bien mais l’angle 20mm que j’ai utilisé n’est pas vraiment assez profond pour abriter les composants.
Alimentation : Si les régulateurs 5V petit sont utilisé puis un par deux bandes sont nécessaires, ils sont assez bon marchés pour ce faire mais prendraient un certain espace. Dix ampères est tout à fait une alimentation linéaire très lourd et donc je pencherais pour un bloc de commutation. L’alternative mentionnée dans le texte est une pile au lithium et un chargeur de type de verrue. Cela pourrait encore être un problème même si, comme je suppose que le courant moyen consommé serait dans la région de 2-4 a
Améliorations
Lots ; mais sans doute une bonne idée est d’inclure un module de temps radio DCF et de la température / capteur d’humidité.