Dual-State Arduino-Controlled Ambient RGB Backlight
The DSACARB isn’t just a lighting system; it’s control and chaos engineered into harmony. It runs in two modes: one where you command every hue, and another where the lights breathe with your screen in real time. A Python script captures colors at 16 FPS, crunches them with NumPy and PIL, and fires them to an Arduino Uno that translates pure data into vivid light through NPN transistors. A 2P2T switch bridges human precision with machine automation, making the whole system shift from manual finesse to full adaptive brilliance in an instant. It’s a perfect fusion of logic, circuitry, and aesthetic power; built not to decorate, but to react.
Created by
void
Tier 3
25 views
0 followers
CAN ⚡🚀
approved Dual-State Arduino-Controlled Ambient RGB Backlight ago
Tickets awarded: 220 tickets
Tier: 3
CAN ⚡🚀
submitted Dual-State Arduino-Controlled Ambient RGB Backlight for review ago
void
submitted Dual-State Arduino-Controlled Ambient RGB Backlight for review ago
CAN ⚡🚀
requested changes for Dual-State Arduino-Controlled Ambient RGB Backlight ago
Please don't have an AI readme. Also, you need photos in your readme.
Tier: 3
void
submitted Dual-State Arduino-Controlled Ambient RGB Backlight for review ago
void
added to the journal ago
Enjoy the show
Well grabbed some popcorn and watched the magic happen.
Was so magical I just stood there staring at it till daylight.
And everyday since, my productivity has been sky rocketed (albeit I get lost sometimes in the immersive lights)
Worth every minute of working on it.
Witness this magic here.
.png)
Or also here, locally.
void
added to the journal ago
Enjoy the show
Well grabbed some popcorn and watched the magic happen.
Was so magical I just stood there staring at it till daylight.
And everyday since, my productivity has been sky rocketed (albeit I get lost sometimes in the immersive lights)
Worth every minute of working on it.
Witness this magic here.
.png)
void
added to the journal ago
Assembled the components
The final coming together of everything.
- printed the model of control panel
- tested code arduino
- set-up basic components
- did modular testing of entire system
- wired and rewired several times getting the circuit right
- optimized final design and setup for performance and power
- setup the system onto the desktop




void
added to the journal ago
Modelled the control panel for the system
- Spent time sketching what a modern looking control panel should be,
- took measurements of my components,
- modelled it accordingly in blender,
- along with dials,
- and made a custom switch for the dynamic and static modes,
- and optimized it for 3d printing.
The control panel mainly has 3 dials to control the RGB channels during static mode, behind which in the case there is space to hold the potentiometers, and a switch to switch between static and dynamic, behind which is the 2pull-2throw switch I talked about earlier.



void
added to the journal ago
Built the circuit diagram
Spent several days sketching and refining the circuit, for initially I had accounted for a normal individual LEDs and later realized I had to make do with a LED strip I found in a garage.
This strip had a rather complicated wiring than the one I was used to, so spent time going through its datasheets. Alongside LEDs, I also went through the datasheets of potentiometers and transistors and calculated for their rating.
Besides this, I refined (more like changed 90% of the stuff after I was done) the circuit so that it handles both modes parallelly, meaning when one mode was running, the other was turned off completely. What this means is, I found a way that allows me to bake two separate and very different circuits into a a single complex but highly efficient design. This is the part that took most of my time.
The crux of this circuit is we have a 2 pull 2 throw switch to the power, where one pair of connection powers the rail of potentiometers through the LED strip, keeping one end positive and the other end ground. Then when the switch is flicked, the rail now powers the arduino and the base of the transistors and marks THE OPPOSITE side of the LED strip as positive. Since only one mode was powered at a time, this will cause no conflicts.



[From initial (top) designs to final one [last]. A lot in between too which I don't have the photos of :(]
void
added to the journal ago
Code for Arduino processing
Wrote the logic for processing the Serial data.
In a nutshell, receive the serial output from python sent via COM, and send PWM analog signal to regulate the NPN transistors controlling RGB channels.
Now this took a bit longer than it should as initially I wrote the code for switching logic from Dynamic to Static directly in the Arduino, but then after further planning I removed the redundant code and updated the circuit for power optimization, such that Arduino won't be connected at all during static mode.

void
added to the journal ago
Wrote the code for Screen Capture
Wrote some python for capturing the screen on demand at 16 fps using PyAutoGUI,
pixelate and sample all the pixels into an array with PIL,
some math and find the dominant color with numpy.
Then send the data through the Serial Port to the Arduino.
rgb

void
added to the journal ago
Got a clear ground on what and how to build
Spent time researching on what technologies I should use, how I am going to implement the project, and sketched out a working plan. [AKA did a lot of googling, watching, reading and sketching]
So what I ended up with is:
Have a switch with two modes: Dynamic and Static
For static:
- Use 3 potentiometers as analog input to Arduino Uno, for each of the RGB channels.
- Normalize those values and send them to three NPN transistors.
- The transistors regulate a 12V signal from a adapter to the RGB channels.
For dynamic:
- Use python for screen capturing [PyAutoGUI for screen capture and PIL along with NumPy for precise color analysis]
- Send the color data to the serial which is received by the Uno and regulated via the same transistors.

void
started Dual-State Arduino-Controlled Ambient RGB Backlight ago
10/25/2025 - Got a clear ground on what and how to build
Spent time researching on what technologies I should use, how I am going to implement the project, and sketched out a working plan. [AKA did a lot of googling, watching, reading and sketching]
So what I ended up with is:
Have a switch with two modes: Dynamic and Static
For static:
- Use 3 potentiometers as analog input to Arduino Uno, for each of the RGB channels.
- Normalize those values and send them to three NPN transistors.
- The transistors regulate a 12V signal from a adapter to the RGB channels.
For dynamic:
- Use python for screen capturing [PyAutoGUI for screen capture and PIL along with NumPy for precise color analysis]
- Send the color data to the serial which is received by the Uno and regulated via the same transistors.

10/27/2025 - Wrote the code for Screen Capture
Wrote some python for capturing the screen on demand at 16 fps using PyAutoGUI,
pixelate and sample all the pixels into an array with PIL,
some math and find the dominant color with numpy.
Then send the data through the Serial Port to the Arduino.
rgb

10/31/2025 10 AM - Code for Arduino processing
Wrote the logic for processing the Serial data.
In a nutshell, receive the serial output from python sent via COM, and send PWM analog signal to regulate the NPN transistors controlling RGB channels.
Now this took a bit longer than it should as initially I wrote the code for switching logic from Dynamic to Static directly in the Arduino, but then after further planning I removed the redundant code and updated the circuit for power optimization, such that Arduino won't be connected at all during static mode.

10/31/2025 7 PM - Built the circuit diagram
Spent several days sketching and refining the circuit, for initially I had accounted for a normal individual LEDs and later realized I had to make do with a LED strip I found in a garage.
This strip had a rather complicated wiring than the one I was used to, so spent time going through its datasheets. Alongside LEDs, I also went through the datasheets of potentiometers and transistors and calculated for their rating.
Besides this, I refined (more like changed 90% of the stuff after I was done) the circuit so that it handles both modes parallelly, meaning when one mode was running, the other was turned off completely. What this means is, I found a way that allows me to bake two separate and very different circuits into a a single complex but highly efficient design. This is the part that took most of my time.
The crux of this circuit is we have a 2 pull 2 throw switch to the power, where one pair of connection powers the rail of potentiometers through the LED strip, keeping one end positive and the other end ground. Then when the switch is flicked, the rail now powers the arduino and the base of the transistors and marks THE OPPOSITE side of the LED strip as positive. Since only one mode was powered at a time, this will cause no conflicts.



[From initial (top) designs to final one [last]. A lot in between too which I don't have the photos of :(]
11/5/2025 - Modelled the control panel for the system
- Spent time sketching what a modern looking control panel should be,
- took measurements of my components,
- modelled it accordingly in blender,
- along with dials,
- and made a custom switch for the dynamic and static modes,
- and optimized it for 3d printing.
The control panel mainly has 3 dials to control the RGB channels during static mode, behind which in the case there is space to hold the potentiometers, and a switch to switch between static and dynamic, behind which is the 2pull-2throw switch I talked about earlier.



11/7/2025 - Assembled the components
The final coming together of everything.
- printed the model of control panel
- tested code arduino
- set-up basic components
- did modular testing of entire system
- wired and rewired several times getting the circuit right
- optimized final design and setup for performance and power
- setup the system onto the desktop




11/8/2025 1 AM - Enjoy the show
Well grabbed some popcorn and watched the magic happen.
Was so magical I just stood there staring at it till daylight.
And everyday since, my productivity has been sky rocketed (albeit I get lost sometimes in the immersive lights)
Worth every minute of working on it.
Witness this magic here.
.png)
11/8/2025 7 PM - Enjoy the show
Well grabbed some popcorn and watched the magic happen.
Was so magical I just stood there staring at it till daylight.
And everyday since, my productivity has been sky rocketed (albeit I get lost sometimes in the immersive lights)
Worth every minute of working on it.
Witness this magic here.
.png)
Or also here, locally.