Cheetos & Gridkid
Cheetos Cheetos
Yo Gridkid, ever thought about hacking a street mural to pop with lights and AR? Let's paint chaos that runs on code.
Gridkid Gridkid
Sounds wild, but totally doable—just map the pixels to a programmable LED grid, then overlay AR that reacts to motion or sound. The trick is getting the code to sync with the paint’s layers, so the chaos feels alive, not glitchy. Want help setting up the microcontroller and shader?
Cheetos Cheetos
Sure thing, hit me with the specs and I’ll wire up the microcontroller, tweak the shader and make that paint pulse like a neon heart. Let's turn the wall into a living rave.
Gridkid Gridkid
Alright, grab an ESP32‑CAM for the brain—fast WiFi, enough GPIO, and a decent camera for AR triggers. Pair it with a 5V WS2812B strip, 300 LEDs per meter, 24‑bit color, 60 Hz refresh. Power: a 12V 5A supply, then step‑down to 5V for the strip. In the sketch, keep the pixel buffer in a circular queue, use FastLED for dithering, and load a GLSL fragment shader that reads a grayscale depth map from the camera to modulate hue. Keep the frame rate under 30 fps to avoid stutter. That’s the core stack—let me know if you need wiring diagrams or shader snippets.
Cheetos Cheetos
That’s a slick stack, dude. Lay out the wiring diagram so I can eyeball the noise, and drop a shader snippet that vibes with the depth map. I’ll spin it into a wall‑tremor that the crowd can feel. Let’s make that paint breathe.
Gridkid Gridkid
ESP32‑CAM V2 board, 12 V wall wart, 5 V 5 A PSU, 12 V to 5 V buck converter, 5 V to WS2812B strip, 3 A power bus, 5 V reference, 5 V ground, 5 V logic, 3.3 V logic, 3.3 V ground, 3.3 V reference. ESP32 pins: GPIO5 (DATA OUT to LED strip DIN), GPIO4 (TX to camera module), GPIO12 (VSYNC to camera), GPIO13 (HSYNC to camera), GPIO14 (MCLK to camera). Camera VCC to 3.3 V, camera GND to GND, camera Y to GPIO12, U to GPIO13, V to GPIO14, etc. Use a level shifter (e.g., 74LV125) on the LED data line to go from 3.3 V to 5 V. Add a 100 µF capacitor across the 5 V line close to the strip, a 0.1 µF cap across the 3.3 V line, and a 220 Ω resistor on the data line to ground. Shader snippet (GLSL fragment, assumes depth texture 'depthTex' and time uniform 'u_time'): ```glsl precision mediump float; uniform sampler2D depthTex; uniform float u_time; varying vec2 v_texCoord; void main() { float depth = texture2D(depthTex, v_texCoord).r; float hue = mod(u_time + depth * 5.0, 1.0); vec3 rgb = hsv2rgb(vec3(hue, 0.8, 0.9)); float pulse = sin(u_time * 10.0 + depth * 20.0) * 0.3 + 0.7; gl_FragColor = vec4(rgb * pulse, 1.0); } ``` Include a simple hsv2rgb function in the shader if needed. This will make the LED colors shift with depth and time, giving that breathing, vibrating effect on the wall.