InicioHazlo Tu MismoRealiza cubo 3D con led

Realiza cubo 3D con led

Hazlo Tu Mismo4/21/2012






Habilidades requeridas



Electrónica básica.
Cómo realizar soldadura.
Cómo utilizar un multímetro, etc.














lista de componentes









Esto es lo que usted necesita para hacer un cubo de LED:
512x LED (más algún extra para cometer errores!)
Resistencias de 64x. (Vea el paso por separado para el valor de ohmios)
1x o 2x PCB prototipo de gran tamaño. El tipo de cobre, con "ojos", ver imagen.
1x ATMEGA32 microcontrolador (también se puede utilizar el ATmega16 pin a pin compatible)
LEDs de estado de 3x. Usted elige el color y el tamaño.
Resistencias de 3x para los LEDs de estado.
8x ICs 74HC574
16x PN2222 transistores
16x resistencias de 1k
1x 74HC138 IC
1x Maxim MAX232 IC
1x 14,7456 MHz corteza
2x condensadores de 22pF cerámicos
Condensadores 0.1uF cerámico 16x
3x condensador electrolítico 1000uF
3x 10uF condensador electrolítico
1x condensadores electrolíticos 100uF
8x de 20 pines Conectores IC
1x conector de 40 pines IC
2x 16 pines IC zócalo
1x 2-pin terminal de tornillo
1x cable de 2 hilos con enchufes
9 x 8-pines clavijas de los terminales
1x 4-pines clavijas de los terminales, en ángulo recto
2x 16-pin conector del cable de cinta
1x 10-pin conector del cable de cinta
Cable de cinta
2x pulsadores
2x clavijas de los cables de cinta
9x 8-pin conector hembra se conecta
Cable en serie y cabecera de 4 pines conector hembra
Pieza de madera para la plantilla y la base
8x opcionales resistencias pull-up para las capas
5V de alimentación (consulte el paso por separado para la fuente de alimentación)





¿Qué es un cubo de LED







Un cubo LED es como una pantalla LED, pero es especial en que tiene una tercera dimensión, lo que lo convierte en 3D. Piense en ello como muchas de las pantallas transparentes de baja resolución. En las pantallas normales es normal para tratar de apilar los pixeles tan cerca como sea posible a fin de hacer que se vea mejor, pero en un cubo uno debe ser capaz de ver a través de ella, y más espacio entre los píxeles (en realidad es voxels, ya que es en 3d) que se necesita. El espacio es un trade-off entre lo fácil que detrás de las capas que se ve, y la fidelidad voxel. Dado que es mucho más trabajo hacer un cubo de LED que una pantalla de LED, por lo general son de baja resolución. Una pantalla LED de 8x8 píxeles es sólo 64 LEDs, pero un cubo de LED en 8x8x8 es de 512 LEDs, un orden de magnitud más difícil de hacer! Esta es la razón cubos LED sólo se hacen en baja resolución. Un cubo LED no tiene por qué ser simétrica, es posible hacer un 7x8x9, o incluso las formas extrañas.




¿Cómo funciona un cubo de LED





Este cubo de LED tiene 512 LEDs. Obviamente, tener un puerto dedicado IO para cada LED sería muy poco práctico. Usted tendría un micro controlador con 512 puertos IO, y ejecutar 512 hilos a través del cubo. En cambio, los cubos de LED se basan en un fenómeno óptico denominado persistencia de la visión (POV). Si parpadea un led muy rápido, la imagen permanecerá en su la retina por un corto tiempo después de que el led se apaga. Al parpadear cada capa del cubo, uno tras otro muy, muy rápido, que da la ilusión de una imagen en 3D, al hecho de int usted está buscando en una serie de imágenes en 2D apiladas oneanother ontop. Esto también se denomina multiplexación. Con esta configuración, sólo necesitamos 64 (para los ánodos) + 8 (para cada capa) Puertos IO para controlar el cubo de LED. En el video, el proceso se ralentiza lo suficiente para que usted lo vea, a continuación, se ejecuta más rápido y más rápido hasta la frecuencia de actualización es lo suficientemente rápido para la cámara para capturar el efecto de Punto de vista.




La anatomía de un cubo de LED





Vamos a estar hablando de ánodos, cátodos, columnas y capas, por lo que le permite tomar un momento para familiarizarse con la anatomía de un cubo de LED. Un LED tiene dos piernas. Uno positivo (el ánodo) y uno negativo (cátodo). Con el fin de iluminar un LED, tiene que ejecutar la corriente de lo positivo a la pata negativa. (Si no recuerdo mal la corriente real de los electrones es al revés. Pero vamos a ponerle a el flujo de corriente que es de positivo a negativo por ahora). El cubo de LED se compone de columnas y capas. Las patas de cátodo de cada LED en una capa se sueldan juntos. Todas las patas de ánodo en una columna se sueldan juntos. Cada una de las columnas 64 están conectados a la tarjeta de conexión con un cable separado. Cada columna puede controlarse individualmente. Cada una de las capas 8 también tiene un cable separado de ir a la tarjeta de conexión. Cada una de las capas están conectadas a un transistor que permite que el cubo para activar y desactivar el flujo de corriente a través de cada capa. Por sólo encender el transistor para una capa, la corriente de las columnas de ánodo sólo puede fluir a través de esa capa. Los transistores para las otras capas están apagadas, y la imagen emitida en los 64 cables de ánodos sólo se muestran en la capa seleccionada. Para mostrar la siguiente capa, basta con apagar el transistor de la capa actual, cambiar la imagen de los 64 cables de ánodos a la imagen de la siguiente capa. A continuación, encienda el transistor de la siguiente capa. Aclarar y repetir muy muy rápido. Las capas se conoce como capas, capas de cátodo o capas de tierra. Las columnas se hará referencia a como columnas, las columnas de ánodo o ánodos.





