lanternfish
Senior Member
The idea for this came from various questions regarding HDD indicators. Many of the projects I have seen use bar-type LED's; the more activity the more LED's lit. I though this was a bit boring. I then considered the Rubik Cube.
Now rather than solve a scrambled cube the CubiX HDD activity indicator (initially) starts with a solved cube and 'rotate' faces, rows or columns each time the HDD LED is active.
When the PC is powered down the current face data is stored and reloaded next time the PC is restarted.
HARDWARE
The six (6) cube faces are controlled by a 20X2 main board which is triggered by HDD activity (refer attached cct diagram). The 20X2 main board uses SPI to communicate with the face boards.
The cube faces are top, front, right, rear, left and bottom (refer attached diagram).
The cube faces, rows and columns don't physically rotate, instead each face consists of 9 RGB LEDs. These are controlled by five (5) 74xx595's (refer attched cct diagram).
As each 74xx595 outputs 8 bits and each RGB LED requires 3 bits, we can use one 74xx595's per two LED's. A total of five 74xx595's. This leaves 1/2 of one 74xx595 unused.
Each RGB LED is numbered 1-9,11-19,21-29,31-39,41-49,51-59 (refer attached diagram). These numbers refer to a memory location in the scratch pad. Locations 0,10,20,30,40,50 are always 0x00.
The original Rubik Cube had six colours: red, green, blue, yellow, amber (orange) and white. Using 3 bits and RGB will give the following six colours: red, green, blue, yellow (amber), magenta and white.
SOFTWARE
Currently I am rewriting the software to make it a little more intelligible and to correct a few changes to the hardware layout. I will post it when I have completed the corrections.
The general flow is:
1. Load stored face data from EEPROM to scratchpad.
2. Initialise interrupts
3. On interrupt choose a random rotation from:
Column (C1, C1 & C2, C2, C2 & C3, C3)
Row (R1, R1 & R2, R2, R2 & R3, R3)
Face (Top, Front, Right, Rear, Left, Bottom)
Some column and row rotations have to include a face rotation as well.
4. 'Rotate' LED data in scratchpad. This is hard coded
4. Compress 8 bit per LED scratchpad data to two LED's per byte
5. Use SPI to output LED data
6. Re-enable interrupt
The rotations can be instant or animated. Animation is a ripple of changing colour.
POWER SUPPLY CONSIDERATIONS
To keep the 74xx595's within their power dissipation limits the LED's are limited to 30mA each (10mA per colour) This requires 1.62A @ 5V. So a 2A supply should be sufficient to supply LED's and mainboard.
MECHANICAL/CONSTRUCTION
The cube consists of six face PCB's and a mainboard PCB. The mainboard could be placed in the cube supporting base.
The cube will need to be supported above the base. The support will also have to provide a means of routing power and SPI cabling.
NEEDED
A circuit is needed to keep power on the 20X2 (while disabling LED supply) when power from the PC is removed. This is to allow the program to the current state of the face data from scratch pad to EEPROM. The 20X2 would then power down.
If this is a backup battery then a suitable charging circuit would be needed.
Or the mainboard could be supplied from the PC 5V Standby supply.
OTHER USES
A single face board could be used as a dice. Maybe someone can write the program for a 3D dice?
Now rather than solve a scrambled cube the CubiX HDD activity indicator (initially) starts with a solved cube and 'rotate' faces, rows or columns each time the HDD LED is active.
When the PC is powered down the current face data is stored and reloaded next time the PC is restarted.
HARDWARE
The six (6) cube faces are controlled by a 20X2 main board which is triggered by HDD activity (refer attached cct diagram). The 20X2 main board uses SPI to communicate with the face boards.
The cube faces are top, front, right, rear, left and bottom (refer attached diagram).
The cube faces, rows and columns don't physically rotate, instead each face consists of 9 RGB LEDs. These are controlled by five (5) 74xx595's (refer attched cct diagram).
As each 74xx595 outputs 8 bits and each RGB LED requires 3 bits, we can use one 74xx595's per two LED's. A total of five 74xx595's. This leaves 1/2 of one 74xx595 unused.
Each RGB LED is numbered 1-9,11-19,21-29,31-39,41-49,51-59 (refer attached diagram). These numbers refer to a memory location in the scratch pad. Locations 0,10,20,30,40,50 are always 0x00.
The original Rubik Cube had six colours: red, green, blue, yellow, amber (orange) and white. Using 3 bits and RGB will give the following six colours: red, green, blue, yellow (amber), magenta and white.
SOFTWARE
Currently I am rewriting the software to make it a little more intelligible and to correct a few changes to the hardware layout. I will post it when I have completed the corrections.
The general flow is:
1. Load stored face data from EEPROM to scratchpad.
2. Initialise interrupts
3. On interrupt choose a random rotation from:
Column (C1, C1 & C2, C2, C2 & C3, C3)
Row (R1, R1 & R2, R2, R2 & R3, R3)
Face (Top, Front, Right, Rear, Left, Bottom)
Some column and row rotations have to include a face rotation as well.
4. 'Rotate' LED data in scratchpad. This is hard coded
4. Compress 8 bit per LED scratchpad data to two LED's per byte
5. Use SPI to output LED data
6. Re-enable interrupt
The rotations can be instant or animated. Animation is a ripple of changing colour.
POWER SUPPLY CONSIDERATIONS
To keep the 74xx595's within their power dissipation limits the LED's are limited to 30mA each (10mA per colour) This requires 1.62A @ 5V. So a 2A supply should be sufficient to supply LED's and mainboard.
MECHANICAL/CONSTRUCTION
The cube consists of six face PCB's and a mainboard PCB. The mainboard could be placed in the cube supporting base.
The cube will need to be supported above the base. The support will also have to provide a means of routing power and SPI cabling.
NEEDED
A circuit is needed to keep power on the 20X2 (while disabling LED supply) when power from the PC is removed. This is to allow the program to the current state of the face data from scratch pad to EEPROM. The 20X2 would then power down.
If this is a backup battery then a suitable charging circuit would be needed.
Or the mainboard could be supplied from the PC 5V Standby supply.
OTHER USES
A single face board could be used as a dice. Maybe someone can write the program for a 3D dice?
Attachments
-
790.5 KB Views: 10
-
790.5 KB Views: 3
Last edited: