NeoPixels, or WS2812 RGB LEDs, are the display device du jour for impressive and blinding lighting projects. Commonly known for very tight timing requirements, [Josh] discovered this is, in fact, usually unnecessary. The timing requirements for NeoPixels aren’t as bad as they seem, once you get to know them.
The official WS2812 timing specs give values that are fairly constraining for anyone writing a library to drive these RGB LED pixels, but simplifying the timing diagram by assuming a 50% duty cycle on the data lines and ignoring the longer maximum times results in a surprising conclusion: the only tight timing parameter for NeoPixel signaling is the maximum width of the 0-bit pulse.
Realizing this, [Josh] wrote a simple demo program to drive over 1000 NeoPixels – an 11 meter long strip – using 1K of RAM on an Arduino. The trick comes by simply delaying the bitbanging a set number of cycles. No obtuse assembly required.
There is only one problem with [Josh]’s method of driving a nearly unlimited amount of NeoPixels – building a display where every NeoPixel is an element in a larger image, such as in a video display, is impossible on systems with limited amounts of RAM. The code writes values to the NeoPixel strip algorithmically, so if you can’t build your animation with for loops, you’re out of luck. Still, Driving this many NeoPixels is a migraine trigger, and we have to give [Josh] credit for doing this with 1K of RAM.
Check out the video of [Josh]’s extreme NeoPixel strip below.
Continue reading “Driving 1000 NeoPixels With 1k Of Arduino RAM”
With the Raspberry Pi now most famously known as a $30 media PC, it only makes sense that the best uses for the GPIO pins on the Pi are used for an Ambilight. [Great Scott Labs] put up a great video on using the Pi as a uniquely configurable Ambilight with Hyperion and just about any video input imaginable.
This isn’t the first Ambilight clone [Great Scott] has put together, but for the first version the Ambilight functioned only under Raspbian and not any random HDMI input. The new version solves this by using an HDMI splitter box, feeding into an HDMI to composite converter, and finally into a USB composite capture dongle attached to the Raspi.
With the software in the instructions, the Raspi effectively mirrors the video coming from the video capture dongle. The Pi is running Hyperion to control a strip of WS2801 RGB LEDs, making the back of any TV glowey and blinkey.
Since [Great Scott] is using a component video signal as an input, the adapters necessary to have any device work with this Ambilight are readily available. We’d honestly like to see this build working with the old Commodore disk access screen border going nuts, so be sure to send that in if you ever get that working.
Continue reading “A Raspi Ambilight With HDMI Input”
Depending on your taste for social interaction and tolerance for distraction, an open floor plan or “bullpen” office might not be so bad with a total of four people. Hackaday.io user [fiddlythings] likes it, but people often stop by to see him or one of his coworkers only to find them busy or absent. While their status is something they could plainly see in Microsoft Communicator from their own desk, some people like to chat in person or stop by on their way to and from meetings.
In order to save these visitors a few seconds, [fiddlythings] came up with an IM status indicator using their existing nameplates outside the door. Each of their names has a little silver dot by it which he backlit with a flattish RGB LED. These LEDs are driven by a Raspberry Pi and NPN transistors through a ribbon cable.
The plan was to imitate the Communicator status colors of green for available, red for busy, and yellow for away. [fiddlythings] dialed up a lovely shade of amber for away using a mix of red and green. Since he really only needs two colors, he’s using eight NPN transistors instead of twelve. The quick ‘n dirty proof of concept version used Python and a Pidgin IM console client called Finch. Once he got IT’s blessing, he implemented the final version in C++ using Libpurple to interface with Communicator.
This isn’t the first time we’ve seen a Pi used to indicate status—remember this mobile hackerspace indicator?
[Marcus’s] 3D-printed LED bracelet has moved through a number of revisions recently, but each iteration is impressive in both simplicity and functionality. Inspired to experiment with his print of [nervoussystem’s] Diagrid Bracelet, [Marcus] took the opportunity to add some LEDs with his first build, which combined a strip of RGB LEDs, a small battery, and an Adafruit Trinket microcontroller.
A second build soon followed, which overhauled the bracelet’s design into a more solid form and managed to double the amount of LEDs by upgrading to a different strip. The bracelet is currently in its third revision, cycling through the spectrum for around 3.5 hours on a single charge. This build also sports a 3-axis accelerometer: when the wearer shakes the bracelet, the colors skip around. If shaken long enough, the bracelet will enter a dazzling flurry of color flickering. Stick around after the break for a few demonstration videos. If you want to print your own, head over to [Marcus’s] Thingiverse file.
Continue reading “3D Printed RGB LED Bracelet”
[Trent] is one of those guys who can make things happen. A friend of his gifted him a mannequin derriere simply because he knew [Trent] would do something fun with it. “Something fun” turned out to be sound reactive LED butt. At first blush, this sounds like just another light organ. This butt has a few tricks up its …. sleeve which warrant a closer look. The light comes from some off the shelf 5050 style RGB LED strip. The controller is [Trent’s] own design. He started with the ever popular MSGEQ7 7 Band Graphic Equalizer Display Filter, a chip we’ve seen before. The MSGEQ7 performs all the band filtering and outputs 7 analog levels corresponding to the amplitude of the input signal in that band. The outputs are fed into an ATTiny84, which drives the RGB strip through transistors.
The ATTiny84 isn’t just running a PWM loop. At startup, it takes 10 samples from each frequency band. The 10 samples are then averaged, and used to create a noise filter. The noise filter helps to remove any ambient sound or distortions created by the microphone. Each band is then averaged and peak detected. The difference between the peak and the noise is the dynamic range for that band. The ATTiny84 remaps each analog sample to be an 8 bit value fitting within that dynamic range. The last step is to translate the remapped signal values through a gamma lookup table. The gamma table was created to make the bright and dark colors stand out even more. [Trent] says the net result is that snare and kick drum sounds really pop compared to the rest of the music.
Without making this lamp the butt of too many jokes, we’d like to say we love what [Trent] has done. It’s definitely the last word in sound reactive lamps. Click through to see [Trent’s] PCB, and the Butt Lamp in action.
Continue reading “The Butt Lamp: Light From Where the Sun Don’t Shine”
Don’t let the above picture’s lack of blinking colors fool you, the light-up dress [Sam] fashioned for his girlfriend is rather eye-catching; we’d just rather talk about it than edit the gifs he’s provided. [Sam’s] been a busy guy. His last project was a Raspberry Pi digital photo frame, which we featured just over a week ago, but wearable hacks allow him to combine his favored hobbies of sewing and electronics.
If you’re looking to get started with wearable electronics, then this project provides a great entry point. The bulk of the build is what you’d expect: some individually-addressable RGB LEDs, the ever-popular FLORA board from Adafruit, and a simple battery holder. [Sam] decided to only use around 40 of the LEDs, but the strips come 60 to a meter, so he simply tucked the extra away inside the dress and set his desired limits in the software, which will allow him to preserve the entire strip for future projects. If you’ve ever attempted a wearable hack, you’re probably familiar with how delicate the connections can be and how easily the slightest bend in the wiring can leave you stranded. Most opt for a conductive thread solution, but [Sam] tried something different and used 30 AWG wire, which was thin enough to be sewn into the fabric. As an added bonus, the 30 AWG wire is insulated, which permits him to run the wires close to (or perhaps over) each other while avoiding shorts. [Sam’s] guide is detailed and approachable, so head over to his project page if you think you’ve caught wearables fever, and check out his GitHub for the source code.
RGB LEDs are awesome – especially the new, fancy ones with the WS2812 RGB LED driver. These LEDs can be individually controlled to display red, green, and blue, but interfacing them with a microcontroller or computer presents a problem: microcontrollers generally don’t have a whole lot of RAM to store an image, and devices with enough memory to do something really cool with these LEDs don’t have a real-time operating system or the ability to do the very precise timing these LEDs require. [Sprite_tm] thought about this problem and came up with a great solution for controlling a whole lot of these WS2812 LEDs.
[Sprite] figured there was one device on the current lot of ARM/Linux boards that provides the extremely precise timing required to drive a large array of WS2812 LEDs: the video interface. Even though the video interface on these boards is digital, it’s possible to turn the 16-bit LCD interface on an oLinuXino Nano into something that simply spits out digital values very fast with a consistent timing. Just what a huge array of RGB pixels needs.
Using a Linux board to drive RGB pixels using the video output meant [Sprite_tm] needed video output. He’s running the latest Linux kernel, so he didn’t have the drivers to enable the video hardware. Not a problem for [Sprite], as he can just add a few files to define the 16-bit LCD interface and add the proper display mode.
[Sprite_tm] already taken an oscilloscope to his board while simulating 16 strips of 600 LEDs, and was able to get a frame rate of 30 fps. That’s nearly 10,000 LEDs controlled by a single €22/$30USD board.
Now the only obstacle for building a huge LED display is actually buying the RGB LED strips. A little back-of-the-envelope math tells us a 640×480 display would be about $50,000 in LEDs alone. Anyone know where we can get these LED strips cheap?
Continue reading “Controlling Ten Thousand RGB LEDs”