Lampduino - an 8x8 RGB Floor Lamp
5mm of the co-anode rgb led.
I bought mine on eBay. 1)
Arduino with ITead Studio Color Shield (1)
A large foamcore board.
This board is available in most office or artist supplies stores.
It is a foam core sandwiched between two thick sheets of paper.
I recycled a 45x30 \"work that was previously used as an advertising poster. (2)
18x18 \"matte draft film pieces.
I cut them off from a 24x36 sheet.
003 \"thick Grafix 2-
Two-sided matte drafting film.
Kynar-plenty of 30
Insulated winding wires.
I bought 3 50 feet rolls at Radio Shack, one each in red/white/blue.
150 feet is excessive, but it is much easier to use wires of different colors. (2)16-
Pin head (1)
5 V 1A power supply.
I redesigned a wall skin from a broken gadget.
Some extra parts are needed for music syncing.
See music sync steps. Tools x-
Each of the 64 LEDs in the Acto knife hot glue gun line stripping/winding tool straight edge rule matrix is encapsulated in a 2x2x2 \"unit.
First, draw your cutting line on the foam board with a pencil.
You need 14 grid blocks to form the core of the matrix.
I found it convenient to arrange the cutting in pairs.
This way, you can cut two slots at the same time.
A very sharp knife is needed to cut the foam board. I used a #11 X-acto blade.
If your knife is blunt, it will not pass through the foam cleanly, but will grab the foam and tear off the small pieces of foam.
Not very beautiful.
I went through 3 blades when making the matrix.
When the cut begins to degrade, replace the blade.
I find it difficult to make a clean cut through the 3 layers of the foam board;
This method often leaves me a small piece of torn foam.
If you score against the straight side with a knife for the first time, it\'s easy to do a clean cut.
Make sure the score goes through the entire top layer of the paper and into the foam.
You can then remove the straight edges and put the knife in the score repeatedly until you go through the layer.
First, cut the groove.
You can pop them up at this stage or wait until the next step.
Next, use your x-
Knife and ruler.
Cut the horizontal slit into a grid block with one in the center of each unit.
Make sure the slit passes through all the layers.
You don\'t need to be very precise, but they should be 1/2 long.
The LED will remain in place in a later step by pushing the wire into the slit.
Assemble 14 grid blocks to form the core of the matrix.
Don\'t glue yet.
You may need to take apart several times when wiring.
Before proceeding, I covered the printed part with white paint.
You will have 8 strings of 8 LEDs when you finish this stage.
Screw the LED line into the gap between the mesh pieces.
Next, flip the matrix so that the slot running perpendicular to the stock is at the top.
Since we\'re working at close range, it\'s a bit tricky to connect rows.
However, unlike columns, only 1 wire is required for each LED in the row, with a total of 49 wires required.
Here is where the slack we created using 4 \"long wires comes in handy.
It makes it easier for us to operate the LED.
Connect the anode with a 6 \"length wire.
The yellow wire in my photo is an anode connection.
I have an old wire shaft for a yellow wire, but it runs before I handle these lines.
As shown in the figure, it is easier to connect all the anode before inserting the LED into the slit.
I took all my column lines through a slot in The Matrix and extended them all the way to the bottom.
I cut the slot at the bottom for running the line.
This is an error because now my column is horizontal and the row is vertical.
The correct direction is the opposite: the column line should come out from the bottom and the line should come down from the side.
Wrap the 32 wires coming out of the matrix to two 18-
Please note that you must package on the short end of each pin as we need the long end to be inserted into the colorrunner.
The title on colorsheet is clearly marked.
The red and blue pins are on one header, while the anode and green pins are on the other.
Note that the anode is marked as VCC on the colorsheet, with 4 anode pins on each side of the 8 green pins.
The origin of our matrix ,(0,0)
In the lower left corner.
Therefore, pin 1 in red/green/blue should be connected to the leftmost column.
Again, pin 1 for VCC (anode)
The pin should be connected to the next line.
Before inserting the matrix into colorfields, it is better to test it first and check the correctness of the shorts and the title wiring.
I use a 5 v power supply connected to the 100 Ω resistor to test each individual LED.
I was pleasantly surprised to find that there was no short circuit in my matrix.
After the wiring and testing is complete, you can connect the top, bottom and side.
Note that the side block at the bottom has a 3 \"long extension.
This is to adapt to the colortips.
My intention is to wrap the matrix in wood and attach it to the wooden rack.
However, due to time constraints, I decided to prototype it using a foam board first.
I cut two pieces of 45x2 to form the leg.
For greater stability, the lower part is two layers thick.
The base is 22x6 \".
The box under the matrix holds colorino, which uses two sheets of 18x3 sheets on the side.
Cut out two 18x18-inch draft film squares.
Attach one to each side of the matrix.
I made a mistake and used hot glue.
Hot glue is difficult to handle when gluing large objects because it cools too fast.
I forgot that I used Elmer\'s glue when I built my 5x5 matrix.
Elmer\'s work is much better because it gives you time to tighten the film and eliminate all the wrinkles.
Also, unlike the hot glue, it doesn\'t have a small shadow of glue spots like it did in March.
The Arduino does not have enough I/O pins and does not have enough current output to drive the 8x8 RGB LED matrix.
Therefore, it needs to be interface with the external LED driver circuit.
Colortracker is a variant of Arduino specifically used to drive up to 192 LEDs (64 RGB LED\'s).
Read my article, Itead studio colortips-A Preview.
Note that my colortracker is a test.
Production version v1.
3, has been released to the manufacturing industry.
It contains small tweaks like retargeting the ICSP header to a location that actually has enough space for you to plug into the programmer!
Colordu can be powered by 8-5 V
Pin head, or use 6. 2-7. 5V via the 4-
Pin Green screw terminals.
When switching between two power supplies, it is important to put the slider switch in the correct position.
Header position for power supply via VDD pin on 8-
Pin head, terminal position powered by VCC pin on 4-
Pin Green screw terminals.
The current of the LED is very large.
When I power colorino with my Arduino or USBtinyISP, I can\'t program because the current of the LED is too large.
Switching to a separate 5 v 1A power supply solves the problem.
The disadvantage of using a dedicated board like colordu is that it does not expose any I/O pins for external inputs.
So many users connect them to another Arduino via I2C.
Since I use it independently, I connect my input to an I2C pin.
There are actually several other free I/O pins like INT0 and INT1, but they are not connected to any of the accessible headers, so you have to weld the wires directly to the ATmega MCU to use them.
The colortracker comes with the Arduino boot program pre-
Load, so can be programmed through Arduino IDE.
It does not have a built-in
However, in a USB-to-serial converter, you must use an external USB-to-serial cable or ICSP-
If you have an FTDI cable or something like that, you can use it.
To use the FTDI cable, connect as follows: ftdi rx-
> Ftdi tx-Colorado wild TX-
> Colordragon rx ftdi rts-
> Colorymdtr ftdi gnd-
Another way is to use the embedded FTDI Chip in Arduino Duemilanove.
Just pop up the ATmega MCU from the Duemilanove board and make the following connection between the two boards: Arduino RX-
> Receive colordragon TX for Arduino-
> Colorutx Arduino reset-
> DTR colortracker Arduino month V-
> Vdd gnd for colortracker Arduino-
> Then you can connect the Arduino to the PC via USB and select Arduino Duemilanove or Nano with ATmega328 from the tool-
> Board menu for Arduino IDE.
Since I am developing a PC host application to communicate with colordu, I find it more convenient to use my USBtinyISP.
When using USBtinyISP, there is no need to share the serial port between the Arduino IDE and the host app, so every time you need to re-program the colortracker, you don\'t have to continue to start/stop your host app.
For more information on how to use hardware programmers in Arduino IDE, see my article: how to use Arduino IDE in external programmers.
Another benefit of using an ICSP programmer is that we can save program memory as we no longer need the Arduino boot loader.
In addition, colortracker will start immediately once it is powered on (
Boot loader installed, it takes a few seconds).
The above picture shows my development settings.
I used a 60x60mm RGB matrix directly inserted into colorfields.
On the right is the USBtinyISP I downloaded the sketch, and on the left is my Arduino Duemilanove, which provides a serial connection to my host application, a processing sketch.
In my design, colorino acts as a slave to the PC host application. Since a 24-
The bits of each pixel RGB frame take up 192 bytes, and even with program memory, colorframes cannot store many frames on board.
So the host program sends the frame data via USB-to colorino
> Serial connection.
I have already written the sketch so that when it is not connected to the PC host, colortracker will start a Plasma demo.
Arduino sketch for this project, ColorduinoSlave.
Partial differential equations, using the colorinterface interface library I also developed.
I have included the current version in colorduinoslavev1.
Zip, but if there is an update in the future, you can download the latest version from Arduino\'s colortracker Library.
The library is responsible for all the dirty work of dialogue with the LED control hardware on colortracker, such as basic initialization of the hardware, refresh the screen and double-
Buffer update of the screen.
In this way, you don\'t have to mess up your sketches with all this extra code.
To install the colordu Library, just download the zip file and copy the colordu. cpp/Colorduino.
H to your /Library/color.
If you are already running the Arduino IDE, you will need to restart it so that it can find the newly installed library.
Upload the partial differential equation to the Arduino IDE and upload it to the colorode.
It just waits for packets from the host.
The receive buffer size of the receive buffer in the serial library of Arduino is 128 bytes.
Because a function of this project is real.
Time Music syncs, it is important to reduce the delay in sending frames from the host to colordu.
So I took the liberty of turning the amount of data into 12-bits per pixel.
In this way, only 96 bytes of data are used on the screen (
Package protocol overhead, 100 bytes)
, The entire packet into the receiving buffer.
Colorduinoslave package agreement the English how to translation English mean English?
The basic format is: the host software rgbmp is a processing sketch.
This is a version of mtxControl that has been heavily hacked (thanks, Tobi! )
, As well as excellent RGB matrix visual animation editor.
Processing is a simplified version of Java, just like Arduino is a simplified version of C.
I already included pre-
Compile executable files for Windows, OSX, and Linux and run directly without having to install processing on your computer.
You can find them in rgbmtxymv1. 1. zip.
They still need Java, so if Java is not installed on your computer, download it from java. com.
If you do not want to play the source code in the processing IDE, please skip to the following to use rgbvn.
Warning from someone using ARDUINO 1.
The XThe serial buffer has been reduced to 64 bytes, which is too small for rgbmtr to communicate correctly with my ColorduinoSlave sketch.
Your color will be frozen by rgbmp but not working properly.
To fix it, you must exit Arduino 1.
X ide and edit modify hardware \\ arduino \\ cores \\ arduino \\ wawareserial. cpp.
Look up the line and change it to and restart Arduino 1. x and re-
Colormetric for sketch of partial differential equations.
If there is a problem with the communication between the rgbgp and colortracker, try to disconnect the connection between DTR and Reset.
Using the source code rgbmtxsrcv 1 in the processing idea contains the complete source code of rgbate. 1. zip.
The rgbvn depends on the Java color selector.
The color picker must be copied before running the sketch.
Jar/Library/color picker. jar.
If the Processing IDE is already running, restart it so it can find the newly installed library.
The content is copied with rgbmp clip/rgbmp, loaded with rgbmp.
You should be able to start it by clicking the run button in the processing IDE.
With RGBmtxIf your colorino is connected to your host PC via a serial port, it will be found automatically by rgbmp.
A scan of the device is only done at startup, so make sure to connect it to your computer before starting rgbmtl.
If colorino is not connected, then Device: Slave will change to gray and you can only run it in record mode.
To create an animation for the matrix, simply use the built-in editor in record mode.
When the frame is edited when connected, the matrix is updated in real time.
Click color patch to select the current drawing color.
To select a color that is not in the default palette, hold down the CTRL key when you click the color patch to pull up the RGB color selector (
Note: I don\'t know for some reason, pulling the color selector freezes rgbmtl sometimes.
So make sure you save your work first).
The small buttons on the right, bottom, and bottom right allow you to fill the entire row, column, or entire matrix with the currently selected color.
You can fill the matrix with a color as the mood light.
To save a set of frames to a PC, click save to: file \".
Rgbmtr can be saved in two different formats: mp and mp.
If a file name with no extension is specified, it will be saved in Windows mp format and the file name will be attached automatically. bmp.
If you specify a file name that ends.
The data will be saved in text file format.
You can also create or edit animations with any mp-
Compatible graphics editor (. bmp)
Or, if you like the text editor (. mtx).
To load the previously created frame set, click load from: file \".
If a file name without an extension is specified, it will be attached automatically. bmp.
If you want to load one
The Ukrainian file, you must explicitly type the entire file name.
I have included some sample frameset in the frameset.
Zip, you can download it below.
You can loop through the various modes of rgbvn by repeatedly clicking the mode button.
The mode is: record-
Create or load frame setPlay-
Plays the currently loaded frame.
I have attached some sample frame sets below. Plasma -
Running plasma mode-
Like a meteor.
Similar to snow mode, but with trailsMusic-
Music sync modeOptional.
The music sync circuit described in the next step must be added.
In play, snow, and meteor mode, you can control the playback speed through the up and down arrow keys on your keyboard. framesets.
The Zip contains the following sample frameset: space invaders. bmp -
Space exploration. bmp -
Simulation music of Tetrisbmp -
It is suitable for synchronizing musicmal_animation.
The Zip contains some cool moving paintings created by Mal3DIf, you can make any frames that you think are really cool, please send them to me and I will make it available for everyone to download.
To do this, please send me any good upgrades you have made to the rgbmp or my colortracker Library. UPDATE 2016-10-10:White-
Tea wrote MagicMatrix, an alternative host controller software, in Java.
I haven\'t tested it myself because my Lampduino is not working at the moment.
Github repo for MagicMatrix: announcement comment: it is important to do your best to set the white balance in order for the lights to display the widest range of colors.
Using rgbvn in record mode, send a screen of pure white R = 255, G = 255, B = 255 to The Matrix.
You may see a unique color.
The DM163 LED driver IC in colortracker has an input for adjusting the relative current running through 3 color channels.
These are controlled by resistors.
ITead Studio installed a fixed 10 Ω resistor in all 3 channels instead of using a potentiometer.
This is because DM163 has another set of 3 6-
Bit registers reserved for adjusting the relative brightness of 3 color channels through PWM control. In the setup()
The function of ColorduinoSlave.
If FTDI-is used, there is the following code:
Based on the serial port, including Arduino Duemilanove, the driver introduces a delay of 16 ms.
This short delay usually does not cause problems.
However, if you decide to implement the music sync feature described in the next steps, any additional delay between the host and the colordu communication will result in a delay between the music beat and the response on the display.
If you are running Microsoft Windows, you can adjust the delay through the advanced settings of the FTDI driver.
Start Windows device manager when your ftdi usb-
> Serial cable or Arduino Duemilanove is connected.
Find the port of the corresponding USB serial port (COM and LPT).
Right-click it and select Properties from the pop-up menu \".
Next, click the port settings tab and click advanced \". . . button.
In the pop-up dialog box, change the delay timer (msec)
The value is 1, and then click OK \".
After disconnecting/reconnecting the device, the new delay timer value will take effect.
I\'m not sure if there are similar settings in OSX or Linux.
Hopefully someone can dig out a similar IOCTL to achieve the same effect.
To synchronize our matrix with music, we need to connect it to the audio source.
I hope it syncs with the bass beat.
Based on my music sync function of the 5x5 matrix, we will reuse the circuit we designed before.
The circuit we will use is a simple operation.
An amplifier mixer connected to a first-order low-pass RC filter, tuned to a cut-off frequency of 133Hz. Parts List (1)
10 uF electrolytic capacitors (1)
120 ohm resistance (3)
10 k ohm resistance (1)
Resistance 100 K Ohm (1)
1/8 \"stereo jack (1)
TLC272CP op amp ICCircuit update: Sorry, the schematic above is wrong.
There should be a third 10 k resistor in pin 2 (-input of opamp)and GND.
The gain of the amplifier is R4/r5. The op-
The Amp stage mixes the left and right music channels and enlarges the audio signal with a gain of 10.
This signal is then input into our passive high-pass filter.
Instead of connecting to the filter output of the analog pin 0, connect it to the SDA on the colortracker.
Make sure that the GND in the music circuit is also connected to the GND on coloraudio.
Connect the input to an audio source such as a stereo headphone jack or an MP3 player.
Do not connect the amplifier output to the speaker level output of the amplifier unless you are sure that the amplifier output is threshold to reduce the sensitivity/decrease threshold to increase the sensitivity threshold = 31
When the input read from SDA exceeds the threshold, the next frame will be played.
Note that in this sketch the threshold is set to 31, well above the threshold I used in the 5x5 matrix.
This is because when the colordu drives the LED, the circuit switch causes noise on the SDA pin.
Even if the SDA is grounded, up to 31 random values are read on my beta colortracker board.
I know that noise is related to LED circuit switching, because if I disable the screen brush new feature in the colordu library, then SDA reads a stable zero when grounded.
If you are using colorbands of production quality, or using a real Arduino with ITead Studio Color Shield, you may need to use a different value.
Next, you might want to try minBeatInterval:/deb-
Filter out continuous triggers that are too close/together to cause the animation to slow down.
Reduce this value/make it more sensitive to shorter beat intervals in minBeatInterval = 750;
Note that this variable is in units. less.
It simply defines how many consecutive loops after input exceed our threshold before allowing the sketch to trigger the next frame.
I \'ve found that in many songs the bass beat is actually made up of a few very close-spaced peaks.
If we don\'t filter them out, the display of each beat will go a few frames.
You might like the effect because it makes the display more vivid.
Play with it and see what settings you like.
It takes a total of 8 hours to build the matrix.
It took about 20 hours for the wiring.
A lot of building/assembly work is very tedious.
I thought I was going blind.
My fingers and back are hurting.
I learned a lot about persistence when I built it. (
On the other hand, I have nothing to complain about compared to the builder of this monster: software and firmware development took more time.
I finally got my feet wet during the processing and I wanted to know for a while.
Since processing is essentially Java, I \'ve also gained some experience with Java, a ubiquitous programming language that I \'ve never had time to learn.
All in all, it was an interesting educational experience for me to design and build this lamp.
The first improvement was to replace my rather wobbly foam board frame, legs and stand with Wood (
The matrix itself can hold the bubble).
This is not only beautiful, but also durable.
The next step is wireless control via Bluetooth.
Another idea is to use the SD card to store frame data for independent playback.
Music Sync is currently implemented using a polling loop.
This will be more effective and may reduce latency if hardware interrupts are used through the INT0 pin.
This requires the wire to be welded directly to the ATmega MCU, as well as additional circuits consisting of Schmidt triggers.
I have seen various reviews on the Internet questioning the long-term reliability of wire winding connections.
Wire packaging is at least as reliable as welding (if not more)
And can easily support for many years.
In fact, early computers were usually made with wire winding technology.
Early computers were usually made with wire winding technology.