How are you going to handle Power?
Most households don't have a in-floor a/c outlet in their living room.
If there is access to the floor from the celling below it, you could install a outlet.
Myself with a single story house with concrete floor,I guess I would put a large battery that would have to be charged overnight ~twice a month.
As I can live with a power cord across the floor once in a while but not all the time.
If there is a rug under the table that goes all the way to or past the couch and the couch is a against a wall,
I would then put the DC adapter under the couch and run some flat speaker wire for DC-power under the rug.
Variable intensity RGB LEDs through touch sensitive diffusion panels
sound output
sound input
WiFi enabled
"mood" lighting (you could actually do LED strips underneath the table edge to provide some mood counter lighting)
Can you imagine the game of Simon you could play on a 16x24 grid (or whatever the final size is)
Make it a little bigger and a much sturdier base and you can play Twister
As it is, you can play Tetris and many other table games.
Good thing you hav Carte Blanche.....we're going to spend a LOT for you!!!
Well, I didn't want to spell it out. But you get the idea:)
I was wondering about that resolution. 19 and 12 are such awkward numbers in our binary computer world. 16 by 24 would be much nicer to program.
But maybe aesthetics is at work here, 19 by 12 gives an aspect ratio of 1.58 which is quite close to the magical golden ratio of about 1.62.
Where as 24 * 16 is an aspect ratio of 1.5. Perhaps that is close enough.
Do keep those "pixels" square though.
Speaking of pixels, given that we have three colour LEDs offering a huge rainbow of colours this thing should be able to play videos as well.
Make sure and make a couple of test pixels to get an idea of how bright the LEDs will be, how hot they'll get and how much current they will draw.
Since apparently everybody doesn't closely follow all of my projects, I'll point out I have a variety of WS2812B PCB designs in this thread. I think they might be a good match for this project. (No, I don't think they would.) They would sure make the wiring easier.
The downside to using WS2812 LEDs instead of using shift registers is you'll lose color depth at low brightness settings. IMO, this is a big problem. You don't want to have to have the table at it's full brightness in order to get the cool colors you wanted.
If you don't know what I mean about color depth, find out. It's important to this project. I can provide video examples if you like of LED displays losing the number of colors they can display as the brightness level is decreased. This could be a big problem with WS2812 LEDs.
I was wondering, what does everyone think of using WS2812 LEDs?
That would certainly simplify wiring the LEDs; the trick then is converting a linear string to a matrix. I wrote about the WS2812 for Nuts & Volts and even created a little module for it in DipTrace. Those files are attached in case they're helpful. FWIW, you can order right inside DipTrace but I noticed the limit is 199 boards (comes out to about $60 for the PCBs).
The downside to using WS2812 LEDs instead of using shift registers is you'll lose color depth at low brightness settings. IMO, this is a big problem. You don't want to have to have the table at it's full brightness in order to get the cool colors you wanted.
If you don't know what I mean about color depth, find out. It's important to this project. I can provide video examples if you like of LED displays losing the number of colors they can display as the brightness level is decreased. This could be a big problem with WS2812 LEDs.
I was worrying about the color depth. I don't want to buy 512 LEDs just to find out I cant turn down the brightness.
If you all ready have video, that would be great. But don't make a video just for this.
That would certainly simplify wiring the LEDs; the trick then is converting a linear string to a matrix. I wrote about the WS2812 for Nuts & Volts and even created a little module for it in DipTrace. Those files are attached in case they're helpful. FWIW, you can order right inside DipTrace but I noticed the limit is 199 boards (comes out to about $60 for the PCBs).
How hard would it be to convert from a linear string to a matrix?
How hard would it be to convert from a linear string to a matrix?
If you create rows that don't zig-zag back and forth, it should be easy. Duane used strip LEDs (hacked Christmas bulb string) to create a sign matrix that was really cool.
I am use to Eagle, never used DipTrace
I've attached PDF of the schematic and the Gerber files for the board (WS2812)
Here is what we have so far:
~16 x 32
~1-1/2" square pixels
~full color per pixel
~glass (not plastic) top
~spectrum analyzer
~real time visualizations
~some form of human input (capacitive, button, light, etc...)
~Games (Tetris, pong, etc...)
~under table mood lighting
~Bluetooth control from phone (serial link) to change modes
~and a budget for the electronics of $300 (I could con a little more if needed)
Let me know what would you do. If you would do something different.
I am going to be WAY out of my comfort zone, I have never did anything on that list. That is why I would like to know how would you guys do it. So it would give me an idea of what I need to do.
How hard would it be to convert from a linear string to a matrix?
I think JonnyMac is referring to the difficulty of having an array where the pixel numbers aren't arranged in memory the same way they are physically.
I think this issue gave him trouble with one of his cool LED costumes.
I had a similar problem when using GE-35 Christmas lights. In order to get the lights to fit in my display, I had to zigzag the strand back and forth. This is not how memory is laid out. I ended up creating a lookup table to match the physical location with the RAM location.
He has some great stuff. The only thing is, I don't like the LED spacing. I would need 1-12"(38.1mm), the 16x16 has 12.5mm.
But it also made me realize I am going to have to use one heck of a power supply. for that same 16x16, he is saying it can consume 15.36A. I might have to use a computer power supply.
I think some LEDs like Microcontrolled linked to and some high power shift registers would give you the best color control of the options discussed.
The high power shift registers are sink only so make sure and get common anode LEDs.
Edit: I linked to the "A" version of the high power shift registers. The "B" versions cost less (they're what I'm using).
I know I keep harping about the color density but I think this will a big issue. I'm constantly turning my LED displays to their lowest brightness settings to keep them from being too annoying to my wife. But I also want the display to have the capacity to be really bright in case I want to use it outside or just because.
I know I keep harping about the color density but I think this will a big issue. I'm constantly turning my LED displays to their lowest brightness settings to keep them from being too annoying to my wife. But I also want the display to have the capacity to be really bright in case I want to use it outside or just because.
Please, you are not harping. I have no experience with this many LED's, or RGB LED's
Holy cow!! 350mA per output!?!? Am I really going to need that capability?
Probably not. I think the 350mA is for all outputs at once but still I think the "B" version of the chip would probably work fine.
Keep in mind each LED will be on only 1/8 of the time at the most so you'll want to drive the LED harder than you would if the LED were continually on. While the LED will be on 1/8 of the time the shift registers may have to be on all the time.
The other thing you need to figure out is how to drive the anodes. This will need to be a higher current driver than the cathodes since the anode driver may need to drive up to 96 LEDs (counting each pixel as three LEDs) at once. I've used half bridge motor controllers but I don't like my current solution. This is something I've been meaning to ask the forum about.
Would I want the shift registers to control the columns or the rows?
I think the norm is to use the shift registers to control the columns.
If I were you, I'd try to take advantage of whatever software is already available.
I've already done a lot of work controlling RGB arrays with shift registers, so I think you'd be wise to configure your hardware in a way to make it easy to use the software I've written.
I'm not sure if the latest schematic I've posted includes individual access to each color's enable pin but my next version of PCB will include this change. I strongly recommend keeping the enable pins accessible to use for brightness control. I've made the mistake of "simplifying" a layout by tying enable pins to ground. Don't. You'll want to control them and possibly each color individually.
In order to get the data out quickly, I also think it's a good idea to have separate data lines for each color. This allows a full pixel to be sent with each clock pulse.
I was doing a little poking around, and I found this schematic. I have not dug to deep into it, but I was thinking replace the Atmega with a prop. The schematic has the row drivers, and the column drivers. What do you guys think?
How about a 20 x 12 array like this. Close to what the video showed and driven with the prop should easily do 16 brightness levels per color with PWM. Might be possible to use TPIC6B595's depending on the leds chosen.
How about a 20 x 12 array like this. Close to what the video showed and driven with the prop should easily do 16 brightness levels per color with PWM. Might be possible to use TPIC6B595's depending on the leds chosen.
Not a bad idea, but the wife wants it to be 16 x 32. And with 16 levels of brightness, I don't think she would like that. It looks like in the video there are more colors than that.
How about a 20 x 12 array like this. Close to what the video showed and driven with the prop should easily do 16 brightness levels per color with PWM. Might be possible to use TPIC6B595's depending on the leds chosen.
The TPIC6B595 chips can only sink current. You can't using them to drive the anodes.
I don't think it would slow things down much to use a normal 74HC595 chip to control whatever is used to drive the anodes.
I could get 5-bits (32 levels per color) color depth with a 16x8 array but that was before switching to separate data lines for each color. I don't know if using separate data lines will increase the speed enough to get 6-bits per color or not.
One possible way of getter better color depth would be to use multiple cogs. I'm planning on doing this in my LED project. I'm not sure what the best strategy for using multiple cogs would be. The array could be divided in sections with various sections controlled by a separate cog or a cog could be used to control just one color.
16 levels for each of the R, G, and B leds would give 4096 colors.
IMO, 4-bits per color looks pretty good.
I've got to make a better demo video of my arrays. I can adjust the array size and color depth on the fly to experiment with various combination. Darn it, I don't have time today to make it.
It's pretty interesting to see how a rainbow looks at various color depths.
Has anyone even built an array using WS82xx LEDs? They work like magic in strips, they seem like a very worth option, especially if diffused. Not sure on how you would address them in a game like Tetris. You could do some really wild effects otherwise. Make a big VU meter out of it with some random routines, if it gets boring switch the music.
Re: : "The TPIC6B595 chips can only sink current. You can't using them to drive the anodes."
Not directly, but you can use them to drive a PNP or Pchannel fet to drive the anodes. This makes better use of the TPIC's and makes wiring the outputs a bit simpler.
I've got to make a better demo video of my arrays. I can adjust the array size and color depth on the fly to experiment with various combination. Darn it, I don't have time today to make it.
It's pretty interesting to see how a rainbow looks at various color depths.
I am having trouble understanding how each pixel can have different brightness when a shift register is controlling the LEDs. I am use to driving LEDs in static mode, with only on/off control.
Would it be better/easier to use an ic that offers individual PWM control? My inexperience is asking.
I am having trouble understanding how each pixel can have different brightness when a shift register is controlling the LEDs. I am use to driving LEDs in static mode, with only on/off control.
What you do is produce/shift the column bits out 16 times for each row of leds. If a led intensity is 0 the bit for that column would be 0 all 16 times. If the led intensity was 8 then 8 out of the 16 times the row bit would be 1. Sort of multiplexing combined with PWM.
Would it be better/easier to use an ic that offers individual PWM control? My inexperience is asking.
It might be, but often the task of producing an image on the led array from an x/y array of pixels in memory gets really complicated.
I am having trouble understanding how each pixel can have different brightness when a shift register is controlling the LEDs. I am use to driving LEDs in static mode, with only on/off control.
The driver for the shift register has to written in PASM in order to shift the bits fast enough for brightness control.
The code to move around the pixels can be written in Spin though.
With visualisations, if your wife likes itunes visualisations we can cheat a bit here. Take a video of an itune visualisation. Then run it through one of the various programs to convert to bitmaps. Then a bit more image processing (done on a PC) to get it down to the 19x24 resolution or whatever you choose, and to decrease the resolution to whatever it ends up. This is all the preprocessing done behind the scenes to play a video like this on the Propeller http://www.youtube.com/watch?v=Ev7kKXGybEA It is just one big file, loaded a screen at a time off an SD card. So you can play anything you like on your display by cheating and filming the thing you want rather than writing complex programs. Maybe you even cheat and use a stock video of the 'game of life' rather than actually coding the 'game of life'.
A propeller would be perfect for this. Files and graphics stored on an SD card (4 pins). So you would have 24 free pins to drive the display. Cogs can do updates more than fast enough.
BTW the code to play that youtube video came in at (I think) about 8 lines of Spin code that I had to write. All the complex code was written by others and found on the Obex. Hmm *ponders*, I wonder if anyone has written some RGB driver code and posted it on the Obex?
Comments
Most households don't have a in-floor a/c outlet in their living room.
If there is access to the floor from the celling below it, you could install a outlet.
Myself with a single story house with concrete floor,I guess I would put a large battery that would have to be charged overnight ~twice a month.
As I can live with a power cord across the floor once in a while but not all the time.
If there is a rug under the table that goes all the way to or past the couch and the couch is a against a wall,
I would then put the DC adapter under the couch and run some flat speaker wire for DC-power under the rug.
Done with what?
So we've got:
Variable intensity RGB LEDs through touch sensitive diffusion panels
sound output
sound input
WiFi enabled
"mood" lighting (you could actually do LED strips underneath the table edge to provide some mood counter lighting)
Can you imagine the game of Simon you could play on a 16x24 grid (or whatever the final size is)
Make it a little bigger and a much sturdier base and you can play Twister
As it is, you can play Tetris and many other table games.
Good thing you hav Carte Blanche.....we're going to spend a LOT for you!!!
I was wondering about that resolution. 19 and 12 are such awkward numbers in our binary computer world. 16 by 24 would be much nicer to program.
But maybe aesthetics is at work here, 19 by 12 gives an aspect ratio of 1.58 which is quite close to the magical golden ratio of about 1.62.
Where as 24 * 16 is an aspect ratio of 1.5. Perhaps that is close enough.
Do keep those "pixels" square though.
Speaking of pixels, given that we have three colour LEDs offering a huge rainbow of colours this thing should be able to play videos as well.
Since apparently everybody doesn't closely follow all of my projects, I'll point out I have a variety of WS2812B PCB designs in this thread. I think they might be a good match for this project. (No, I don't think they would.) They would sure make the wiring easier.
The downside to using WS2812 LEDs instead of using shift registers is you'll lose color depth at low brightness settings. IMO, this is a big problem. You don't want to have to have the table at it's full brightness in order to get the cool colors you wanted.
If you don't know what I mean about color depth, find out. It's important to this project. I can provide video examples if you like of LED displays losing the number of colors they can display as the brightness level is decreased. This could be a big problem with WS2812 LEDs.
That would certainly simplify wiring the LEDs; the trick then is converting a linear string to a matrix. I wrote about the WS2812 for Nuts & Volts and even created a little module for it in DipTrace. Those files are attached in case they're helpful. FWIW, you can order right inside DipTrace but I noticed the limit is 199 boards (comes out to about $60 for the PCBs).
My WS2812 object: http://obex.parallax.com/object/703
I've been using the WS2812B in my designs as well. I've attached my pixel PCB (DipTrace files) that uses it.
He went through a ton of work and had a very successful KickStarter.
You can read about it here and make sure you watch the video:
http://ohararp.com/kickstarter-rgb-123-goes-live/
That is one part I will have to work on, and not my problem. It is her's
I like the "mood" lighting idea.
My wife would not mind it being 16 x 32
Yea, you all are going to make me spend all my money
I want to keep them square, I think it would look better
I don't know if I want to tackle playing videos, I am all ready going out of my comfort zone.
I was worrying about the color depth. I don't want to buy 512 LEDs just to find out I cant turn down the brightness.
If you all ready have video, that would be great. But don't make a video just for this.
How hard would it be to convert from a linear string to a matrix?
I really have to get a Nuts & Volts subscription
I am use to Eagle, never used DipTrace
If you create rows that don't zig-zag back and forth, it should be easy. Duane used strip LEDs (hacked Christmas bulb string) to create a sign matrix that was really cool.
I've attached PDF of the schematic and the Gerber files for the board (WS2812)
~16 x 32
~1-1/2" square pixels
~full color per pixel
~glass (not plastic) top
~spectrum analyzer
~real time visualizations
~some form of human input (capacitive, button, light, etc...)
~Games (Tetris, pong, etc...)
~under table mood lighting
~Bluetooth control from phone (serial link) to change modes
~and a budget for the electronics of $300 (I could con a little more if needed)
Let me know what would you do. If you would do something different.
I am going to be WAY out of my comfort zone, I have never did anything on that list. That is why I would like to know how would you guys do it. So it would give me an idea of what I need to do.
It sounds like you already understand the problem.
IMO, this should be a deal breaker for the WS2812 LEDs. If you want to dim the display, you'll drastically lose color depth.
I think JonnyMac is referring to the difficulty of having an array where the pixel numbers aren't arranged in memory the same way they are physically.
I think this issue gave him trouble with one of his cool LED costumes.
I had a similar problem when using GE-35 Christmas lights. In order to get the lights to fit in my display, I had to zigzag the strand back and forth. This is not how memory is laid out. I ended up creating a lookup table to match the physical location with the RAM location.
If you know how to use Eagle already then great but if you're still new to Eagle, I'd suggest switching to DipTrace.
He has some great stuff. The only thing is, I don't like the LED spacing. I would need 1-12"(38.1mm), the 16x16 has 12.5mm.
But it also made me realize I am going to have to use one heck of a power supply. for that same 16x16, he is saying it can consume 15.36A. I might have to use a computer power supply.
I think some LEDs like Microcontrolled linked to and some high power shift registers would give you the best color control of the options discussed.
The high power shift registers are sink only so make sure and get common anode LEDs.
Edit: I linked to the "A" version of the high power shift registers. The "B" versions cost less (they're what I'm using).
I know I keep harping about the color density but I think this will a big issue. I'm constantly turning my LED displays to their lowest brightness settings to keep them from being too annoying to my wife. But I also want the display to have the capacity to be really bright in case I want to use it outside or just because.
I think it is a deal breaker, the price alone is a deal breaker.
Got ya, I was getting worried that I would have to be a veteran programmer.
I have been using Eagle for years. I have figured almost everything about it.
Holy cow!! 350mA per output!?!? Am I really going to need that capability?
Would I want the shift registers to control the columns or the rows?
Please, you are not harping. I have no experience with this many LED's, or RGB LED's
Probably not. I think the 350mA is for all outputs at once but still I think the "B" version of the chip would probably work fine.
Keep in mind each LED will be on only 1/8 of the time at the most so you'll want to drive the LED harder than you would if the LED were continually on. While the LED will be on 1/8 of the time the shift registers may have to be on all the time.
The other thing you need to figure out is how to drive the anodes. This will need to be a higher current driver than the cathodes since the anode driver may need to drive up to 96 LEDs (counting each pixel as three LEDs) at once. I've used half bridge motor controllers but I don't like my current solution. This is something I've been meaning to ask the forum about.
I think the norm is to use the shift registers to control the columns.
If I were you, I'd try to take advantage of whatever software is already available.
I've already done a lot of work controlling RGB arrays with shift registers, so I think you'd be wise to configure your hardware in a way to make it easy to use the software I've written.
I'm not sure if the latest schematic I've posted includes individual access to each color's enable pin but my next version of PCB will include this change. I strongly recommend keeping the enable pins accessible to use for brightness control. I've made the mistake of "simplifying" a layout by tying enable pins to ground. Don't. You'll want to control them and possibly each color individually.
In order to get the data out quickly, I also think it's a good idea to have separate data lines for each color. This allows a full pixel to be sent with each clock pulse.
Not a bad idea, but the wife wants it to be 16 x 32. And with 16 levels of brightness, I don't think she would like that. It looks like in the video there are more colors than that.
The TPIC6B595 chips can only sink current. You can't using them to drive the anodes.
I don't think it would slow things down much to use a normal 74HC595 chip to control whatever is used to drive the anodes.
I could get 5-bits (32 levels per color) color depth with a 16x8 array but that was before switching to separate data lines for each color. I don't know if using separate data lines will increase the speed enough to get 6-bits per color or not.
One possible way of getter better color depth would be to use multiple cogs. I'm planning on doing this in my LED project. I'm not sure what the best strategy for using multiple cogs would be. The array could be divided in sections with various sections controlled by a separate cog or a cog could be used to control just one color.
IMO, 4-bits per color looks pretty good.
I've got to make a better demo video of my arrays. I can adjust the array size and color depth on the fly to experiment with various combination. Darn it, I don't have time today to make it.
It's pretty interesting to see how a rainbow looks at various color depths.
Not directly, but you can use them to drive a PNP or Pchannel fet to drive the anodes. This makes better use of the TPIC's and makes wiring the outputs a bit simpler.
I am having trouble understanding how each pixel can have different brightness when a shift register is controlling the LEDs. I am use to driving LEDs in static mode, with only on/off control.
Would it be better/easier to use an ic that offers individual PWM control? My inexperience is asking.
It might be, but often the task of producing an image on the led array from an x/y array of pixels in memory gets really complicated.
The driver for the shift register has to written in PASM in order to shift the bits fast enough for brightness control.
The code to move around the pixels can be written in Spin though.
Maybe? I'm not familiar with an IC which could do this. I'm very interested in hearing what options are available.
A propeller would be perfect for this. Files and graphics stored on an SD card (4 pins). So you would have 24 free pins to drive the display. Cogs can do updates more than fast enough.
BTW the code to play that youtube video came in at (I think) about 8 lines of Spin code that I had to write. All the complex code was written by others and found on the Obex. Hmm *ponders*, I wonder if anyone has written some RGB driver code and posted it on the Obex?