I’ve previously mentioned that I was initially using this code by James Bruce to drive the ambilight. While I was waiting for the circuit board components to arrive, I thought I would take some time to expand on his work, fix some bugs, and add a few features I thought Read more…
Overview The goal of this project is to build a dynamic backlight, also known as an ‘ambilight’, for my PC monitor. An ambilight changes colors based on the content onscreen, extending your monitor to the wall behind it. By reducing the contrast between the monitor and the background it can Read more…
I keep getting distracted by other projects and ideas, but I wanted to post a brief update on the footwell NeoPixels project. I’ve been working on the data structures and color patterns, but today I wanted to cover something simpler.
For the time being I’m not planning on changing the color of the tC’s interior lighting, which is a nice burnt orange. I’ve toyed back and forth with the idea of replacing the tC’s cubby light and adding a few lights to the cupholders, which on a default setting should match the rest of the lighting. This gives us today’s problem: how do we match the NeoPixel’s color with the other LEDs?
Although Adafruit has an excellent guide on getting started, I thought I would include a short post on using their library for RGB or RGBW strips. This already assumes you’ve got your strip hooked up to an Arduino and have successfully run one of the library’s example sketches. If not, read up on Adafruit’s basic connections tutorial.
Multicolor LED strips generally come in two flavors – solid color and addressable. Solid color strips, as the name implies, have all of their LEDs display the same color. Addressable strips on the other hand allow you to control the color value of every individual LED in the strip. The most popular individually-addressable LEDs on the market at the moment are Adafruit Industries’ NeoPixels, based on the WS2182 chipset. They come in a variety of physical packages including strips, rings, and matrices.
Before we can start making patterns with our shiny new NeoPixel prototyping board, we must first understand how to structure color information in a format the Arduino can interpret.
While the final version of the footwell NeoPixel project calls for a long strip of ~60 pixels, most of my time is going to be split between programming at my desk and testing the pixels’ response to telemetry from the car. I didn’t want to have to wrangle a large strip every time I wanted to test an idea, and I figured most of the patterns for the 60 pixel strip could be replicated on a shorter one.
My solution is this small prototyping board. It’s a 3D printed part with mounts for an Arduino Uno, a small breadboard, and a NeoPixel stick. The NeoPixel stick is a nifty PCB with 8 of the same type of RGBW leds as the strip I plan to use, and includes input/output pads and a resistor for the data line. The breadboard lets me wire a 1000µF capacitor to protect the pixels from voltage spikes and allows me to hook up a second power supply if I’m reaching the power limits of the Arduino (which I should note is absolutely possible if you’re using all of the pixels at full brightness).