Étape 1: Commencez par observer et Explorer...
Observations, des faits et des choses intéressantes découvertes lors de piratage sur le code.
Charlieplexing lumières généralement qu’une seule LED à la fois, multiplexage jamais lumières tout en même temps, mais généralement une ligne entière, ou en avion peut être une lumière à la fois. Charlieplexing requiert également logique de trois États (5v, au sol ou des entrées), où multiplexage n’a besoin que binaire (5v, ou au sol).
Il est seulement capable d’allumer un voxel à la fois, mais elle peut allumer n’importe quel combo des 3 LED à l’intérieur de chaque voxel. Plupart cubes allume un plan entier de LEDs en même temps, et qui définit son rapport cyclique (4 x 4 x 4 sont 25 %, 8 x 8 x 8 est de 12,5 %,...)
Chaque LED peut être contrôlé individuellement en utilisant les deux broches de microcontrôleur correcte (avec la polarité)
Puisqu’il y a 64 voxels, cela lui donne une durée de 1/64 à plus brillants.
Il existe 3 façons de relier à n’importe quel LED spécifique, elle peut être référencée dans l’ordre de 1 à 192, X, coordonnées Y Z axe ou par les 2 goupilles de microcontrôleur pour l’éclaire.
Il y a quelques tables d’informations qui fonctionnent ensemble de manière semblable au DNS dans les réseaux informatiques, c’est une simple traduction afin que quand vous dites r123 lumineux (LED rouge à l’emplacement x = 1, y = 2 = 3), les broches du microcontrôleur correctes sont activés. Ce tableau est un endroit idéal pour apporter des modifications si vous avez commis une erreur de câblage et ses où j’ai apporté des modifications pour ajuster la hauteur du cube, mais j’ai aussi dû faire beaucoup de changements pour convertir le cube à anode commune.
Inverser les broches dans l’appel de programme ne pas allumer le cube comme vous vous en doutez, il n’était pas aussi simple que cela, mais il n’ont la plupart des LED, qui rend plus facile pour moi de tester, documenter et difficulté de ceux qui n’ont pas eu raison. Sur 192 LEDs, il obtenu tous sauf droit 48. Cela a à voir avec la façon dont le cube est câblé, les 4 couches de circuits. Il est intéressant que l’inversion de la polarité fixe 3/4 des broches, mais pas tous et pas none.
La séquence de 192 LEDs sont organisées par couleur, puis en X, Y, et Z coordonne et simple équation peuvent décoder cela comme ça: (((couleur) %3) * 64) +(x*16) +(y*4) + z pour que vous l’entrée que vous voulez allumer la LED rouge aux coordonnées xyz 123, et il sait que le rouge est le dernier groupe, donc ajouter 2 * 64 + 1 * 16 + 2 * 4 + 3 et qui s’élève à 91, il lève les yeux la 91e entrée dans une table et obtient le nombre de broches pour forte et faible, pour allumer seul le voyant de droit.
Lorsque vous testez une flèche, vous pouvez dire que ses un nombre idéal de LED contrôlé avec celle peu nombre de broches de contrôle. Quatre épingles douze voyants de contrôle. La façon dont il le fait est assez simple. vous vous connectez sur fil commun, et les trois autres sont les fils de R, G et B.. Si vous changez le fil commun, afin de pouvoir contrôler une LED différente (physiquement plus élevé ou plus bas sur la flèche), et les 3 autres fils vont faire le R, G et B. Vous pouvez faire pivoter la flèche 4 fois, et chaque fois que vous faites pivoter la flèche, changer la hauteur.
Lorsque vous traversez la séquence, vous pouvez voir les modèles de nombres en groupes de quatre. Chacun de ces 4 nombres sont les fils raccordés à une seule spire. J’ai profité de cela plusieurs fois Erreurs transposant les données dans la table de fixation. J’ai pu voir comment le modèle serait interrompu dès le nombre de LED qui ne fonctionnait pas bien. Les modèles plus intéressants sont probablement les miswires d’inverser les broches. Une autre façon de dire serait le ceux qui ne s’allument droit, après permutation des anodes communes pour les cathodes.
Les outils que j’ai utilisé pour accomplir cette tâche (sans compter que le cube, arduino, IDE, ordinateur), était un éditeur de texte (comme Im utilisant maintenant) et d’un tableur (OpenOffice calc).
Mon cube n’est pas aligné comme les données du cube original, pour obtenir mon cube pour commencer à la bonne hauteur, je devais commencer avec 4 tables de différentes flushbuffer (décalage de hauteur sur chacun, pour régler la hauteur du cube), j’ai commencé en changeant la broche 1 et pin2 commande en appelant le programme, mais quand qui n’a pas fait le cube anode fonctionneront bien , J’ai de nouveau, j’ai dû créer des cartes personnalisées, mais plus la moitié était déjà bon, alors il ne serait pas aussi grand d’une tâche comme les faire un par un tous les.
J’ai écrit un programme pour allumer les LEDs dans une séquence, selon la façon dont le programme drawLED de travaux, en boucle x, y et z, cyclisme puis les couleurs. J’ai commencé avec un programme s’allume une LED au hasard dans le cube, supprimés tous les trucs au hasard et FLAC en 3 boucles imbriquées (x, y et z), puis utilisé une fonction intégrée au fichier charlieplex.h pour le cycle de couleur.
J’ai utilisé ce programme à regarder ce que LED allumée et pris des notes de celui qui lit dans les mauvais endroits, et quels endroits ils ont allumé. Après que j’ai compilé une liste, j’ai traversé et confirmé chacune d'entre elles a illuminé la mauvaise chose à mon programme de test. J’ai utilisé ces données et faites une petite table de conversion. À ce stade, j’ai eu toutes les infos pour tout régler, je me devais de faire certaines tables, échanger des données et tester.
J’ai commencé le processus et a obtenu des choses pour la plupart fixes et plié sans le savoir un fil sur le cube juste assez pour faire court avec un autre fil. Il a causé beaucoup de dégâts, il a fait sur une dizaine de LEDs s’autres LEDs supplémentaires, et il fait quelques LEDs ne parviennent pas à jamais lumière. J’ai refait mon tout le processus à l’aide d’un tableur et retournement des colonnes de données et échange 48 les 192 points de données dans le tableau à la main. et que j’ai eu beaucoup de problèmes à nouveau. J’étais presque convaincu que je devais changer le câblage physique pour obtenir la conversion de travailler. J’ai remarqué que les voyants qui ont échoué à la lumière étaient tous sur une spire, et j’ai compris le fonctionne de la flèche, donc j’ai considéré qu’il pourrait avoir un problème. J’ai examiné soigneusement pour s’assurer que tous les voyants étaient dans la bonne position, et étaient donc tous les autres clochers qui sont branchés dessus. J’ai vérifié le câblage pour vous assurer que je n’avais pas de fils, toucher, parce qu’il y a beaucoup de fils qui traversent sur les autres fils, qui pourraient toucher. J’ai trouvé un des fils plus rigides a été soudé juste à côté à un autre fil rigide, et j’ai plié que juste assez de fil pour qu’il n’est plus fait contact et le problème quand à l’extérieur.
Qu’un court m’a coûté quelques jours de perdu travail, mais au bout du compte il doenst question, parce que dans moins d’une semaines, Ive piraté ce cube et ont un travail commun anode charliecube.