Paso 1: Empiece por observar y explorar...
Observaciones, hechos y cosas interesantes que descubrió mientras hacking sobre el código.
Charlieplexing generalmente enciende solo un LED a la vez, multiplexación nunca luces todo al mismo tiempo, pero generalmente una fila entera, o plano puede ser luz en un momento. Charlieplexing también requiere lógica tri-estado (5v, tierra o entrada), donde sólo la multiplexación necesita binario (5v, o tierra).
Sólo puede encenderse un voxel en un momento, pero puede iluminar cualquier combo de los 3 LEDs dentro de cada voxel. Cubos más ligero un plano entero de LEDs al mismo tiempo, y que establece su ciclo de trabajo (4 x 4 x 4 son un 25%, 8 x 8 x 8 es de 12.5%,...)
Cada LED puede ser controlado individualmente mediante el uso de las dos clavijas correcta de microcontrolador (con la polaridad correcta)
Puesto que hay 64 vóxeles, esto le da un deber ciclo de 1/64 en el más brillante.
Existen 3 maneras para relacionarse con cualquier LED específica, puede ser referenciado secuencialmente desde 1 a 192, X, coordenadas Y Z eje, o por los 2 pernos de microcontrolador requeridos para encender para arriba.
Hay unas tablas de información que trabajan juntos en una manera similar a DNS en redes informáticas, es una simple traducción de modo que cuando dices r123 luz (LED rojo en lugar de x = 1, y = 2 = 3), se activan los pines del microcontrolador correcto. Esta tabla es un lugar ideal para hacer cambios si usted cometió un error de cableado y su donde hice cambios para ajustar la altura del cubo, pero también tuve que hacer muchos cambios para convertir el cubo en ánodo común.
Invirtiendo los pines en la llamada de programa el cubo no luz como era de esperar, no fue sencillo, pero consiguió la mayoría de los LEDs, que hizo más fácil para mí probar, documentar y corregir los que no tenían razón. De 192 LEDs, consiguió casi derecho 48. Esto tiene que ver con la manera que el cubo está conectado, las 4 capas de circuitos. Es interesante que invertir la polaridad fija 3/4 de los pines, pero no todos y no ninguno.
La secuencia de 192 LEDs están organizados por color, entonces en X, Y, y coordenadas Z y la ecuación simple lo pueden decodificar como este: (((color) %3) * 64) +(x*16) +(y*4) + z para que la entrada que desea encender el LED rojo en las coordenadas xyz 123, y sabe que rojo es el último grupo, así que agregamos 2 * 64 + 1 * 16 + 2 * 4 + 3 y que un total de 91, busca la entrada 91 en una mesa y obtiene el número de pin para alta y baja, para encender sólo el LED derecho.
Al probar una aguja, se puede decir que su un número ideal de LEDs controlado con que algunos número de pines de control. Cuatro clavijas de control doce LEDs. La manera que lo hace es muy simple. Conecte el conductor común y los otros tres son los cables R, G y B.. Si se cambia el conductor común, que controla un LED diferentes (física superior o inferior de la aguja), y los otros 3 cables hará el R, G y B. Usted puede girar la aguja 4 tiempo, y cada vez que se gira la aguja, cambia de altura.
Cuando usted va a través de la secuencia, puedes ver los patrones de números en grupos de cuatro. Cada uno de estos 4 números son los cables conectados a una sola aguja. Aproveché este varias veces la fijación de errores de transposición de datos de la tabla. Pude ver cómo el patrón se interrumpirá en el número de LED que no estaba funcionando bien. Probablemente los patrones más interesantes son los miswires de invertir los pines. Otra manera de decirlo sería la los que no la derecha, después de cambiar ánodos comunes para cátodos.
Las herramientas que utilicé para realizar esta tarea (además del cubo, arduino, IDE, computadora) eran un editor de texto (como Im usando ahora) y una hoja de cálculo (OpenOffice calc) del programa.
Mi cubo no está alineado como los datos originales del cubo, para obtener mi cubo para empezar a la altura correcta, tuve que comenzar con 4 mesas diferentes flushbuffer (cambio de altura en cada uno, para ajustar la altura del cubo), empecé cambiando el pin1 y pin2 orden en llamar el programa, pero al que no hacer el cubo de ánodo funcionan bien , Que de nuevo tuve que crear mapas personalizados, pero sobre la mitad ya estaba bien, así que no sería tan grande de una tarea como que hacerlos todos uno por uno.
Escribí un programa para encender los LEDs en una secuencia, basada en la forma de las obras del programa dijo, bucle x, y y z, entonces ciclismo colores. Comenzó con un programa para encender un LED al azar en el cubo, había despojado a todas las cosas al azar y dejó en 3 bucles anidados (x, y y z), entonces utiliza una función incorporada en el archivo charlieplex.h al ciclo de color.
Utilicé este programa para ver lo LEDs encendido y hacen notas a las que en los lugares equivocados, y qué lugares encendió. Después había realizado una lista, fui a través y confirmó a cada uno de ellos iluminó la cosa mal con mi programa de prueba. Utiliza estos datos y hacer una pequeña tabla de conversión. En este punto tenía toda la información para arreglar todo, tuve que hacer algunas tablas, cambiar algunos datos y probar.
Iniciado el proceso y tiene cosas en su mayoría fijos y sin saberlo doblar un alambre en el cubo lo suficiente como para hacer cortocircuito con otro cable. Había causado muchos estragos, había hecho sobre una docena se iluminan otros LEDs extras e hizo unos LEDs no siempre luz. Hice volver a mi todo el proceso usando una hoja de cálculo y columnas de datos y mano intercambio de 48 de los 192 puntos en la tabla de los bancos. y que yo estaba teniendo muchos problemas otra vez. Estaba casi convencido de que tenía que cambiar el cableado físico para obtener la conversión a trabajar. Me di cuenta que los LEDs que no a la luz en una torre, y entender cómo funciona la aguja, por lo que considera que podría tener algún problema. Examiné cuidadosamente para asegurarse de que todos los LEDs estaban en la posición correcta, y así todas las agujas que estaban conectadas a él. He comprobado el cableado para asegurarse de que no tengo cables de tocar, porque hay muchos cables que cruzan otros cables, que podrían tocar. Encontré uno de los cables más rígidos era soldado junto con otro cable rígido, y que lo suficiente como para que ya no hizo contacto y el problema cuando lejos de alambre doblado.
Que uno corto me costo un par de días de había perdido trabajo, pero en última instancia, materia, porque en menos de una semanas, he hackeado este cubo y tiene un charliecube de ánodo común de trabajo.