IO puerto de expansión, más de multiplexación



Nos reunimos en el último paso que un cubo de 8x8x8 LED requiere 64 8 líneas de IO para operar. No AVR micro controlador con un paquete DIP (el tipo de chip de a través de agujero que usted puede fácilmente la soldadura o el uso de una placa, paquete en línea dual) que tienen muchas líneas de IO disponibles. Para obtener las líneas de salida de 64 requeridos necesarios para los ánodos de LED, crearemos un circuito multiplexor sencillo. Este circuito múltiplex 11 líneas de IO en 64 líneas de salida. El multiplexor se construye mediante el uso de un componente llamado un cierre o un flip-flop. Vamos a llamar a los cierres de aquí en adelante. Este multiplexor utiliza un enganche de 8 bits llamada IC 74HC574. Este chip tiene las patillas siguientes:
8 entradas (D0-7)
8 salidas (Q0-7)
Un "cerrojo" pin (CP)
1 salida de habilitación pines (OE)
El trabajo de la traba es la de servir como una especie de memoria simple. El pestillo puede contener 8 bits de información, y estos 8 bits están representados en los pines de salida. Considere la posibilidad de un cierre con un LED para conectar la salida Q0. Para activar este LED, se aplican V + (1) a la entrada D0, a continuación, tire de la CP pin bajo (GND), entonces alto (V +). Cuando los cambios de pin del PP de bajo a alto, el estado de la entrada D0 está "conectado "a la salida Q0, y esta salida se mantiene en ese estado, independientemente de cambios futuros en el estado de la entrada D0, hasta que nuevos datos se carga tirando de la clavija de CP de alta y baja de nuevo. Para hacer una gran traba que se puede recordar el de encendido / fuera de estado de 64 LEDs que necesitamos 8 de estos cierres. Las entradas D0-7 de todos los cierres están conectados entre sí en un bus de 8 bits. Para cargar el encendido / apagado estados de todos los 64 LEDs que simplemente hacer esto: Cargue los datos de la primera traba en el autobús. tire del pasador de la CP bajo pestillo primero y luego de alta. Cargue los datos del segundo cierre en el autobús. tire del pasador de la cerradura CP segunda baja vuelve a subir. Cargar los datos de la tercera pestillo en el bus. tire del pasador de la CP bajo pestillo tercero vuelve a subir. Aclarar y repetir. El único problema con esta configuración es que tenemos 8 líneas de IO para controlar la línea de PC para cada cierre. La solución es utilizar un 74HC138. Este circuito integrado tiene 3 líneas de entrada y 8 salidas. Las líneas de entrada se utilizan para controlar cuál de las 8 líneas de salida que se necesiten baja en cualquier momento. El resto será alto. Cada cabo las salidas en el 74HC138 está conectada a la clavija de CP en uno de los pestillos. El siguiente pseudo-código se carga el contenido de una matriz de tampón en la matriz de pestillo: / / PUERTO A = bus de datos / / PUERTO B = dirección autobús (74HC138) / / char buffer [8] tiene 64 bits de datos para la matriz de cierre PORTB = 0x00;. / / Esta tira PP en el pestillo de una baja for (i = 0; i <8; i + +) {




La práctica en pequeña escala



Cada vez que Destructores de mitos están poniendo a prueba un mito complejo, que comienzan por algunos experimentos a pequeña escala. Le recomendamos que haga lo mismo. Antes de construir el cubo de 8x8x8 LED, empezamos por hacer una versión más pequeña de la misma, 4x4x4. Al hacer la versión de 4x4x4 en primer lugar, se puede perfeccionar su técnica de soldadura del cubo antes de comenzar en la grande.





Generar el cubo: crear una plantilla






Con el fin de hacer un buen cubo buscando LED, es importante que es completamente simétrico, que el espacio entre cada LED es idéntica, y que cada LED puntos de la misma manera. La forma más sencilla de lograr esto es para crear una plantilla temporal de soldadura / plantilla. 1) Encontrar un pedazo de madera o plástico que es más grande que el tamaño de su cubo. 2) Buscar una broca que se hace un agujero que se ajusta perfectamente un LED en su lugar. Usted no quisiera que fuera al ala, ya que haría más difícil para eliminar la capa soldado de la plantilla, sin doblarlo. Si los agujeros son demasiado grandes, algunos de los LEDs podría salir torcido. 3) Use una regla y un ángulo de hierro para elaborar una red de 8 por 8 líneas que se cortan en 64 puntos, utilizando el espacio de LED determina en un paso anterior. 4) Utilice un objeto puntiagudo fuerte para hacer sangrías en cada intersección. Estas sangrías evitará que la broca se deslice hacia los lados cuando se inicia la perforación. 5) Perfore todos los agujeros. 6) Tomar un LED y tratar por todos los agujeros de tamaño. Si el agujero es demasiado ajustado, con cuidado perfore nuevamente hasta que el LED se ajusta perfectamente y se puede sacar sin mucha resistencia. 7) En algún lugar cerca de la mitad de uno de los lados, dibujar una pequeña marca o una flecha. Un alambre de acero se sueldan en aquí en cada capa para dar el cubo algo de rigidez adicional.






