For my midterm project, my initial idea was to use Bluetooth to try to control the led strip. I am using my existing 12V WS2812b LED strips, but one IC controlled three leds individually, so I can only share one address per 3 leds which means I have to control at least 3 beads at a time. So each time the resulting light source diffusion area will be much larger than one led.

My design inspiration was when I bought an existing oil painting frame as an enclosure to avoid fabrication, I found that linen, as a less translucent material, could produce a more blurred and grainy visual effect, which reminded me of the works of French artist Alexis Jamet.His illustrations generally use nostalgic grains and rich colors to present a dreamy and romantic visual style.



Two 25cm*30cm oil painting frames
5m Ws2812b light tape
Arduino Nano 33 IoT
12V power supply

The production process

I first fixed the trimmed strips to the inside of a picture frame, and soldered them in series with positive pins, negative pins, and data pins.

After that, I used CHSVPalette16 function from the FastLed library to create my own color palette, while using the fadeToBlackBy function to control the fade effects of the Led strips.


The effect of not adding Ble control initially

​After that I used the p5.ble.js library and tried to control the light strip using the panel created by the p5.js library. During this time I broke two Arduino nano boards, they both worked fine at first, then failed to upload the Arduino code, and finally failed to display the Port port completely.


Play mode

AutoPlay mode

​There are still many problems and bugs in this project.

1. When the user clicks on a module on the interface of P5.js (each pixel in the simulated light strip), the position does not correspond to the position of the physical light. Also I did not simulate the process of light fade in P5.
2. I use ColorFromPalette(myRGBColorPalette, pos, brightness, LINEARBLEND) function in Arduino, when the user selects the color in P5, the pos in the Palette is sent to Arduino, but actually it doesn't go to be consistent, and errors occur in some colors.