Help! Want to find the project on here of a rainbow between clouds of fluff

I saw a project on here where someone made for their kid a linear strip inside some kind of tubing with cloud fluff at either end so it looked like a ‘rainbow’ between two clouds. But searches for ‘rainbow’, ‘cloud’ etc coming up empty. Anyone remember this? Thanks!

Was it this?

https://www.instagram.com/p/BxJhfG_A2O5/

1 Like

Woah! ya thats the same idea. It was someone on this forum with a simpler version, but this works! enough inspiration I can fill in the gaps. thanks.

haha I’m just realizing you built it. It’s great!

Ugh, your whole page is awesome projects that now I want to make for me or the kid :slight_smile:

1 Like

Maybe this one, not as fancy as @Sunandmooncouture !

4 Likes

Yes! it was that one. Glad I asked though, cool to see @Sunandmooncouture projects.

1 Like

I didnt write any build notes but feel free to ask questions

Did you have to reinforce the neon LED strips to keep the arch? On mine the PEX tube is rigid enough and already formed into the curve that I didn’t have to do much of anything but cut and hot glue.

This was zip tied to a pegboard for a temp install but for permenant installs I superglue to neon to acrylic or polycarb sheets

https://www.instagram.com/p/CGtiIZtgcZT/

1 Like

Thanks! It came out nicely. I messed up and purchased a roll of 1/2" PEX tubing and my 1/2" APA102’s wouldn’t fit. So I got two straight sections of 3/4" PEX at Home depot. This required hand-bending then a tension string of fishing line between the ends (hot glued in place) to hold the tension into an arc.

Next Steps:
Find a cool ‘bouncing’ back and forth rainbow pattern
Add external button for toddler to turn on/off
Add button for changing between patterns

Basic BOM:
1M strip APA102 - https://www.sparkfun.com/products/14015 - $17.50
2x LED prigtail connectors - https://www.sparkfun.com/products/14576 - $3
USB power source - 5V/2A Wall wart I had on hand
1x Long USB cable from wall wart - https://www.amazon.com/dp/B013CX6XO8?psc=1&ref=ppx_yo2ov_dt_b_product_details - 7$ (white would have been better)
1x Pixel blaze
1x 3/4” Pex tubing - Home depot - recommend curved (don’t buy straight stuff for curved project…)
Craft Fluff - I asked my mom to give me some. YMMV with this option
Cardboard backing cut out of box on hand - https://opopop.com/
LOTS of hot glue
Popsicle sticks to rigidly hold 5 pixels of distance outside of PEX underneath the clouds



1 Like

Nice build! I guess I lucked.out that my pex tube was rolled up and had a hard curl, wasn’t straight.

The main pattern I had was a hacked version of KITT

// Want to learn how to code patterns like this? 
// This pattern has a YouTube video walkthrough:
// https://www.youtube.com/watch?v=3ugNIZ96UK4

leader = 0
direction = 1
pixels = array(pixelCount)

speed = pixelCount / 800
fade = .0007
export function beforeRender(delta) {
  var lastLeader = floor(leader)
  t1 = time(.1)

  leader += direction * delta * speed
  if (leader >= pixelCount) {
    direction = -direction
    leader = pixelCount -1
  }
  
  if (leader < 0) {
    direction = -direction
    leader = 0
  }
  pixels[floor(leader)] = 1
  
    // Fill pixels between frames. Added after the video walkthrough was uploaded.
  up = lastLeader < leader 
  for (i = lastLeader; i != floor(leader); up ? i++ : i-- ) pixels[i] = 1
    
    
  for (i = 0; i < pixelCount; i++) {
    pixels[i] -= delta * fade
    pixels[i] = max(0, pixels[i])
  }
}

export function render(index) {
  v = pixels[index]
  v = v*v*v
  hsv(index / pixelCount + t1, 1, v)
}

Then I had one with some lightning in the clouds

endPixels = 14
midPixelCount = pixelCount - endPixels*2


var t1
var p1 = array(pixelCount)
var p2 = array(pixelCount)


export function beforeRender(delta) {
  t1 = time(.03)
}


function renderMid(i, x) {
  h = (t1 + triangle(x)/2)
  s = 1
  v = 1
  hsv(h, s, v*.5)
}

function renderStart(i, x) {
  p1[i] *= .95
  if (p1[i] < .001)
    p1[i] = random(5)
  
  hsv(0,0,p1[i] - 1)
}

function renderEnd(i, x) {
  p2[i] *= .95
  if (p2[i] < .001)
    p2[i] = random(5)
  
  hsv(0,0,p2[i] - 1)

}


export function render(index) {
  rgb(0,0,0)
  if (index < endPixels) {
    renderStart(index, index / endPixels);
  } else if (index < endPixels + midPixelCount) {
    renderMid(index - endPixels, (index - endPixels) / midPixelCount)
  } else {
    renderEnd(index - endPixels - midPixelCount, (index - endPixels - midPixelCount)/endPixels)
  }
}
2 Likes