Generar el cubo: una capa de soldadura






Cada capa está formada por 8 columnas de LEDs se mantienen unidas por las patas de cada LED. En la parte superior de cada capa de cada LED se gira 90 grados en sentido horario, de modo que la pata se conecta con el LED superior de la columna siguiente. En la columna a la derecha esta pata se pegará fuera del lado de la capa. Dejamos esto en su lugar y lo utilizan para conectar tierra al probar todos los LED en un paso posterior. 1) Preparar 64 LEDs , doble las piernas cátodo de cada LED de 90 grados. Asegúrese de que las piernas se doblan en la misma dirección en todos los indicadores LED. En cuanto a la sesión de LED en un agujero en la plantilla con la muesca a la derecha, nos inclinamos hacia arriba de las piernas. 2) Comience con la fila en la parte superior de inicio mediante la colocación de la parte superior derecha de LED en la plantilla. A continuación, coloque la una a la izquierda, colocándolo de manera que la pierna de cátodo está en contacto con la pierna cátodo del LED anterior. Aclarar y repetir hasta que llegue la luz LED izquierda. Soldar todas las articulaciones. 3) Suelde todas las 8 columnas Si usted es diestro, le recomendamos que comience con la columna a la izquierda. De esa manera la mano puede descansar en la plantilla de madera, cuando la soldadura. Usted necesitará una mano firme al soldar a mano alzada como este. Comience por colocar el segundo LED de la parte superior, la alineación que por lo que toca la pierna de la unión de soldadura de la etapa anterior. A continuación, coloque el LED. Por debajo de ese modo que la pierna toque el cátodo LED por encima de Repita el proceso hasta llegar a la parte inferior. Suelde todas las articulaciones. 4) Añadir refuerzos Ahora tiene una capa que se parece a un peine. En este punto, todo el asunto es muy endeble, y usted tendrá que agregar un poco de apoyo. Se utilizó un refuerzo en la parte inferior y uno cerca de la mitad. Tome una paz de alambre recto, más o menos se alinean en la que desea que uno de los extremos y la soldadura de la capa. Afinar la alineación y la soldadura del otro extremo en su lugar. Ahora, hacer juntas de soldadura a las columnas restantes 6. Haga esto para ambas llaves. 5) prueba que todos los LEDs Esto se explica en el siguiente paso. Sólo mencionar aquí lo que no es eliminar la capa por el momento. 6) Retire la capa es todo La primera capa del cubo de LED hecho, ahora todo lo que tienes que hacer es sacarlo de la plantilla. Dependiendo del tamaño de los agujeros, algunos LED pueden tener más resistencia al intentar sacarlo. Basta con coger los dos extremos de la capa y tirando probablemente se rompería toda la cosa, si un par de los LEDs están atrapados. Comience levantando cada LED de un par de milímetros. Sólo lo suficiente para sentir que no hay ninguna resistencia.



Generar el cubo





En nuestra opinión, un cubo de LED es una obra de arte y debe ser perfectamente simétricos y rectos. Si nos fijamos en los indicadores LED en la plantilla de lado, es probable que estén dobladas en alguna dirección. Usted quiere que todas las patas de apuntar hacia arriba, en un ángulo de 90 grados de la plantilla. Mientras observa la plantilla desde el lado, enderece todas las piernas. A continuación, gire la plantilla de 90 grados, para poder verla desde el otro lado, y luego hacer el mismo proceso. Ahora tiene una capa perfecta que está listo para ser retirado de la plantilla.





doblar las patas





En las columnas del cubo de LED, queremos que cada LED se siente centrado, precisamente, por encima de los LED a continuación. Las patas de los LEDs de salir del cuerpo de la mitad de un LED. Milímetro de más o menos desde el borde Para hacer una unión de soldadura, hay que doblar la pierna ánodo de modo que toque la pierna en el ánodo por debajo del LED. Hacer una curva en la pierna del ánodo hacia el cátodo pierna aproximadamente 3 mm desde el extremo de la pierna. Esto es suficiente para que la pierna se dobla alrededor del LED abajo y hacer contacto con su pierna ánodo.





