This repository documents a project integrating WS2812B LEDs with remote control functionality for an enhanced PC setup experience.
- Arduino Uno (or any compatible microcontroller)
- 178 cm of WS2812B LED strips, with 100 LEDs/m (178 LEDs in total)
- 5V 40A power supply (to power the LEDs)
- KY-022 infrared receiver
- 330Ω resistor
- Wiring and connectors as necessary
The project is designed to achieve the following three main objectives:
- LED control via a .NET application on the PC
- PC control using a remote control
- LED control using a remote control
The circuit diagram is provided below for reference:
- LED Strip: Data pin connected to digital pin 5 via a 330Ω resistor.
- Infrared Receiver: Signal pin connected to digital pin 7.
The LED control is managed through a .NET Framework WinForm application, which provides various methods of control beyond just Ambilight. Communication between the PC and Arduino is handled via serial communication, with a baud rate of 250,000 (500,000 for ESP32). The control modes include:
- Individual Colors: Choose from a color palette.
- Rainbow Mode: Continuously change colors by adjusting the hue.
- Party Mode: A dynamic, continuously changing color mode.
- Ambilight: Screen pixel data is used to update the LEDs to match the colors on the display. This is the most impressive mode.
- Spectrogram Mode: Adjusts the LED brightness based on the audio levels from the system’s audio device. (A reset option for the sound device is available.)
Additional features include:
- Turbo Mode: Reduces LED update times for faster responsiveness, though this may cause flickering due to hardware limitations.
- Brightness Control: Adjustable via a slider in the application.
The .NET application can also read data from the Arduino’s serial port, which allows the remote control to trigger various PC keystrokes.
By pressing the "ON" button on the LED remote, control of the LEDs is transferred exclusively to the remote. Functions include brightness adjustment and color selection.
The best way to support this project is by reporting bugs and suggesting new features.
Here are some images showcasing the setup and the remote controls: