Introduction: Ambilight DFMirage [super Fast Screen Capture and Processing]

About: Computer Engineering @ASU in JO.

yes, all my instructables are about one little project, but as you may have seen, i've evolved really good in these kind of projects.

in this article we're goin to use a software that i've been working on for quite a while, and as the title says"Super Fast", yes as fast as 75 fps with 15% of single processor, no gpu utilization, and best of all, full screen application support.

if you don't know whats the concept of ambilight, please use this link to get amazed by the idea :)

originally provided by Philips, now we clone the idea with the help of some skills.

how do we do such a thing ?

we need a PC with windows OS to do all the processing, digital addressable leds, and a micro-controller to connect the pc with the leds.

Houri, whats different and new in this version ?

well, 1st problem that most people were facing is the full screen applications, games and exclusive screen media players, solved :)

2nd problem is a small noticeable delay, caused by the capturing of image or by the sending data mechanism, also solved.

the capturing method I've used in this project is provided by the amazing guys at demoforge.com

it's super fast capturing method is used for streaming screens across the internet for whatever purposes.

here we are using it to capture our own screen and do the edges processing.

also you are given the

enough with the technical talk, GIVE ME THE HOW TO :D

Step 1: How To: What to Get and Where to Get It From?

1. Arduino uno there's plenty of options available, a clone is also a good idea [11$] from local store, don't forget the USB cable, might consider a longer than stock cable depending on the locations of your units.

2. ws2801 led strip , [43$] for the 5-meters, only used around 45 leds of total 160, used the others for other projects.

3. a power supply to power up the leds, the strip im using is 5v, with max of 9w per meter, im using 45 leds, do the math :D, but usually a pc power supply would be more than fine, and that what im using.

4. some solder and soldering equipment and skills if needed, thats if you are not using connectors like a molex connector and arduino pins connectors.

that's about it, project costs around 55$.

Step 2: Arduino Uno and WS2801 Connection

Ws2801 led strip has 4 connectors.

5V+,GND,Data,Clock.

the figure above shows how to connect them.

please note that you should apply your led strip on a screen that is very close to a wall.

also make sure that the first led index is at the right goin up to the top ending with the last led being at the left as shown on the previous figure.

Step 3: Software

Download Arduino IDE

Downlaod Fastled Arduino Library

Downlaod Mirror Screen Driver

Download both LedController.rar and Adalight Arduino Sketch from attachments

1. Install and run Arduino IDE

2. Include fast led io library in the Arduino IDE

3. open the Sketch code

4. Modify these defines

#define NUM_LEDS 43
#define SPEED 250000

NUM_LEDS is the total count of your leds, SPEED is the baudrate, leave it as is if you have no idea what's baudrade :D.

5. upload your sketch to your arduino uno.

6. install the Mirror Screen Driver.

7. in the "LedController\LedController\bin\Debug" you'll find "settings.ini" , edit it with any text editor and pick your settings.

8. run "Ambilight DFMirage\bin\Debug\Ambilight DFMirage.exe", make sure it runs As Admin

Step 4: End of Project

thats all to it, as you've seen the project solution is open source, it's a .net c# windows forms app made with visual studio comunity 2015 , the driver example, the gamma correction method, and the processing parts are all open source. here are all the links of codes i've used and learned allot from

http://www.codeproject.com/Articles/274461/Very-fast-screen-capture-using-DirectX-in-Csharp

http://www.demoforge.com/sdk/MirrSharp.zip

https://learn.adafruit.com/led-tricks-gamma-correction/the-quick-fix

http://www.dothediy.com/2015/08/arduino-ambilight.html

thanks for all of there efforts and without them this wouldn't have been done :)

if you guys have any improvements or ideas to the project please comment.

Enjoy and have fun :)

Step 5: Updates, History Log, to Do

//project discontinued:

I've decided to turn off the project, it was a good experience i've gained in the making and supporting it, in the other hand, i've decided to give a much larger project which this project was a small part of

make sure to edit the settings.ini and disable whatever hardware you don't have and enable the ones you have.

what is exactly in the new project ?

well, it's basically all what i can in do c#, you'll get 2 main things, the led control app server, and the web app, the server acts as:

Audio Output analyzer, led controller with lots of modes, one of them is ambilight with support for bottom leds, gamma correction, others like static color and rainbow, and a server for the web app.

the web app acts as:

remote controller for the leds, hardware monitoring, file transfer from mobile phones to pc and vice versa (works with iphones too), and a keyboard from your mobile to your PC.

now im really sorry that i had to stop supporting, but it's hard to find the time for this project, you can find the new solution named as "LedController3.0" in the downloads

v1.3: 3016-05-24 (last update)

-added event to exit the program on windows session switching(logoff)

v1.2: 2016-05-20

- added logger

- added screenshot capture[u can see in the screen shot that it doesn't have any text, thats normal]

- bug fix for resolutions that aren't 1920*1080

v1.1: 2016-05-17

- configration is now done with Configration.exe if you don't prefer handling it manually

- added a delay to slow down the thread to manage fps

- no need to compile your version after this release, only some configuration

v1.0:

initial release

_____________________________________________

tested on windows 10 64bit, i7 cpu, nvidia gtx770 ,16gb ram.

if you guys have tested it and found it useful and fun please post your setups and your specs, specially which os r u running on to know which functions well and which not ..