soldadura de las capas juntas






Ahora viene la parte difícil, para soldar todo junto! Las dos primeras capas pueden ser muy frágil antes de que se sueldan entre sí. Usted puede querer poner la parte de atrás la primera capa en la plantilla para darle algo de estabilidad. Con el fin de evitar el desastre total, se necesita algo para mantener la capa en su lugar antes de que se sueldan en su lugar. Por suerte, el ancho de una batería de 9V está bastante cerca de 25 mm. Probablemente más cerca de 25,5 26mm, pero eso está bien. Advertencia: Los 9 voltios de una batería de 9V puede sobrecargar los LEDs si los contactos de la batería entra en contacto con las patas de los LEDs. Grabamos en los polos de la batería para evitar que accidentalmente arruinar los LED que eran de soldadura. Hemos tenido un montón de baterías de 9V por ahí, así que les sirven de apoyo temporales. Comience por colocar una batería de 9V en cada esquina. Asegúrese de que todo está perfectamente alineado, luego de soldadura de la esquina LED. Ahora soldar todos los LEDs alrededor del borde del cubo, moviéndose a lo largo de las baterías de 9V a medida que avanza alrededor. Esto asegurará que las capas se sueldan perfectamente paralelas entre sí. Ahora mueva una batería de 9 voltios a la mitad del cubo. Sólo se deslice en uno de los lados. Soldar un par de los LEDs en el centro. Todo esto debe ser bastante estable en este momento, y usted puede seguir para soldar el resto de los LED sin necesidad de utilizar las baterías de 9V para el apoyo.




crear la base






Para transformar la plantilla en una base, que acaba de perforar todos los agujeros a través de la junta. Luego perforado 8 agujeros más pequeños de los 8 hilos de ejecución catódicos hasta las 8 capas de cátodo. Por supuesto, usted no quiere que su cubo de LED en una base de madera de color.





montar el cubo





Montar el cubo. Eso suena muy fácil, pero no lo es. Hay que alinear las piernas 64 LED para deslizarse a través de 64 orificios, al mismo tiempo. Es como enhebrar una aguja, los tiempos de 64. Se han encontrado más fácil comenzar con un extremo, luego, gradualmente, apareciendo las piernas en su lugar. Utilice un bolígrafo o algo para meter en las piernas de LED que faltan a sus agujeros. Una vez que todas las 64 piernas de LED están asomando a través de la base, con cuidado encienda su lado. Luego, doblar las piernas en los 64 a 90 grados. Esto es suficiente para mantener el cubo firmemente montado a la base.




conecte los cables




64 + 8 cables que van desde el controlador al cubo de LED. Se utilizó cable de cinta para hacer las cosas un poco más fácil. Las capas de suelo usar un cable plano de 8 hilos. Los cátodos están conectados con 4 cables planos de 16 hilos. Cada uno de estos cables planos se dividen en dos en cada extremo, para obtener dos cables de 8 hilos. En el lado del controlador, se adjunta conectores de 0.1 "de cabecera de sexo femenino. Estos plug estándar de 0,1 en el hormigueo de una hilera de cabecera de PCB. El conector de cabecera es un conector modular que se presenta en dos partes, insertos de metal y un cuerpo de plástico. Los insertos metálicos se supone que se doble, con una herramienta. No teníamos la herramienta adecuada en la mano, así que utilizamos un alicate. También hemos añadido un poco de soldadura para asegurarse de que los cables no se cayó de con el uso. 1) Preparar un 8 hilos del cable plano y 4 de 16 cables de cinta de alambre de la longitud deseada 2) Crimp o la soldadura de los insertos metálicos. 3 ) Introducir el inserto de metal en la carcasa del conector de plástico. 4) Suelde el cable plano de 8 hilos a las bandas del cátodo. Pre-estaño los cables antes de soldar! soldadura 5) en el resto de los cables. La raya roja en el primer cable indica que este es el bit 0. 6) Apriete los tornillos de la brida de sujeción para asegurarse de que todo se queda en su lugar. 7) Conecte todos los cables de cinta a los PCB en el orden correcto. Vea las fotos abajo. El cable de cinta de 8 no tiene un cable rojo. Sólo la vuelta al conector de 180 grados si el cubo está boca abajo.





Crear el controlador




Sacamos el mayor tipo de PCB que tenía disponible (9x15cm) y comenzó a experimentar con diferentes diseños de tablero. Pronto se hizo claro que abarrotar todos los componentes en una placa no era una buena solución. En lugar de eso decidió separar de la matriz pestillo y la parte de alimentación del circuito y colocarlo en una tabla separada. A las transferencias de cable plano de datos de las líneas entre las dos placas. Elección de dos tableros separados fue una buena decisión. La matriz de pestillo tomó casi todo el espacio de la placa de circuito. No habría sido mucho espacio para el controlador de micro y otras partes. Puede que no tenga las tablas exactamente el mismo circuito que nosotros, o lo desea, puede organizar los componentes de una manera diferente. Trate de colocar todos los componentes en la placa de circuito para comprobar qué diseño mejor se adapte a su tablero de circuitos.



Terminal de alimentación y los condensadores de filtrado




La fuente de alimentación consta de un terminal de tornillo para conectar el GND y los cables de VCC, algunos de filtrado condensadores, un switch y un un LED para indicar la alimentación. . Inicialmente, se había diseñado un sistema de alimentación de a bordo con un paso por el regulador de tensión LM7805 Sin embargo, esto resultó ser un fallo grande. Se utilizó este con una verruga 12V pared. Pero como usted ya sabe, la mayoría de las verrugas de pared salida de voltajes más altos que los especificados en la etiqueta. El nuestro emite algo así como 14 voltios. El LM7805 no es un regulador de voltaje muy sofisticado, que sólo utiliza la resistencia a bajar el voltaje. Para obtener salida de 5 voltios de 14 voltios de entrada significa que el LM7805 tiene que bajar 9 voltios. El exceso de energía se dispersa en forma de calor. Incluso con el disipador de calor que se ve en la imagen, se hizo muy, muy caliente. Camino a la caliente al tacto! Además de eso, el rendimiento no era genial. No era capaz de suministrar la corriente necesaria para ejecutar el cubo en el brillo completo. El LM7805 se retiró más tarde, y un alambre se suelda entre la entrada y los pines de salida. En su lugar, utiliza una fuente de 5V de alimentación externa, como se explica en el paso anterior. ¿Por qué tantos condensadores? El cubo de LED va a cambiar unos 500mA dentro y fuera de varios cientos de veces por segundo. En el momento de la carga 500mA está encendido, la tensión se va a caer a través de todo el circuito. Muchas cosas contribuyen a ello. La resistencia en los cables de la fuente de alimentación, la lentitud en el suministro de energía para compensar el aumento de la carga, y probablemente algunas otras cosas que no sabía nada Mediante la adición de condensadores, se crea un buffer entre el circuito y el fuente de alimentación. Cuando la carga 500mA está conectado, la corriente requerida se puede extraer de los condensadores durante el tiempo que tarda la fuente de alimentación para compensar el aumento de la carga. condensadores grandes pueden suministrar grandes corrientes durante períodos más largos de tiempo, mientras que pequeños condensadores puede suministrar pequeñas ráfagas, pero rápida de energía. Hemos colocado un condensador de 1000uF justo después del interruptor principal. Esto funciona como nuestro buffer de alimentación principal. Después de eso, hay un condensador 100uF. Es una práctica común tener un gran condensador en el pin de entrada de un LM7805 y un condensador más pequeño en la patilla de salida que es. El condensador de 100uF probablemente no es necesaria, pero creemos que los condensadores que su mirada más fría del circuito! El LED está conectado a VCC justo después del interruptor principal de alimentación, a través de una resistencia.




Conecte los circuitos integrados, 8 bits de bus + OE





En la foto, verás que hay un montón de cables han entrado en su lugar. Todos los cables azules pequeñas conforman el bus de 8 bits 1 que conecta todos los circuitos integrados de enganche. 8 bits son para los datos, y el bit 1 es permitir la salida de línea. En la parte superior de la placa, se ha añadido un conector de 16 pines. Este se conecta la tarjeta a la placa del pestillo de micro controlador. Junto a esto, se ve el 74HC138. Los cables azules pequeñas son de alambre de Kynar. Se trata de un 30 o 32 AWG (American Wire Gauge) de alambre.



Transistor matriz







Establecer los bits de los fusibles




