LED Cube
LED Cube
Har haft lite lite att göra nu de senaste dagarna så jag har pillat lite och fått för mig att bygga en LED Cube.
Den är ganska liten. 3*3*3 lysdioder. Så det är 27 dioder. Och eftersom detta var ett test så köpte jag billiga och svaga dioder. Ska kanske uppdatera med nya dioder, vet ej vilken färg men lutar åt blåa.
Lådan har jag gjort av en bit list och mycket spackel samt lite sprayfärg. Men jag ska göra en ny låda lite senare med en ny kub.
Jag använde mig av en PIC 16f690 processor. Den är väl inte den snabbaste men det räcker fint åt mig.
Schema och kod kan jag lägga upp om någon är intresserad. Har iofs bara schemat på en bit vanligt papper men kan rita upp det på datorn om det behövs.
Här är bilder och självklart en film.
Bilder:
http://i478.photobucket.com/albums/rr15 ... 041530.jpg
http://i478.photobucket.com/albums/rr15 ... 041529.jpg
Film:
http://s478.photobucket.com/albums/rr15 ... 041532.flv
Den är ganska liten. 3*3*3 lysdioder. Så det är 27 dioder. Och eftersom detta var ett test så köpte jag billiga och svaga dioder. Ska kanske uppdatera med nya dioder, vet ej vilken färg men lutar åt blåa.
Lådan har jag gjort av en bit list och mycket spackel samt lite sprayfärg. Men jag ska göra en ny låda lite senare med en ny kub.
Jag använde mig av en PIC 16f690 processor. Den är väl inte den snabbaste men det räcker fint åt mig.
Schema och kod kan jag lägga upp om någon är intresserad. Har iofs bara schemat på en bit vanligt papper men kan rita upp det på datorn om det behövs.
Här är bilder och självklart en film.
Bilder:
http://i478.photobucket.com/albums/rr15 ... 041530.jpg
http://i478.photobucket.com/albums/rr15 ... 041529.jpg
Film:
http://s478.photobucket.com/albums/rr15 ... 041532.flv
-
- Inlägg: 3529
- Blev medlem: 4 december 2007, 16:32:13
- Ort: Jönköping -
- Housepainter
- EF Sponsor
- Inlägg: 1318
- Blev medlem: 19 juli 2006, 18:50:38
- Ort: Borås
- HUGGBÄVERN
- Tidigare soundbrigade
- Inlägg: 34840
- Blev medlem: 23 augusti 2006, 22:44:11
- Ort: Lilla Paris
- Kontakt:
Kod: Markera allt
;-----------------------------------------------------------------------------------------------;
; LED cube ;
; -------- ;
; ;
; ;
; ;
; ;
; 4MHz internal resonator used ;
; ;
; ;
; 3 layers of 3 x 3 LEDs ;
; ;
; RB6 - Top layer common ;
; RB6 - Middle layer common ;
; RB7 - Bottom layer common ;
; ;
; ;
; Each layer of LED's Anodes ; ;
; ;
; RC1 RC0 RB4 ;
; ;
; ;
; RC4 RC3 RC2 ;
; ;
; ;
; RC7 RC6 RC5 ;
; ;
; 4 registers are used to hold the patterns for the LEDs ;
; ;
; Layer1 - Top layer (8 Leds) ;
; Layer2 - Middle layer (8 Leds) ;
; Layer3 - Bottom layer (8 Leds) ;
; Layer4 - bits 7,6 and 5 hold the 9th LED for top, middle and bottom, bits 4 and 3 hold the ;
; brightness (how long it is on for), bits 2,1 and 0 is the time the specific ;
; pattern is on until the next one is retrieved ;
; ;
; There are 4 look-up tables Table1, Table2, Table3 and Table4. These are for each layer ;
; giving a total of 255 different patterns. ;
;-----------------------------------------------------------------------------------------------;
#include <p16F690.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
cblock 0x20
Delay1 ; delay loop 1
Delay2 ; delay loop 2
Delay3 ; delay loop 3
TimeDelay ; time delay x 0.001 s
EndCount ; used to tell PIC the end of the table is reached
Counter ; used as table counter
Layer1 ; top layer
Layer2 ; middle layer
Layer3 ; bottom layer
Layer4 ; 9th Led on each layer, brightness, and time
Brightness ; LED brightness
Time ; time for each pattern to stay
Temp ; temp register
endc
org 0
goto Start ; jump to Start
;-----------------------------------------------------------------------------------------------;
; Subroutines are here at the top ;
;-----------------------------------------------------------------------------------------------;
;-----------------------------------------------------------------------------------------------;
; BigSmall sub routine ;
;-----------------------------------------------------------------------------------------------;
BigSmall:
movlw b'11111111'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'11111000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'11111000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'00001000'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'00001000'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
return
;-----------------------------------------------------------------------------------------------;
; FlashingLines sub routine ;
;-----------------------------------------------------------------------------------------------;
FlashingLines:
movlw b'00100100'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'11111000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'01001001'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'10010010'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'00000011'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'11111000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'00011100'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'11100000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'10010010'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'01001001'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'00100100'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'11111000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'11100000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'00011100'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'00000011'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'11111000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
return
;-----------------------------------------------------------------------------------------------;
; LayerBrightness sub routine ;
;-----------------------------------------------------------------------------------------------;
LayerBrightness:
movlw b'11111111'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'10000000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'11111111'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'01000000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'11111111'
movwf Layer3
movlw b'00100000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'11111111'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'01001000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00001000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'10010000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00010000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'11111111'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'01010000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00010000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'11111111'
movwf Layer3
movlw b'00111000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'11111111'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'01011000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'10010000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00010000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'11111111'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'01010000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00010000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'11111111'
movwf Layer3
movlw b'00101000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00001000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'11111111'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'01001000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00001000'
movwf Layer4
call Output
return
;-----------------------------------------------------------------------------------------------;
; CubeFill sub routine ;
;-----------------------------------------------------------------------------------------------;
CubeFill:
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'00100000'
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'01100000'
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'11100000'
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'11110000'
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'11110010'
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'11110011'
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'11110011'
movwf Layer3
movlw b'00111000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'11110111'
movwf Layer3
movlw b'00111000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'11111111'
movwf Layer3
movlw b'00111000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'00100000'
movwf Layer2
movlw b'11111111'
movwf Layer3
movlw b'00111000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'01100000'
movwf Layer2
movlw b'11111111'
movwf Layer3
movlw b'00111000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'11100000'
movwf Layer2
movlw b'11111111'
movwf Layer3
movlw b'00111000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'11110000'
movwf Layer2
movlw b'11111111'
movwf Layer3
movlw b'00111000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'11110010'
movwf Layer2
movlw b'11111111'
movwf Layer3
movlw b'00111000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'11110011'
movwf Layer2
movlw b'11111111'
movwf Layer3
movlw b'00111000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'11110011'
movwf Layer2
movlw b'11111111'
movwf Layer3
movlw b'01111000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'11110111'
movwf Layer2
movlw b'11111111'
movwf Layer3
movlw b'01111000'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'11111111'
movwf Layer2
movwf Layer3
movlw b'01111000'
movwf Layer4
call Output
movlw b'00100000'
movwf Layer1
movlw b'11111111'
movwf Layer2
movwf Layer3
movlw b'01111000'
movwf Layer4
call Output
movlw b'01100000'
movwf Layer1
movlw b'11111111'
movwf Layer2
movwf Layer3
movlw b'01111000'
movwf Layer4
call Output
movlw b'11100000'
movwf Layer1
movlw b'11111111'
movwf Layer2
movwf Layer3
movlw b'01111000'
movwf Layer4
call Output
movlw b'11110000'
movwf Layer1
movlw b'11111111'
movwf Layer2
movwf Layer3
movlw b'01111000'
movwf Layer4
call Output
movlw b'11110010'
movwf Layer1
movlw b'11111111'
movwf Layer2
movwf Layer3
movlw b'01111000'
movwf Layer4
call Output
movlw b'11110011'
movwf Layer1
movlw b'11111111'
movwf Layer2
movwf Layer3
movlw b'01111000'
movwf Layer4
call Output
movlw b'11110011'
movwf Layer1
movlw b'11111111'
movwf Layer2
movwf Layer3
movlw b'11111000'
movwf Layer4
call Output
movlw b'11110111'
movwf Layer1
movlw b'11111111'
movwf Layer2
movwf Layer3
movlw b'11111000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'11111000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movwf Layer2
movlw b'11011111'
movwf Layer3
movlw b'11111000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movwf Layer2
movlw b'10011111'
movwf Layer3
movlw b'11111000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movwf Layer2
movlw b'00011111'
movwf Layer3
movlw b'11111000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movwf Layer2
movlw b'00001111'
movwf Layer3
movlw b'11111000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movwf Layer2
movlw b'00001101'
movwf Layer3
movlw b'11111000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movwf Layer2
movlw b'00001100'
movwf Layer3
movlw b'11111000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movwf Layer2
movlw b'00001100'
movwf Layer3
movlw b'11011000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movwf Layer2
movlw b'00001000'
movwf Layer3
movlw b'11011000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'11011000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movlw b'11011111'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'11011000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movlw b'10011111'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'11011000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movlw b'00011111'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'11011000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movlw b'00001111'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'11011000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movlw b'00001101'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'11011000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movlw b'00001100'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'11011000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movlw b'00001100'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'10011000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movlw b'00001000'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'10011000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'10011000'
movwf Layer4
call Output
movlw b'11011111'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'10011000'
movwf Layer4
call Output
movlw b'10011111'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'10011000'
movwf Layer4
call Output
movlw b'00011111'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'10011000'
movwf Layer4
call Output
movlw b'00001111'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'10011000'
movwf Layer4
call Output
movlw b'00001101'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'10011000'
movwf Layer4
call Output
movlw b'00001100'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'10011000'
movwf Layer4
call Output
movlw b'00001100'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
movlw b'00001000'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'00011000'
movwf Layer4
call Output
return
;-----------------------------------------------------------------------------------------------;
; SideToSide sub routine ;
;-----------------------------------------------------------------------------------------------;
SideToSide:
movlw b'00000011'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'11111011'
movwf Layer4
call Output
movlw b'00000011'
movwf Layer1
movwf Layer2
movlw b'00011100'
movwf Layer3
movlw b'11011011'
movwf Layer4
call Output
movlw b'00000011'
movwf Layer1
movwf Layer2
movlw b'11100000'
movwf Layer3
movlw b'11011011'
movwf Layer4
call Output
movlw b'00000011'
movwf Layer1
movlw b'00011100'
movwf Layer2
movlw b'11100000'
movwf Layer3
movlw b'10011011'
movwf Layer4
call Output
movlw b'00000011'
movwf Layer1
movlw b'11100000'
movwf Layer2
movwf Layer3
movlw b'10011011'
movwf Layer4
call Output
movlw b'00011100'
movwf Layer1
movlw b'11100000'
movwf Layer2
movwf Layer3
movlw b'00011011'
movwf Layer4
call Output
movlw b'11100000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011011'
movwf Layer4
call Output
movlw b'11100000'
movwf Layer1
movwf Layer2
movlw b'00011100'
movwf Layer3
movlw b'00011011'
movwf Layer4
call Output
movlw b'11100000'
movwf Layer1
movwf Layer2
movlw b'00000011'
movwf Layer3
movlw b'00111011'
movwf Layer4
call Output
movlw b'11100000'
movwf Layer1
movlw b'00011100'
movwf Layer2
movlw b'00000011'
movwf Layer3
movlw b'00111011'
movwf Layer4
call Output
movlw b'11100000'
movwf Layer1
movlw b'00000011'
movwf Layer2
movwf Layer3
movlw b'01111011'
movwf Layer4
call Output
movlw b'00011100'
movwf Layer1
movlw b'00000011'
movwf Layer2
movwf Layer3
movlw b'01111011'
movwf Layer4
call Output
return
;-----------------------------------------------------------------------------------------------;
; DiagAroundSides sub routine ;
;-----------------------------------------------------------------------------------------------;
DiagAroundSides:
movlw b'00100000'
movwf Layer1
movlw b'01000000'
movwf Layer2
movlw b'10000000'
movwf Layer3
movlw b'00011011'
movwf Layer4
call Output
movlw b'01000000'
movwf Layer1
movlw b'10000000'
movwf Layer2
movlw b'00010000'
movwf Layer3
movlw b'00011011'
movwf Layer4
call Output
movlw b'10000000'
movwf Layer1
movlw b'00010000'
movwf Layer2
movlw b'00000010'
movwf Layer3
movlw b'00011011'
movwf Layer4
call Output
movlw b'00010000'
movwf Layer1
movlw b'00000010'
movwf Layer2
movlw b'00000001'
movwf Layer3
movlw b'00011011'
movwf Layer4
call Output
movlw b'00000010'
movwf Layer1
movlw b'00000001'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'00111011'
movwf Layer4
call Output
movlw b'00000001'
movwf Layer1
movlw b'00000000'
movwf Layer2
movlw b'00000100'
movwf Layer3
movlw b'01011011'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'00000100'
movwf Layer2
movlw b'00100000'
movwf Layer3
movlw b'10011011'
movwf Layer4
call Output
movlw b'00000100'
movwf Layer1
movlw b'00100000'
movwf Layer2
movlw b'01000000'
movwf Layer3
movlw b'00011011'
movwf Layer4
call Output
movlw b'00100000'
return
;-----------------------------------------------------------------------------------------------;
; Firework sub routine ;
;-----------------------------------------------------------------------------------------------;
Firework:
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'00001000'
movwf Layer3
movlw b'00001111'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'00001000'
movwf Layer2
movwf Layer3
movlw b'00001101'
movwf Layer4
call Output
movlw b'00001000'
movwf Layer1
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'00001101'
movwf Layer4
call Output
movlw b'00001000'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'00001101'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00001101'
movwf Layer4
call Output
movlw b'00001000'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'00011100'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011100'
movwf Layer4
call Output
movlw b'00001000'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'00011011'
movwf Layer4
call Output
movlw b'10111000'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'10011011'
movwf Layer4
call Output
movlw b'01010101'
movwf Layer1
movlw b'10110000'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'01011011'
movwf Layer4
call Output
movlw b'00010100'
movwf Layer1
movlw b'01010101'
movwf Layer2
movlw b'10110000'
movwf Layer3
movlw b'00111011'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'00010110'
movwf Layer2
movlw b'01010101'
movwf Layer3
movlw b'00011011'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'00010110'
movwf Layer3
movlw b'00011011'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011011'
movwf Layer4
call Output
return
;-----------------------------------------------------------------------------------------------;
; CubeLight sub routine ;
;-----------------------------------------------------------------------------------------------;
CubeLight:
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'11100000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'11101000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'11110000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'11111000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'11110000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'11101000'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'11100000'
movwf Layer4
call Output
return
;-----------------------------------------------------------------------------------------------;
; LineAround sub routine ;
;-----------------------------------------------------------------------------------------------;
LineAround:
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'11111011'
movwf Layer4
call Output
movlw b'00000100'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011011'
movwf Layer4
call Output
movlw b'00100000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011011'
movwf Layer4
call Output
movlw b'01000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011011'
movwf Layer4
call Output
movlw b'10000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011011'
movwf Layer4
call Output
movlw b'00010000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011011'
movwf Layer4
call Output
movlw b'00000010'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011011'
movwf Layer4
call Output
movlw b'00000001'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011011'
movwf Layer4
call Output
return
;-----------------------------------------------------------------------------------------------;
; LayerDrop sub routine ;
;-----------------------------------------------------------------------------------------------;
LayerDrop:
movlw b'11111111'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'10011011'
movwf Layer4
call Output
movlw b'10110110'
movwf Layer1
movlw b'01001001'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'10011011'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'10110110'
movwf Layer2
movlw b'01001001'
movwf Layer3
movlw b'01011011'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'11111111'
movwf Layer3
movlw b'00111011'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'01001001'
movwf Layer2
movlw b'10110110'
movwf Layer3
movlw b'00111011'
movwf Layer4
call Output
movlw b'01001001'
movwf Layer1
movlw b'10110110'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'01011011'
movwf Layer4
call Output
return
;-----------------------------------------------------------------------------------------------;
; LayerDrop2 sub routine ;
;-----------------------------------------------------------------------------------------------;
LayerDrop2:
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'11111111'
movwf Layer3
movlw b'00111011'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'00001000'
movwf Layer2
movlw b'11110111'
movwf Layer3
movlw b'00111011'
movwf Layer4
call Output
movlw b'00001000'
movwf Layer1
movlw b'11110111'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'01011011'
movwf Layer4
call Output
movlw b'11111111'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'10011011'
movwf Layer4
call Output
movlw b'11110111'
movwf Layer1
movlw b'00001000'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'10011011'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'11110111'
movwf Layer2
movlw b'00001000'
movwf Layer3
movlw b'01011011'
movwf Layer4
call Output
return
;-----------------------------------------------------------------------------------------------;
; Spin sub routine ;
;-----------------------------------------------------------------------------------------------;
Spin:
movlw b'01001001'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'00100100'
movwf Layer1
movlw b'01001001'
movwf Layer2
movlw b'10010010'
movwf Layer3
movlw b'10011001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'11111111'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'01011001'
movwf Layer4
call Output
movlw b'10010010'
movwf Layer1
movlw b'01001001'
movwf Layer2
movlw b'00100100'
movwf Layer3
movlw b'00111001'
movwf Layer4
call Output
return
;-----------------------------------------------------------------------------------------------;
; SnakeLine sub routine ;
;-----------------------------------------------------------------------------------------------;
SnakeLine:
movlw b'10010010'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'11011011'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'01101101'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'10011001'
movwf Layer4
call Output
movlw b'00100100'
movwf Layer1
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'11011001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'01101101'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'01011001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'11011011'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'10010010'
movwf Layer2
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'11011011'
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'01101101'
movwf Layer3
movlw b'00111001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'00100100'
movwf Layer2
movwf Layer3
movlw b'01111001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'01101101'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'01011001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'11011011'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'10010010'
movwf Layer1
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
return
;-----------------------------------------------------------------------------------------------;
; SpiralDown sub routine ;
;-----------------------------------------------------------------------------------------------;
SpiralDown:
movlw b'00000010'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'00000001'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'10011001'
movwf Layer4
call Output
movlw b'00000100'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'00100000'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'01000000'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'10000000'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'00010000'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'00001000'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'00001000'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'00000100'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'00100000'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'01000000'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'10000000'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'00010000'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'00000010'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'00000001'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'01011001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movwf Layer3
movlw b'00111001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'00000100'
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'00100000'
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'01000000'
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'10000000'
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'00010000'
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'00000010'
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'00000001'
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'00001000'
movwf Layer3
movlw b'00011001'
movwf Layer4
call Output
return
;-----------------------------------------------------------------------------------------------;
; UpAndOut sub routine ;
;-----------------------------------------------------------------------------------------------;
UpAndOut:
movlw b'00000000'
movwf Layer1
movlw b'00001000'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'00011011'
movwf Layer4
call Output
movlw b'00001000'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'00011011'
movwf Layer4
call Output
movlw b'01011101'
movwf Layer1
movlw b'00000000'
movwf Layer2
movwf Layer3
movlw b'00011011'
movwf Layer4
call Output
movlw b'10100010'
movwf Layer1
movlw b'01010101'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'10011011'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'10100010'
movwf Layer2
movlw b'01010101'
movwf Layer3
movlw b'01011011'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'11110111'
movwf Layer3
movlw b'00111011'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'11111111'
movwf Layer3
movlw b'00111011'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movwf Layer2
movlw b'00001000'
movwf Layer3
movlw b'00011011'
movwf Layer4
call Output
movlw b'00000000'
movwf Layer1
movlw b'00001000'
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'00011011'
movwf Layer4
call Output
movlw b'00001000'
movwf Layer1
movwf Layer2
movlw b'00000000'
movwf Layer3
movlw b'00011011'
movwf Layer4
call Output
return
;-----------------------------------------------------------------------------------------------;
; Output outputs the data to the LEDs. PORTB will be used to turn on transistors to ground the ;
; cathodes of the LEDs ;
;-----------------------------------------------------------------------------------------------;
Output:
; set the brightness
movfw Layer4 ; put layer 4 into W
andlw b'00011000' ; get just bits 3 and 5
movwf Brightness ; put W into Brightness
bcf STATUS,C ; clear the carry flag
rrf Brightness,1 ; rotate Brightness
bcf STATUS,C ; clear the carry flag
rrf Brightness,1 ; and again
bcf STATUS,C ; clear the carry flag
rrf Brightness,1 ; and again
incf Brightness,1 ; add 1 to Brightess
movfw Layer4 ; move layer 4 into W
andlw b'00000111' ; get just bits 0,1 and 2
movwf Time ; put W into Time
incf Time,1 ; add 1 to Time
bcf STATUS,C ; clear the carry flag
rlf Time,1
bcf STATUS,C ; clear the carry flag
rlf Time,1
bcf STATUS,C ; clear the carry flag
rlf Time,1
bcf STATUS,C ; clear the carry flag
rlf Time,1
bcf STATUS,C ; clear the carry flag
rlf Time,1
Output2:
; --- Top Layer ---
clrf PORTB ; clear port B
movfw Layer1 ; move layer1 to W
movwf PORTC ; put W onto PortC
btfsc Layer4,7 ; see if LED 9 should be on
bsf PORTB,4 ; turn on LED 9
bsf PORTB,5 ; turn on layer 1 buy outputing bit 5 of PortB
movfw Brightness ; put brightness into W
call Delay ; call the delay
; brightness can be 1,2,3 or 4, so now we have to call the delay again
; 4 - brightness with the LEDs off
bcf PORTB,5 ; turn off layer 1
movfw Brightness ; put Brightness into W
sublw 4 ; sub W from 4
btfss STATUS,Z ; skip if the zero flag is set
call Delay ; call the delay
; --- Middle Layer ---
clrf PORTB ; clear port B
movfw Layer2 ; move layer2 to W
movwf PORTC ; put W onto PortC
btfsc Layer4,6 ; see if LED 9 should be on
bsf PORTB,4 ; turn on LED 9
bsf PORTB,6 ; turn on layer 2 buy outputing bit 6 of PortB
movfw Brightness ; put brightness into W
call Delay ; call the delay
; brightness can be 1,2,3 or 4, so now we have to call the delay again
; 4 - brightness with the LEDs off
bcf PORTB,6 ; turn off layer 2
movfw Brightness ; put Brightness into W
sublw 4 ; sub W from 4
btfss STATUS,Z ; skip if the zero flag is set
call Delay ; call the delay
; --- Bottom Layer ---
clrf PORTB ; clear port B
movfw Layer3 ; move layer3 to W
movwf PORTC ; put W onto PortC
btfsc Layer4,5 ; see if LED 9 should be on
bsf PORTB,4 ; turn on LED 9
bsf PORTB,7 ; turn on layer 2 buy outputing bit 6 of PortB
movfw Brightness ; put brightness into W
call Delay ; call the delay
; brightness can be 1,2,3 or 4, so now we have to call the delay again
; 4 - brightness with the LEDs off
bcf PORTB,7 ; turn off layer 3
movfw Brightness ; put Brightness into W
sublw 4 ; sub W from 4
btfss STATUS,Z ; skip if the zero flag is set
call Delay ; call the delay
decfsz Time ; decrement the Time regiester
goto Output2 ; repeat
return
;-----------------------------------------------------------------------------------------------;
; The Delay routine is called with a number put into the W register. This is in multiples of ;
; 100u seconds, (0.1m seconds) ;
;-----------------------------------------------------------------------------------------------;
Delay:
movwf Delay3 ; put W into Delay 3
Loop1:
; After Delay2 decreses to 0, it is reset to..
movlw 0x1 ; put 1 into W
movwf Delay2 ; put W into Delay2
Loop2:
; After Delay1 decreses to 0, it is reset to E9h
movlw 0x1D ; put 80 into W
movwf Delay1 ; put W into Delay1
Loop3:
decfsz Delay1 ; decrement Delay1
goto Loop3 ; jump back to Loop3
decfsz Delay2 ; decrement Delay2
goto Loop2 ; jump back to Loop2
decfsz Delay3 ; decrement Delay3
goto Loop1 ; jump back to Loop1
return
;-----------------------------------------------------------------------------------------------;
; Main program starts here ;
;-----------------------------------------------------------------------------------------------;
Start:
bsf STATUS,RP0 ; select register page 1
movlw 0 ; put 0 into W
movwf TRISC ; set portC all output
movwf TRISB ; set portB all outputs
bsf STATUS,RP1 ; select Page 2,
bcf STATUS,RP0 ; by setting RP1 in Status register and clearing RP0
clrf ANSEL ; select Digital I/O on port C
clrf ANSELH ; " "
bcf STATUS,RP1 ; back to Register Page 0
bcf EndCount,0 ; reset the EndCount bit
clrf Counter ; clear the Counter register
Loop:
call CubeLight
call CubeLight
call CubeLight
call CubeLight
call CubeLight
call LayerDrop
call LayerDrop
call LayerDrop
call LayerDrop
call LayerDrop
call Spin
call Spin
call Spin
call Spin
call Spin
call SnakeLine
call SnakeLine
call SnakeLine
call SnakeLine
call SnakeLine
call LayerBrightness
call LayerBrightness
call LayerBrightness
call LayerBrightness
call LayerBrightness
call SpiralDown
call UpAndOut
call SpiralDown
call UpAndOut
call SpiralDown
call UpAndOut
call BigSmall
call BigSmall
call BigSmall
call BigSmall
call BigSmall
call BigSmall
call BigSmall
call BigSmall
call BigSmall
call BigSmall
call BigSmall
call LineAround
call LineAround
call LineAround
call LineAround
call LineAround
call SideToSide
call SideToSide
call SideToSide
call SideToSide
call SideToSide
call FlashingLines
call FlashingLines
call FlashingLines
call FlashingLines
call FlashingLines
call Firework
call Firework
call Firework
call Firework
call Firework
call DiagAroundSides
call DiagAroundSides
call DiagAroundSides
call DiagAroundSides
call DiagAroundSides
call LayerDrop2
call LayerDrop2
call LayerDrop2
call LayerDrop2
call LayerDrop2
call CubeFill
call CubeFill
call CubeFill
call CubeFill
call CubeFill
call CubeFill
goto Loop
end
- HUGGBÄVERN
- Tidigare soundbrigade
- Inlägg: 34840
- Blev medlem: 23 augusti 2006, 22:44:11
- Ort: Lilla Paris
- Kontakt:
Varför länkar du inte bara till dom som gjort projektet?
http://www.das-labor.org/index.en.php
Make magazine har gjort en jätte fin guide för detta projekt.
Synd att inte ge creds till som gjort allt jobb.
http://www.das-labor.org/index.en.php
Make magazine har gjort en jätte fin guide för detta projekt.
Synd att inte ge creds till som gjort allt jobb.
Tror knappast citizendildo behövde följa en guide för att göra denna
Sen finns det hur många som helst som gjort sånna här kuber tex:
http://www.instructables.com/id/LED-Cube-4x4x4/

Sen finns det hur många som helst som gjort sånna här kuber tex:
http://www.instructables.com/id/LED-Cube-4x4x4/