I was researching a project online the other day when I came across a project on Blogspot about how to make your own Atmolight/Ambilight television type setup using an Arduino Duemilanove ,  a ShiftBrite Shield and ShiftBar modules from Macetech and some 12v LED RGB lighting strips. It was kind of amazing as I had all the parts I needed on hand to build a diy ambilight and didn’t have to order or wait for anything.  The project calls for using the ShiftBar modules and RGB LED strips, but I have a hand-full of ShiftBrites and MegaBrites that I had used for another project.  There is no code difference between driving the ShiftBar, ShiftBrite and MegaBrite so I didn’t have to do any major changes to the code from The AtmoLight Clone Project Site.

Atmolight Components

Atmolight Components

The *Brite modules are generally setup to receive the shifted data from the SPI I/O port. This leads to good performance and fast updates since they are being hardware driven. Unfortunately I needed those pins for an older project I was working on which used the ShiftBrite shield and an Ethernet shield so I had rewired the ShiftBrite Shield to use other pins so the Ethernet shield could use the hardware SPI.  The owner over at Macetech helped me build a bit-banging interface to do the SPI I/O to the ShiftBrites via software.  The AtmoLight Clone project uses the stock Macetech code which made it easy to replace with my modified ShiftBrite driver code.  This different code is slower on the output, but it’s not noticeable on a small number of ShiftBrites with limited data. I just had to make a minor modification to the ShiftBrite shield to work with the changes.

Modified ShiftBrite Shield

Modified ShiftBrite Shield

I mounted the ShiftBrite modules onto the back of my primary 21″ monitor.  I have 2 ShiftBrite modules which point upwards, 2 to the left, 2 pointing down and 2 to the right with one MegaBrite module pointing straight back in the center for the summary channel. The ShiftBrite data and power cables are ziptied together and the whole thing unceremoniously taped to the back of the monitor with some masking tape.

4-ShiftBrites-1-Megabrite RGB LED Module

4 ShiftBrites 1 Megabrite RGB Module

Once your hardware and software on the Arduino you need to interface it to your computer.  The Atmo interfaces connect through the Serial/Com port at 38400 baud.  If your computer supports the USB com port of the Arduino, you should be able to connect to it.  Make sure in the setup section of your code that you only have one serial start statement, and that it’s set for 38400.

I tried two different ways to get the data to the Arduino.  The first was to use an older version of VideoLan/VLC Player.  The current version of VLC (as of 8/21/2010) does not seem have the built-in Atmo output code. If you’re putting something like this together, check to see if the new versions have it, the author of the VLC Atmo module said on another forum that he was working to get the Built-In Atmo code back into the package.

The Atmo plugin for VLC works very well, capturing average colors from the top, bottom, left, right and middle portions of the video it’s playing (as seen in the screen shot below from AtmoWin) and outputting that color information to the Arduino/ShiftBrite LED modules. It’s pretty quick and there are a lot of options which you can set to vary how quickly the lights respond, if they fade slowly or if they adapt quickly to the video input.  You can adjust the white balance of your modules, set a color for the LEDs to fade to in case you pause the video, and set a color that the LEDs will display once the video is complete.

The second option I tried was AtmoWin(0.45) but it’s now up to AtmoWin 0.47 , which is for Windows only and in German. It takes a few minutes to figure out what all the stuff stands for, and Google translate may be helpful as well. I believe this software is written by the guy in the main project page.  This software runs in your system tray and has several output modes such as Atmo-Classic, Dummy(shows what the program is sampling), DMX, Null Device, Multi-Atmo (run up to 4 Atmo devices on 4 Com ports) and MondoLight.  The software captures the entire screen and is not limited to just a video window.  It does the same 5 point capture pattern, but of whatever you have showing in your desktop.  You can set the capture framerate (it defaults to 25).  The response time for this software seems very quick on my computer. AtmoWin also supports multiple monitors and you can choose which monitor the system will capture. Note: There’s a newer version of AtmoWin available, 0.47, which should support overlays and make it compatible with more players and programs.

One thing to note is that when running some games in full screen mode it cannot capture the colors.  I ran Battlefield Bad Company 2 in a full screen -window- however and it worked fine, adding some great effects to my gaming sessions!

This is the link to the main project page which provided me the information to build my own setup, make sure to check it out after watching my video below.

Fun3’s Blogspot Page – AtmoLight Clone

Arduino with Shiftbrites with AtmoWinX – Link to the YouTube video below in case the embedded player doesn’t work for you.

If you’re looking for an Ambilight project that can run on an HDMI video source from a number of different devices, you might want to check out GreatScott!’s Ambilight Project (video below) which uses a Raspberry Pi, HDMI Splitter, HDMI to composite adapter and a Video capture device to drive a strip of WS2801 or WS2812B serially addressable LEDs.  Check out the video below, it looks pretty cool! There’s an existing image you can use which uses Hyperion and HyperCon and there is an app which will run on Android  It’s a lot heavier on the equipment side, but it looks like it works really well!



Tags: , , , ,