El ATMEGA32 tiene dos bytes de fusibles. Estos contienen ajustes que tienen que ser cargado antes de la CPU puede comenzar, como fuente de reloj y otras cosas. Hay que programar el Atmega debe utilizarse un oscilador de alta velocidad y el cristal de desactivar JTAG. Hemos establecido el byte fusible inferior (lfuse) para 0b11101111, y el byte de fusibles de alta a 0b11001001. (0b significa que todo lo que después de la b se encuentra en binario). Se utilizó avrdude y USBtinyISP (http://www.ladyada.net/make/usbtinyisp/) para programar nuestra ATmega. En todos los ejemplos siguientes, vamos a utilizar un Ubuntu Linux ordenador. Los comandos deben ser idénticos si se ejecuta en Windows avrdude.
avrdude-c usbtiny-p m32-U lfuse: w: 0b11101111: m
avrdude-c usbtiny-p m32-U hfuse: w: 0b11001001: m





AVR con el código de prueba






Es hora de probar si su nuevo LED cubo realmente funciona! Hemos preparado un programa de prueba simple para comprobar si todo el trabajo de los LEDs y si están conectados correctamente. Puede descargar el firmware test.hex en este paso, o descargar el código fuente y compilarlo tú mismo. Al igual que en el paso anterior, se utiliza para la programación avrdude:
avrdude-c usbtiny-p m32-B 1-U flash: w: test.hex





Prueba del cubo




El código de prueba que haya programado en el paso anterior le permitirá confirmar que todo está conectado correctamente. Se iniciará mediante la elaboración de un plano a lo largo de un eje, entonces se mueve a lo largo de las 8 posiciones de ese eje.






Programa del AVR con el código real




Así que todo el check out en la prueba. Es hora de programar el Atmega con el firmware real En su mayor parte, el proceso es el mismo que en el paso de programación anterior. Pero además hay que programar la memoria EEPROM. El cubo de LED tiene una fuente de mapa de bits almacenados en la EEPROM de base, junto con algunos otros datos. firmware se programan utilizando el mismo procedimiento que con el código de prueba. Firmware:
avrdude-c usbtiny-p m32-B 1-U flash: w: main.hex
EEPROM:
avrdude-c usbtiny-p m32-B 1-U eeprom: w: main.eep
-U eeprom: w: main.eep especifica que estamos accediendo a la memoria EEPROM, en modo de escritura. AVR-GCC pone todos los datos de la EEPROM en main.eep. Si usted no quiere jugar con el código, el cubo de LED se termina en este punto. Sin embargo, le recomendamos que pasar algún tiempo en el lado del software de las cosas así. Eso es al menos tan divertido como el hardware! Si descarga los archivos binarios, lo que tienes que cambiar los nombres de archivo en los comandos con el nombre de los archivos descargados. Si compila desde el código fuente es el nombre main.hex y main.eep.



http://www.instructables.com/files/orig/FVZ/Y8K2/GICYB945/FVZY8K2GICYB945.tmp





la inicialización de IO






Lo primero que el ATmega hace después del arranque, es llamar a la ioinit () función. Esta función configura los puertos de entrada y salida, temporizadores, alarmas y comunicaciones de serie. Todos los puertos IO en el ATmega son bidireccionales. Se pueden utilizar ya sea como una entrada o una salida. Configuramos todo como salidas, excepto los pines IO, donde los dos botones están conectados. El pin RX de la línea serie se convierte automáticamente en una entrada cuando USART RX está activado. 1) DDRX establece la dirección de los datos de los pines IO. (Registro de datos de la Dirección). 1 salida de los medios, los medios de entrada de 0. 2) Después de la direccionalidad se ha configurado, ponemos todas las salidas a 0 para cualquier entusiasta de parpadear los LEDs, etc antes de la interrupción ha comenzado. 3) Para los pines configurados como entradas, los cambios de bits PORTx su función. Configuración de un 1 en el bit PORTx registro permite una interna tire hacia arriba la resistencia. El puerto se detuvo a VCC. Los botones están conectados entre el puerto y GND. Cuando se pulsa un botón del bit correspondiente PinX lee un 0 lógico. 4) Temporizador 2 está configurado y un temporizador de interrupción habilitada. Esto se trata en una etapa distinta. 5) Las comunicaciones serie se ha configurado y habilitado.





el modo de selección y la semilla aleatoria




Cuando empezamos a escribir y depurar los efectos de ellos, nos dimos cuenta de que las funciones que utilizan números aleatorios muestra las animaciones exactamente la misma cada vez. Se fue al azar bien, pero la misma secuencia aleatoria cada vez. Resulta que el generador de números aleatorios en el ATmega necesita ser sembrado con un número aleatorio para crear verdaderos números aleatorios.

Se escribió una pequeña función llamada bootwait (). Esta función sirve para dos propósitos.

1) Crear una semilla aleatoria. 2) Escuchar al pulsar un botón para seleccionar el modo de operación.

Se hace lo siguiente:

1) Ajuste x contador a 0.

2) Iniciar un bucle infinito, mientras que (1).

3) incremento de X por uno de venta libre.

4) Utilice x como una semilla aleatoria.

5) Retrasar por un tiempo y establecer el estado de led rojo.

6) Controlar al pulsar un botón. Si el botón principal se pulsa, la función devuelve 1. Si el botón se pulse PGM returnes 2. Las declaraciones de retorno sale de la función terminando así el bucle infinito.

7) Retraso y establecer de nuevo el led verde.

8) Compruebe si presiona el botón de nuevo.

9) Loop para siempre hasta que se pulsa un botón.

El bucle de bucles muy rápido, por lo que la probabilidad de que lo va a parar en el mismo valor de x dos veces seguidas es muy remota. Esta es una manera muy sencilla pero eficaz para obtener una buena semilla aleatoria.

Bootwait () se llama desde la función main () y su valor de retorno asignado a la variable i.

Si i == 1, el bucle principal se inicia un ciclo que muestra los efectos generados por el ATmega. Si i == 2, entra en el modo RS-232 y espera a que los datos de un ordenador.






el espacio cubo virtual








A partir de ahora, la posición natural del cubo de LED estará con los cables que salen hacia la izquierda.

En esta orientación, el eje Y va de izquierda a derecha. El eje X va de adelante hacia atrás. El eje Z va desde abajo hacia arriba.

Las coordenadas de este instructable siempre se representa como x, y, z.

Posición 0,0,0 es la esquina inferior izquierda delantera. Posición 7,7,7 es la esquina superior derecha de nuevo.

