Hi Guys....
It gives me great pleasure to be the first sharing my creation with B4R!
This is one of those "everyone builds this" kind of thing, and there are literally thousands of examples using Arduino to builds this, as well of other variations...
This is my 4X4X4 LED CUBE
Materials:
64 Leds, I'm using white-bright 5mm ones
20 connection cables
1 Arduino compatible board with at least 20 I/O pins
Patience... lots of it
and of course, B4R IDE
Obs...Most of the designs I found, use Transistors as a switch to enable each layer... But I found one designe that didn't use them, instead, it connected each layer wire to an analogic pin (A0-A5) and set it to 0, witch seems to simply connect it to GND.
The CUBE construction is the thing that will take the longest and that is more prone to mistakes.
Here a base representation of it:
I decided to build mine "freehanded" and thus not use any kind of positioning jig... This resulted in a "FrankenVersion" of this base wiring... Not pretty, but it works!
Here's my CUBE:
An this is the wirings (remember that I do not use those transistors) ....
So, each layer consists of 16 Leds, common ground.
Each Ground (there are 4 of them) is connected to an Analogic pin (A0-A3) and the remaining 16 pins each go to a LED column.
Here is my CUBE at work!
Now, The B4R part....
First I declared 2 global Arrays, One 4 in size, and the other 16 in size, These refer to each led in each layer...
Then comes the dimming... Yes, 20 of them.
Then its all a matter of turning on the leds in sequence... just for testing...
One note, since the TX/RX pins are also used to control leds, and I didn't eliminate the "serial.initialize(..." part, those leds are always in a variable ON state, reflecting the flow in TX/RX...
This is still very far from being a finished "art piece", and its only purpose was to be the first in the share your creations forum!
Maybe I will build a better and proper 8X8X8 RGB B4R controlled Cube in a near future...
It gives me great pleasure to be the first sharing my creation with B4R!
This is one of those "everyone builds this" kind of thing, and there are literally thousands of examples using Arduino to builds this, as well of other variations...
This is my 4X4X4 LED CUBE
Materials:
64 Leds, I'm using white-bright 5mm ones
20 connection cables
1 Arduino compatible board with at least 20 I/O pins
Patience... lots of it
and of course, B4R IDE
Obs...Most of the designs I found, use Transistors as a switch to enable each layer... But I found one designe that didn't use them, instead, it connected each layer wire to an analogic pin (A0-A5) and set it to 0, witch seems to simply connect it to GND.
The CUBE construction is the thing that will take the longest and that is more prone to mistakes.
Here a base representation of it:
I decided to build mine "freehanded" and thus not use any kind of positioning jig... This resulted in a "FrankenVersion" of this base wiring... Not pretty, but it works!
Here's my CUBE:
An this is the wirings (remember that I do not use those transistors) ....
So, each layer consists of 16 Leds, common ground.
Each Ground (there are 4 of them) is connected to an Analogic pin (A0-A3) and the remaining 16 pins each go to a LED column.
Here is my CUBE at work!
Now, The B4R part....
First I declared 2 global Arrays, One 4 in size, and the other 16 in size, These refer to each led in each layer...
Then comes the dimming... Yes, 20 of them.
Then its all a matter of turning on the leds in sequence... just for testing...
B4X:
Sub Process_Globals
'These global variables will be declared once when the application starts.
'Public variables can be accessed from all modules.
Private PinVcc(16) As Pin 'Rows
Private PinGnd(4) As Pin 'Colloms
End Sub
Public Sub Initialize
PinGnd(0).Initialize(PinGnd(0).A0, PinGnd(0).MODE_OUTPUT)
PinGnd(1).Initialize(PinGnd(1).A1, PinGnd(1).MODE_outPUT)
PinGnd(2).Initialize(PinGnd(2).A2, PinGnd(2).MODE_outPUT)
PinGnd(3).Initialize(PinGnd(3).A3, PinGnd(3).MODE_outPUT)
PinVcc(0).Initialize(PinVcc(0).A4, PinVcc(0).MODE_OUTPUT)
PinVcc(1).Initialize(PinVcc(1).A5, PinVcc(1).MODE_OUTPUT)
PinVcc(2).Initialize(0, PinVcc(2).MODE_OUTPUT)
PinVcc(3).Initialize(1, PinVcc(3).MODE_OUTPUT)
PinVcc(4).Initialize(2, PinVcc(4).MODE_OUTPUT)
PinVcc(5).Initialize(3, PinVcc(5).MODE_OUTPUT)
PinVcc(6).Initialize(4, PinVcc(6).MODE_OUTPUT)
PinVcc(7).Initialize(5, PinVcc(7).MODE_OUTPUT)
PinVcc(8).Initialize(6, PinVcc(8).MODE_OUTPUT)
PinVcc(9).Initialize(7, PinVcc(9).MODE_OUTPUT)
PinVcc(10).Initialize(8, PinVcc(10).MODE_OUTPUT)
PinVcc(11).Initialize(9, PinVcc(11).MODE_OUTPUT)
PinVcc(12).Initialize(10, PinVcc(12).MODE_OUTPUT)
PinVcc(13).Initialize(11, PinVcc(13).MODE_OUTPUT)
PinVcc(14).Initialize(12, PinVcc(14).MODE_OUTPUT)
PinVcc(15).Initialize(13, PinVcc(15).MODE_OUTPUT)
Reset
End Sub
Public Sub Reset
For n = 0 To 3
PinGnd(n).DigitalWrite(True)
Next
For n = 0 To 15
PinVcc(0).DigitalWrite(False)
Next
End Sub
Public Sub TestLeds
SequenceLeds
Reset
SequenceLayers
Reset
End Sub
Private Sub SequenceLeds As Boolean
For x = 0 To 3
PinGnd(x).DigitalWrite(False)
For n = 0 To 15
PinVcc(n).DigitalWrite(True)
Delay(100)
PinVcc(n).DigitalWrite(False)
Next
PinGnd(x).DigitalWrite(True)
Next
Return True
End Sub
private Sub SequenceLayers As Boolean
For x = 0 To 3
PinGnd(x).DigitalWrite(False)
For n = 0 To 15
PinVcc(n).DigitalWrite(True)
Next
Delay(200)
PinGnd(x).DigitalWrite(True)
Next
Return True
End Sub
Public Sub LED(n As Int, ON As Boolean)
Dim row As Int = n/16
Dim collomn As Int = ( n -( 16 * row ))
If ON = True Then
PinGnd(row).DigitalWrite(False)
PinVcc(collomn).DigitalWrite(True)
Else
PinGnd(row).DigitalWrite(True)
PinVcc(collomn).DigitalWrite(False)
End If
End Sub
One note, since the TX/RX pins are also used to control leds, and I didn't eliminate the "serial.initialize(..." part, those leds are always in a variable ON state, reflecting the flow in TX/RX...
This is still very far from being a finished "art piece", and its only purpose was to be the first in the share your creations forum!
Maybe I will build a better and proper 8X8X8 RGB B4R controlled Cube in a near future...
Last edited: