Blueprint

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 void

Tier 3

25 views

0 followers

CAN CAN ⚡🚀 approved Dual-State Arduino-Controlled Ambient RGB Backlight ago

Tickets awarded: 220 tickets

Tier: 3

CAN CAN ⚡🚀 submitted Dual-State Arduino-Controlled Ambient RGB Backlight for review ago

void void submitted Dual-State Arduino-Controlled Ambient RGB Backlight for review ago

CAN 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 void submitted Dual-State Arduino-Controlled Ambient RGB Backlight for review ago

void 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.
magic

Or also here, locally.

void 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.

Instagram story - 3 (1)

void 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

IMG_20240318_211059531
image
IMG_20240417_135735397
IMG_20240418_205437428

void 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.

image

image

image

void 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.
IMG_20240317_200618662
IMG_20240318_211059531
IMG_20240430_202234486

[From initial (top) designs to final one [last]. A lot in between too which I don't have the photos of :(]

void 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.
image

void 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
image

void 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.

Untitled

void 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.

Untitled

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
image

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.
image

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.
IMG_20240317_200618662
IMG_20240318_211059531
IMG_20240430_202234486

[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.

image

image

image

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

IMG_20240318_211059531
image
IMG_20240417_135735397
IMG_20240418_205437428

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.

Instagram story - 3 (1)

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.
magic

Or also here, locally.