¿Por qué usamos el eje Y para la izquierda / derecha y X para delante / detrás? ¿No debería ser al revés? Sí, nosotros también lo creo. Hemos diseñado el cubo de LED para ser visto en el "frente" con los cables que salen de la espalda. Sin embargo, esto era muy poco práctico cuando se tiene el cubo de LED en el escritorio, que era más práctico tener los cables que salen del lado, y teniendo en cubo y el lado del controlador al lado del otro.




Efecto 1, de la lluvia



Vamos a empezar con uno de los más simples efectos. En effect.c se encuentra el effect_rain función (int iteraciones). Este efecto añade las gotas de lluvia a la capa superior del cubo, y luego los deja caer a la capa inferior. La mayoría de los efectos tiene un bucle principal de () que recorre desde i = 0 a i <iteraciones.
effect_rain (int iteraciones), sólo toma un argumento, que es el número de iteraciones. En el interior del bucle de iteración, la función hace lo siguiente: . 1) Crear un número aleatorio entre 0 y 3, le llaman aquí n 2) Repetición de la de () bucle número n de veces. 3) Para cada iteración de este bucle, colocar un píxel en la capa 7 (z = 7) en x al azar y las coordenadas y. 4) de retardo por un tiempo 5) Desplazar el contenido de todo el cubo a lo largo del eje Z por -1 posiciones. Esto cambia todo, hasta un nivel. Este es un efecto bastante simple, pero funciona!





Effect 2, el avión boing






Este efecto dibuja un plano a lo largo del eje especificado a continuación, se mueve desde la posición 0 a 7 en el eje y viceversa. Esto es muy simple, pero realmente pone de manifiesto la profundidad del cubo 3D LED
Esta función no tiene un bucle de iteración. En su lugar, se llama dos veces para cada eje en launch_effect ().
Esto es lo que hace:
1) Para ()-bucle i desde 0 a 7.
2) Limpiar el cubo con relleno (0x00);
3) setplane de llamadas () para dibujar un plano a lo largo del eje deseado en la posición i. El avión no está dibujado en el eje especificado, se dibuja en los otros dos ejes. Si se especifica AXIS_Z, un avión se dibuja en el eje X e Y. Es más fácil pensar de esa manera. En vez de haber constantes llamado PLANE_XY, etc PLANE_YZ
4) Retrasar por un tiempo.
5) Repita el mismo bucle con i al pasar de 7 a 0




Efecto 3, sendvoxels aleatoria Z





Este efecto envía voxels arriba y hacia abajo del eje Z, como la implica.
void sendvoxels_rand_z () toma tres argumentos. Iteraciones es el número de veces que se envía un voxel arriba o hacia abajo. Retardo es la velocidad del movimiento (mayor retraso significa una velocidad más baja). No hay que esperar el tiempo transcurrido entre cada voxel que se envía.
Así es como funciona:
1) El cubo se borra con el relleno (0x00);
2) Recorrer las 64 posiciones a lo largo de X / Y y genera aleatoriamente un voxel, ya sea en Z = 0 o Z = 7.
3) Introduzca el bucle de iteración principal
4) Seleccionar al azar las coordenadas X e Y de entre 0 y 7. Si las coordenadas X e Y son idénticos a las coordenadas anterior, esta iteración se omite.
5) Comprobar si el voxel en este coordenadas X / Y es en Z = 0 o Z = 7, y enviarlo hacia el lado opuesto con sendvoxel_z ().
6) Retraso por un tiempo y guardar las coordenadas de esta iteración para que podamos cotejar con las coordenadas al azar en la siguiente iteración. Parecía raro para mover el mismo voxel dos veces seguidas.
El movimiento real de los voxels se hace por otra función, sendvoxel_z. La razón de esto, es que un par de otros efectos hace lo mismo sólo en formas diferentes.
El sendvoxel_z function () toma cuatro argumentos. Coordenadas X e Y. Coordenada Z, este es el destino y, o bien puede ser 0 o 7. Retraso que controla la velocidad.
Así es como funciona:
1) Para ()-bucle i desde 0 a 7.
2) Si el destino es 7, establecemos II de 7-1, haciendo así ii la inversa de i. Borrar el voxel en Z = 1 ii. Cuando se mueve hacia abajo, ii un voxel es el anterior.
3)Si el destino es 0, sea ii ser igual a i. Borrar II-1. Cuando se mueve hacia arriba, -1 es el voxel anterior.
4) Establecer el voxel en z = ii.
5) Espere un poco.




Efecto 4, shrinkgrow caja y woopwoop







