I wonder if anyone has written some RGB driver code and posted it on the Obex?
I haven't put my code in the OBEX but the thread I linked to earlier has code which will display a section of RAM on an array of LEDs. Each pixel is three bytes (one byte per color). The lowest significant bits get ignored if the color resolution is below 8-bits per color (if I go higher than 5-bits, on a 16x8 display, I get a noticeable flicker).
It shouldn't be hard to display low res animations with LEDs.
As I'm mentioned many times, I've displayed live mono chromatic (8-bit) video on a 12x10 array.
I'm doing pretty much exactly the same thing, but on a folding 6 ft table. 16 x 32. I'm using a bank of the adafruit 10A 5v PSUs to drive it, because they fit in the cavity when the table is folded up. I'm using the 30 leds per meter strips, and spacing the strips 33mm apart to get the square aspect ratio. Because the strips are about 10-12mm wide (with silicon cover), you can fit interactive sensors in the 20mm in between.
You're looking at about 20c per led this way. You don't need to run at full brightness - theoretical max of about 128 watts of led light (~1/4 watt each) is about the same as 6 or 7 fluoro tubes. You don't really want your room looking like a 7/11 store (i think)
The other thing is voltage drops mean its actually hard to run it all at full brightness
TC:
The Nov 2008 issue of Circuit Cellar magazine has an article about an led table that used 4 electret mics and an arm processor to detect finger taps on the table top to alter the display. The propagation time of the sound through the plastic top was measured, the position of the tap determined and then acted upon. The processor was not fast enough to handle the much faster propagation time through glass, but I suspect the prop would have no problem. Given your comments so far, this might well over your head initially, but if you plan this out correctly with room for expansion, you could add this ability later.
Franklly, there are more suggestions being put forth than you can keep up with.
I'd do the following.
A. Settle on a plan for an optimized LED display built as a coffee table and intended to interface with a Propeller ProtoBoard.
B. Build one Propeller ProtoBoard to achieve a first project goal as a 'proof of concept'
C. Have another or several other ProtoBoards to develop different concepts. One might be for audio input, another for a game such as Pong, and so on.
The main thing here is that you will have something in a working cofeetable LED display sooner and you would eventually have something even better than what inspired this project in the first place.
...
The main thing here is that you will have something in a working cofeetable LED display sooner and you would eventually have something even better than what inspired this project in the first place.
Exactly the trick we play with customers; tempt the customer (in your lucky case =wife) into issuing Variation Orders by demonstrating first result and promoting all the potential options.
btw, I'd like to vote this thread to be Thread of the Year 2014 (I know it's early, but still-)
Maybe? I'm not familiar with an IC which could do this. I'm very interested in hearing what options are available.
I was just poking around, and did not study the datasheet that hard. But TI's tlc5940 offers a 16 channel, 4096 step PWM, and a 64 step dot correction. From what I can tell quickly reading the datasheet, you shift out the grayscale data (192-bits), then you clock the grayscale clock 4096 times. after that the outputs BLANK. I think that would be a good way to pervent ghosting.
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'.
Thats not a bad idea, and I might use it for a few things, But there are some things I can not "cheat" on. I cant learn, and push myself if I just copy and paste visualizations and screen savers.
You're looking at about 20c per led this way. You don't need to run at full brightness - theoretical max of about 128 watts of led light (~1/4 watt each) is about the same as 6 or 7 fluoro tubes. You don't really want your room looking like a 7/11 store (i think)
The other thing is voltage drops mean its actually hard to run it all at full brightness
The only time I would want it on full brightness, would be at parties. Im still on the fence between WS28xx and discrete LEDs with some kind of driver. The one thing good about discrete LEDs, is the current requirement. Since I would only be driving 16xRGB LEDs at a time, the current would be less. just an idea (not real value) 16 RGB LEDs = 48 individual LEDs. 48 LEDs x 20mA = 960mA. So just in therory in my head, I could get away with a wall-wort for a power supply(reality, probability not)
TC:
The Nov 2008 issue of Circuit Cellar magazine has an article about an led table that used 4 electret mics and an arm processor to detect finger taps on the table top to alter the display. The propagation time of the sound through the plastic top was measured, the position of the tap determined and then acted upon. The processor was not fast enough to handle the much faster propagation time through glass, but I suspect the prop would have no problem. Given your comments so far, this might well over your head initially, but if you plan this out correctly with room for expansion, you could add this ability later.
Franklly, there are more suggestions being put forth than you can keep up with.
I'd do the following.
A. Settle on a plan for an optimized LED display built as a coffee table and intended to interface with a Propeller ProtoBoard.
B. Build one Propeller ProtoBoard to achieve a first project goal as a 'proof of concept'
C. Have another or several other ProtoBoards to develop different concepts. One might be for audio input, another for a game such as Pong, and so on.
The main thing here is that you will have something in a working cofeetable LED display sooner and you would eventually have something even better than what inspired this project in the first place.
I think I am going to go that route, just not with so many ProtoBoards. I have trouble spending money on something I will use just once. What I will be doing is using my breadboard for most of the design, and when I have it working, then move it to the ProptoBoard.
What I am planing, is to first just to get the table to light up, then go from there.
Exactly the trick we play with customers; tempt the customer (in your lucky case =wife) into issuing Variation Orders by demonstrating first result and promoting all the potential options.
btw, I'd like to vote this thread to be Thread of the Year 2014 (I know it's early, but still-)
Thats not a bad idea, and I might use it for a few things, But there are some things I can not "cheat" on. I cant learn, and push myself if I just copy and paste visualizations and screen savers.
Good point. If you want to learn more well ok, let's say you have 24 propeller pins and you have all sorts of flexibility about how you drive the leds - shift registers, latches, dedicated led drivers. Whatever you choose, you will end up with an Object with Spin and possibly Pasm code, and that becomes your generic display driver.
Then you can run a program like Kyedos which can load and run multiple precompiled programs off an SD card. So you can now compile one program which plays a little movie. And you can take some existing code that might do a graphics simulation and maybe it was written for a VGA display, so you replace the code so it runs your display instead. Once you have swapped one VGA object for your display Object, that process will get simpler. Then you precomile that program and put it on the SD card too, and now you can have many programs that all can be run from the SD card. Some are movies. Some are 'real' programs, like a 'game of life'.
All that can leverage off code already written, which greatly simplifies things.
So really, the big focus is getting a display driver working. With 24 pins there are a lot of choices. It may be just a row of common cathode transistors, and some latches for the led anodes. Possibly only 3-4 chips.
The only time I would want it on full brightness, would be at parties. Im still on the fence between WS28xx and discrete LEDs with some kind of driver. The one thing good about discrete LEDs, is the current requirement. Since I would only be driving 16xRGB LEDs at a time, the current would be less. just an idea (not real value) 16 RGB LEDs = 48 individual LEDs. 48 LEDs x 20mA = 960mA. So just in therory in my head, I could get away with a wall-wort for a power supply(reality, probability not)
NOT - if you run one of 32 columns at a time at 960ma average current then you will need to supply 960ma x32 or just over 30A peak which the LEDs will not like at all anyway. I have experience with these things in industry and you have got to have some real beef in your PSUs to supply the current, lots of it. BTW, the LEDs will get quite hot as it will be around 55W of power the LEDs themselves will be dissipating (avg 1.8V drop @20ma avg x16x3x32)
I can't help thinking you are onto a good idea there. Not sure how. We need T.C's wife's name so that she can get her "Best Significant Other of the year" certificate. This could start a whole new tradition in geekdom.
I can't help thinking you are onto a good idea there. Not sure how. We need T.C's wife's name so that she can get her "Best Significant Other of the year" certificate. This could start a whole new tradition in geekdom.
NOT - if you run one of 32 columns at a time at 960ma average current then you will need to supply 960ma x32 or just over 30A peak which the LEDs will not like at all anyway. I have experience with these things in industry and you have got to have some real beef in your PSUs to supply the current, lots of it. BTW, the LEDs will get quite hot as it will be around 55W of power the LEDs themselves will be dissipating (avg 1.8V drop @20ma avg x16x3x32)
That is why I said "in my head" still getting use to the way things are going to be set up.
I think you can do 1/8 duty with multiplexing as there is no need to have LED always on, as that would be blinding bright.
Some LED drivers have global brightness that you could use, but if you did go with hardware multiplexing you need less led drivers and just a few high side power switches
If the keyboard could be put under control of a support help desk, it could help diminish (not eliminate) the "press any key" issues. While a user can claim "I don't have an 'ANY' key, it will be much harder to say "I don't have a FLASHING RED key!"
I think you can do 1/8 duty with multiplexing as there is no need to have LED always on, as that would be blinding bright.
Some LED drivers have global brightness that you could use, but if you did go with hardware multiplexing you need less led drivers and just a few high side power switches
I think I am going with multiplexing. Just seams like a better way of doing it.
I think I am going with multiplexing. Just seams like a better way of doing it.
Multiplexing is the only practical way to do this, and how you multiplex the array will affect the amount of hardware you need and how complex the software will be so choose carefully. First thing though is to choose the leds you will use.
First thing though is to choose the leds you will use.
I am going to go with discrete LEDs. I found 1000 RGB 4 pin, 5mm, common anode for about $75. With that many LEDs, I have what I need for the final product, some to push them to there limit, some to make a 16x16 proof of concept, and some for other projects.
I think I am going with multiplexing. Just seams like a better way of doing it.
Multiplexing is the only practical way to do this, and how you multiplex the array will affect the amount of hardware you need and how complex the software will be so choose carefully. First thing though is to choose the leds you will use.
For a 16 x 32 array of leds the logical choice of layout would be 16 rows of 32 leds so you can shift out the 32 bits in a long for each row. That would mean each row would be powered 1/16 of the time. If the leds are not bright enough you may have to split the array and double up on the column drivers so each row would be on 1/8 of the time.
Comments
I haven't put my code in the OBEX but the thread I linked to earlier has code which will display a section of RAM on an array of LEDs. Each pixel is three bytes (one byte per color). The lowest significant bits get ignored if the color resolution is below 8-bits per color (if I go higher than 5-bits, on a 16x8 display, I get a noticeable flicker).
It shouldn't be hard to display low res animations with LEDs.
As I'm mentioned many times, I've displayed live mono chromatic (8-bit) video on a 12x10 array.
I'm doing pretty much exactly the same thing, but on a folding 6 ft table. 16 x 32. I'm using a bank of the adafruit 10A 5v PSUs to drive it, because they fit in the cavity when the table is folded up. I'm using the 30 leds per meter strips, and spacing the strips 33mm apart to get the square aspect ratio. Because the strips are about 10-12mm wide (with silicon cover), you can fit interactive sensors in the 20mm in between.
You're looking at about 20c per led this way. You don't need to run at full brightness - theoretical max of about 128 watts of led light (~1/4 watt each) is about the same as 6 or 7 fluoro tubes. You don't really want your room looking like a 7/11 store (i think)
The other thing is voltage drops mean its actually hard to run it all at full brightness
The Nov 2008 issue of Circuit Cellar magazine has an article about an led table that used 4 electret mics and an arm processor to detect finger taps on the table top to alter the display. The propagation time of the sound through the plastic top was measured, the position of the tap determined and then acted upon. The processor was not fast enough to handle the much faster propagation time through glass, but I suspect the prop would have no problem. Given your comments so far, this might well over your head initially, but if you plan this out correctly with room for expansion, you could add this ability later.
Rick
I'd do the following.
A. Settle on a plan for an optimized LED display built as a coffee table and intended to interface with a Propeller ProtoBoard.
B. Build one Propeller ProtoBoard to achieve a first project goal as a 'proof of concept'
C. Have another or several other ProtoBoards to develop different concepts. One might be for audio input, another for a game such as Pong, and so on.
The main thing here is that you will have something in a working cofeetable LED display sooner and you would eventually have something even better than what inspired this project in the first place.
Exactly the trick we play with customers; tempt the customer (in your lucky case =wife) into issuing Variation Orders by demonstrating first result and promoting all the potential options.
btw, I'd like to vote this thread to be Thread of the Year 2014 (I know it's early, but still-)
Erlend
I was just poking around, and did not study the datasheet that hard. But TI's tlc5940 offers a 16 channel, 4096 step PWM, and a 64 step dot correction. From what I can tell quickly reading the datasheet, you shift out the grayscale data (192-bits), then you clock the grayscale clock 4096 times. after that the outputs BLANK. I think that would be a good way to pervent ghosting.
Thats not a bad idea, and I might use it for a few things, But there are some things I can not "cheat" on. I cant learn, and push myself if I just copy and paste visualizations and screen savers.
The only time I would want it on full brightness, would be at parties. Im still on the fence between WS28xx and discrete LEDs with some kind of driver. The one thing good about discrete LEDs, is the current requirement. Since I would only be driving 16xRGB LEDs at a time, the current would be less. just an idea (not real value) 16 RGB LEDs = 48 individual LEDs. 48 LEDs x 20mA = 960mA. So just in therory in my head, I could get away with a wall-wort for a power supply(reality, probability not)
Now that sounds like a good idea
I think I am going to go that route, just not with so many ProtoBoards. I have trouble spending money on something I will use just once. What I will be doing is using my breadboard for most of the design, and when I have it working, then move it to the ProptoBoard.
What I am planing, is to first just to get the table to light up, then go from there.
Lucky??? You have not met my wife
I also would like to vote for thread of the year.
Good point. If you want to learn more well ok, let's say you have 24 propeller pins and you have all sorts of flexibility about how you drive the leds - shift registers, latches, dedicated led drivers. Whatever you choose, you will end up with an Object with Spin and possibly Pasm code, and that becomes your generic display driver.
Then you can run a program like Kyedos which can load and run multiple precompiled programs off an SD card. So you can now compile one program which plays a little movie. And you can take some existing code that might do a graphics simulation and maybe it was written for a VGA display, so you replace the code so it runs your display instead. Once you have swapped one VGA object for your display Object, that process will get simpler. Then you precomile that program and put it on the SD card too, and now you can have many programs that all can be run from the SD card. Some are movies. Some are 'real' programs, like a 'game of life'.
All that can leverage off code already written, which greatly simplifies things.
So really, the big focus is getting a display driver working. With 24 pins there are a lot of choices. It may be just a row of common cathode transistors, and some latches for the led anodes. Possibly only 3-4 chips.
I get WS2812 for 14c each. I don't see how you could get less expensive than that with any other component.
You have a strong contender for Best Significant Other of the year.
NOT - if you run one of 32 columns at a time at 960ma average current then you will need to supply 960ma x32 or just over 30A peak which the LEDs will not like at all anyway. I have experience with these things in industry and you have got to have some real beef in your PSUs to supply the current, lots of it. BTW, the LEDs will get quite hot as it will be around 55W of power the LEDs themselves will be dissipating (avg 1.8V drop @20ma avg x16x3x32)
I can't help thinking you are onto a good idea there. Not sure how. We need T.C's wife's name so that she can get her "Best Significant Other of the year" certificate. This could start a whole new tradition in geekdom.
Her name is Amanda.
That is why I said "in my head" still getting use to the way things are going to be set up.
Some LED drivers have global brightness that you could use, but if you did go with hardware multiplexing you need less led drivers and just a few high side power switches
But be careful, if you get her a coffee table like that, next she'll want this RGB computer keyboard.
She might not want it. But I do. I have been wanting that keyboard since it got unveiled.
If I had 8-bits, would I want those bits to go from top to bottom, or left to right?
Also, what order should the bits be in? MSB->LSB or LSB->MSB
I think I am going with multiplexing. Just seams like a better way of doing it.
Multiplexing is the only practical way to do this, and how you multiplex the array will affect the amount of hardware you need and how complex the software will be so choose carefully. First thing though is to choose the leds you will use.
I am going to go with discrete LEDs. I found 1000 RGB 4 pin, 5mm, common anode for about $75. With that many LEDs, I have what I need for the final product, some to push them to there limit, some to make a 16x16 proof of concept, and some for other projects.
Multiplexing is the only practical way to do this, and how you multiplex the array will affect the amount of hardware you need and how complex the software will be so choose carefully. First thing though is to choose the leds you will use.
For a 16 x 32 array of leds the logical choice of layout would be 16 rows of 32 leds so you can shift out the 32 bits in a long for each row. That would mean each row would be powered 1/16 of the time. If the leds are not bright enough you may have to split the array and double up on the column drivers so each row would be on 1/8 of the time.