Good Day Everyone,
Been researching this for a while and found a few other people in the world that have attempted this, but the most recent attempt I’ve found was from nearly a decade ago and the technology is often out of date.
The intent of the project is to read the RGB pixels from a monitor in order to find the average color of the screen. I would then use the Average RGB value to illuminate an LED strip to create a cool ambiance. For example if I was watching Mad Max the strip would be an orange color, but if I changed the channel to Finding Nemo the strip would turn blue.
I would be using an MSP432 as the main microcontroller to control any peripherals including the LED strip. Previous posts mentioned using an ADV7611 or ADV7612 to capture the input. My main question and the part I am struggling with is how to extract the currently lit pixels from an HDMI input.
Note: the resolution does not need to be great. If I could poll the monitor and check the screen once or twice a second I think that would be better so that I don’t have to match the frequency and it would conserver power.
Thank you in advance for any direction and advice.
Unless your monitor is specifically setup to allow this, you’re not going to be able to read pixel data back from the display. (I’ve never seen a display that allows anything like this)
What you’re probably going to need to do is monitor the data going too your monitor and determine the areas on the screen you want to mimic and pull your color data from that. Once you have the data, it’s just a simple matter of pushing that out to your LED strips.
Google ‘Ambilight WS2812’ for some ideas on how you might accomplish something like this.
This is exactly the type of thing I was looking for. Thank you! Posting more in case anyone wants to follow along in the future and because I want to keep getting input from the community about certain hardware and/or approaches as I continue this project.
So this information led me down another rabbit hole, (in a good way). Looks like I need to grab the data going into a monitor just like @YellowDog stated. The best way to do this is with an HDMI splitter that splits the data stream so that the input goes to monitor and the other to a capture device. There are AV capture devices, most forums suggest something with a UTV007 chip. That will translate the data into a more manageable data stream for your micro-controller.
My largest concern at the moment is the proper method to collect the data and how I am going to pull the data correctly.
Basic setup so far (might need more converters)
Input → HDMI Splitter —> AV Capture —> Processor —> LEDs