Se toma cuatro argumentos, el número de iteraciones, la rotación, voltear y el retraso. Rotación especifica rotación alrededor del eje Z en intervalos de 90 grados. Voltear> 0 voltea el cubo al revés.
Para realizar la función tan simple como sea posible, simplemente dibuja una caja de 0,0,0 a cualquier punto a lo largo de la diagonal entre 0,0,0 y 7,7,7 a continuación, utiliza las funciones de eje de simetría de la draw.c para hacerla girar .
1) Entre iteración de bucle principal.
2)Introduzca un for () bucle que va de 0 a 15.
3) Establecer xyz a 7-i. Esto hace que xyz la inversa de i. Queremos reducir el tamaño del primer cuadro, y luego crecer. xyz es el punto a lo largo de la diagonal. Nos acaba de utilizar una variable como x, y y z son todos iguales a lo largo de esta diagonal.
4) Cuando i = 7, la caja se ha reducido a una caja de 1x1x1, y no podemos reducir más. Si i es mayor que 7, xyz se establece en i-8, que hace que los viajes xyz 0 a 7, cuando se desplaza desde 8 a 15. Hicimos este truco para evitar tener dos bucles for, que culmina en un pasar de un 7-0 y 0-7.
5) Ponga el cubo y retrasar un poco para asegurarse de que la zona muerta se representa en el cubo. Desactivar la rutina de interrupción. Hacemos esto porque las funciones del espejo tiene un poco de tiempo. Sin desactivar las interrupciones, el cuadro de alambre se enciende brevemente en la rotación original antes de ser mostrados girar.
6) Dibuja el cuadro de alambre en su rotación original. lado de la caja está siempre en 0,0,0 mientras que los otros viajes a lo largo de la diagonal.
7) ¿las rotaciones. Si la moneda es greather a 0, el cubo se gira al revés. podredumbre toma un número de 0 a 3, donde 0 es 0 grados de rotación alrededor de Z y 3 es de 270 grados. Para obtener 270 grados que un simple reflejo de alrededor de X e Y.
8) Habilitar las interrupciones para mostrar el cubo actual gira.
9) de retardo para un rato y luego limpiar el cubo.
La otra función implicada en el efecto caja de alambre es effect_box_woopwoop (). El woopwoop nombre sonaba natural, cuando vimos por primera vez el efecto se representa en el cubo
La función de woopwoop sólo hace una iteración y toma dos argumentos, el retraso y crecer. Si crece es mayor que 0, el cuadro se inicia como una caja de 2x2x2 y crecer a una caja de 8x8x8.
Así es como funciona:
1) Poner el cubo de llenar el buffer con 0x00;
2) Para ()-bucle de 0 a 3.
4) Establecer II al I. Si crecen se especifica que se establece en 3-i para revertirla.
5) Dibuje un cuadro de alambre centrado a lo largo de la diagonal entre 0,0,0 y 7,7,7. Una esquina de la caja utiliza las coordenadas 4 + II en todos los ejes, pasando de 4-7. La otra esquina utiliza 3-II en todos los ejes, pasando de 3-0.
6) Retraso por un tiempo, a continuación, desactive el cubo.





Efecto 5, eje updown randsuspend





Este es uno de los efectos favoritos. Los voxels al azar en suspensión en el cubo da una profundidad 3D agradable, especialmente si usted mueve su cabeza al ver el efecto.
64 voxels empezar a cabo en una de las paredes laterales. Entonces todos se le asigna un destino a mitad de camino aleatorio entre la pared lateral que se inició a la pared y en el lado opuesto.
La función de continuación, recorre 8 veces que se desplazan cada voxel más cercano a su destino a medio camino. Después de 8 repeticiones, los voxels están suspendidos a diferentes distancias del punto de partida. La función hace una pausa por un tiempo, de ahí el nombre axis_updown_randsuspend . A continuación, recorre 8 veces de nuevo en movimiento los voxels un paso más hacia su destino final en la pared opuesta en cada ocasión.
El dibujo voxel real se realiza en una función separada, draw_positions_axis () para que pueda ser utilizado en diferentes efectos. Por ejemplo, los voxels podría ser suspendido a mitad de camino en un patrón no aleatorio. Vamos a dejar a usted para crear esa función de efecto! : D
Usted puede haber notado que la descripción de este efecto fue menos específico. Le animamos a descargar el código fuente y leer a través de las funciones de ti mismo. Mantenga el texto anterior en mente cuando se lee el código y tratar de averiguar todo lo que hace.





Efecto 6, stringfly





LED rotos



Ocurre un desastre. Un LED en el interior del cubo está roto! Tuvimos un par de LEDs romper realmente. Por suerte, el más difícil para llegar a sólo una capa en el interior del cubo. Para quitar el LED, acaba de tomar un pequeño par de pinzas de punta fina y poner un poco de presión en las piernas, luego le dan un ligero toque con el soldador. La pierna debe estallar a la derecha hacia fuera. Haga esto durante las dos piernas, y que está fuera. Inserción de un nuevo LED es la parte difícil. Es necesario que sea tan simétrico y agradable como el resto de los LEDs. Se utilizó una mano de ayuda a mantenerlo en su lugar durante la soldadura. Fue sorprendentemente bien, y ni siquiera podemos ver que los LED han sido reemplazados
Datos archivados del Taringa! original
326puntos
2,071visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
16visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

S
Sole-44🇦🇷
Usuario
Puntos0
Posts5
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.