Étape 4: La Charliegrid... mise en page et programmation
Pour ceux qui ne connaissent pas cela, c’est un moyen de contrôle de lots de LEDs avec seulement quelques épingles en profitant de la nature de trois États d’un pins de microcontrôleurs et de la tension de la LED. Il existe de nombreuses explications de la charliegrid et de leurs applications sur le net donc je ne donne plus qu’une explication rapide.
Remarque la configuration de LED sur le charliegrid.
Vous pouvez mettre un + ve tension sur la ligne d’un contrôle et vous pouvez mettre un 0V sur une autre ligne. Vous laissez les autres lignes de contrôle non-connectés à n’importe quoi. Imaginez avoir la charligrid sur une maquette et vous branchez les deux lignes de commande à une batterie. Dans le cas du microcontrôleur, vous programmer ces deux broches pour être sorties et définissez une broche à une logique "1" et l’autre à une logique « 0 ».
Vous laissez les autres lignes de contrôle sans lien, ou dans le cas d’un microcontrôleur, vous définissez ces broches comme entrées.
La LED avec un lien plus direct à cet égard s’allume. Bien qu’il y a plusieurs chemins à travers ces épingles à travers d’autres voyants, seul s’allume parce que quand cela arrive, la tension directe de cette LED sera toujours inférieure à n’importe quelle combinaison des autres voyants.
Lorsque la position de la logique « 1 » et « 0 » sont annulées et les mêmes lignes de contrôle sont sélectionnés, la LED en position renversée s’allume. Vous pouvez voir dans le schéma de circuit sous forme de paires de LED entre toutes les combinaisons d’entrées de commande. Ainsi les lignes de contrôle 6 peuvent fonctionner 30 LEDs individuellement... pas en même temps bien sûr !
Pour allumer une LED, c’est simplement une question de programmer le microcontrôleur d’envoyer une logique « 1 » ou une logique de « 0 » à quelle que soit deux contrôle lignes correspondant à ce LED et les autres entrées.
Par brièvement illuminant chaque LED souhaité à son tour, vous pouvez créer un affichage comme un écran en raison de la persistance de l’effet de la vision. Parce qu’une seule LED peut être allumée à l’heure, c’est toujours nécessaire dans un charliegrid.
Le code enregistre la sortie porta/portb et tris registres sont chargés avec les valeurs pré calculées pour allumer une LED. A pris un certain temps pour calculer tous. Voici un fragment :
LED1 LED2 LED3 LED4
unsigned char LEDS_TRISA [31] = {0xfd, 0xee, 0xf7, 0xfd,
unsigned char LEDS_PORTA [31] = {0 x 02, 0 x 01, 0 x 08, 0 x 00, 0
unsigned char LEDS_TRISB [31] = {0xfb, 0xff, 0xfb, 0xfb, 0
unsigned char LEDS_PORTB [31] = {0 x 00, 0 x 00, 0 x 00, 0 x 04, 0 x
Si quelqu'un connaît un algorithme charliegrid généralisées, je serai très intéressé.
Mais tout d’abord la grille devait être mis dehors. Pour les micropoints, c’était un grand défi en raison du manque d’espace. L’image principale montre comment cela est devenu gérable.
Au départ j’ai mis les LEDs en couples dans la grille et les composants de bas en ainsi où je les voulais. C’était très déroutant en essayant de démêler la meilleure connectivité plus efficace de la charliegrid complexe. En déplaçant les LEDs loin les composants de bas, le ratsnest est devenu plus facile à lire. Après cela, c’est simple à déplacer la grille sur les composants de bas côté et faire la mise en page de fond avec un minimum de pistes vias et crossover de calque au calque. Vous pouvez voir l’impact de bougeant et rotatives les LEDs pour obtenir la meilleure disposition dans les fous de nommer la séquence de la charliegrid schématique après renumérotation des LEDs sur la carte.