The day finally arrived! After a marathon work session on Saturday, I was able to take the staff to a party last night! The batteries held up great, the staff was a great hit, and everyone was asking about it and wanting to see what it did. Talk about inspiring!
There were naturally some ups and downs, with some wins and some losses:
- WIN: Never. Ever. Underestimate the power of HOT GLUE. I solved the ‘solder joints are not strong enough’ problem by embedding the LED strip ends in a few mm of hot glue. WIN!
- WIN: By repurposing a shipping container for my son’s new skate wheels, I was able to fashion an enclosure that would hold the Arduino Uno R3 and all the support wiring until my new Arduino Mini 05 arrived. It gave the staff a ‘navigation light’ look, but the glow of the board lights was sort of nice.
- WIN: Soldering irons can be used to make holes in plastic. Shhh, don’t tell anyone.
- OOPS: I made one major miscalculation. The battery mounts are custom formed blocks widh hand wound springs for tension. I put the tension spring on the BOTTOM of the mount, which means the batteries would push down on the spring and disconnect at the slightest bounce. I’m not looking forward to reworking that section, but this is a learning experience, no?
- OOPS: I didn’t get a chance to install a power switch, so there’s no ‘off’ state without pulling the cap and disconnecting the power leads. Oh well.
- WIN: The batteries lasted much longer than I expected. The ‘sparkle’ mode draws very little current (the algorithm has one in every 3 LED’s on, and the values it’s using are at 1/4 brightness:
uint32_t on = strip1.Color(random(64),random(64),random(64));
- WIN: the coded interrupt routine that uses the button to switch modes works perfectly. I could change patterns with a quick touch. I need some more interactive modes, but as a pure display item, total win.
- WIN? : I totally want to add more features and functions. A sound sensor so the staff can react to noise / music around it. A shock sensor (other than the batteries bouncing) so a tap on the floor will cause a ripple function or something. AN OFF SWITCH. More interesting patterns. An external USB port, etc etc. Many of these things are simple coding updates, but others will require research.
I’ll try and fix the battery tray problem by Halloween, but I think we’re in pretty good shape!
ETA Here’s a video of the staff in action.
5 thoughts on “Magic Staff – Takin it out for a spin”
Looks GREAT. Really nice work “at scale”!
A couple of items I’ll throw out there, speaking from some experience, and I’ll apologize in advance like this sounding like an ad for the FastSPI library, but we wrote it specifically for projects like this:
– Arduino’s standard “random(..)” library routine is wickedly slow. If you just need 8-bit random numbers, as is the case here, try “random8(..)” from the FastSPI library. If you’re calling it three times per pixel, it’s sort of a big deal. You can add entropy from any source you like, too, like ‘floating’ analog inputs, etc., unlike the Arduino library PRNG.
– You might also want to check out the HSV color options in FastSPI, e.g., leds[i] = CHSV( random8() /*hue*/, 255 /*saturation*/, 64 /*brightness*/); This will result in less pastel-y colors; they’ll all be fully saturated. Totally a matter of taste, but HSV is sort of a friendlier colorspace to work in a lot of the time. Also worth noting that fully saturated colors draw less current and use less power than desaturated colors or pastels.
Looking forward to seeing video, too!
@Mark – very good feedback, thank you! I do want to look at the FastSPI library now that the hardware platform is pretty much complete. The software side can be sort of seductive – I’m a programmer at heart, so it’s easy to just get sucked into coding on the thing, but I really couldn’t do that until the hardware platform was feature complete. I’m almost there!
There is a video linked in the posting – check it out – It has the drawback of showing hte ‘reset’ that happens when voltage drops too low when one of the battery trays is out of whack. I’ll get it fixed up soon and post some more!
Love the work you’ve done so far. I’m also building such a system, though I’m stuck with an 18mm internal diameter tube… Interactivity through the use of sensors (incl. gyro and accel.), is complimented through a radio link for streaming of live pixel data or just general mode selection.
I’ve spent a few years on this so far, on and off, so if you’d ever like to “talk shop”, drop us a line. We may be able to benefit from each other!
Hi there Tom – sure! I’m on Google+ most of the time, and I post like crazy there as well as logging the build details here. 18mm internal is very small. Since I purchased both my tubes directly, I sizxed them specifically to hold C cells inside the inner tube, then enough of a gap between the inner and outer to hold the LED strands. One drawback to this arrangement is I couldn’t put any fittings through the outer tube (it had to slide over the inner one), but it did mean the LED’s are well protected.
My ‘controls’ such as they are are currently on the globe at the top of the staff. When I switch to my Mini 05, that globe goes away, and I’ll have to come up with a different arrangement.
Yes, 18mm is indeed a bit of a squeeze. My application is performance art though, and these products are to be spun like a conventional fire staff, hence the tight profile.
They need to be comfortable to twirl through fingers, etc, whilst also being robust enough to withstand the large amounts of shock and vibration that they will encounter (this is enough of a design challenge in itself)!
You may be interested in exploring things like hall-effect sensors, or some of the Atmel QTouch (formerly Quantum) devices, or even IR proximity devices, in order to allow you to interact without breaking the wall of the tube.
I’ll get you on G+, and maybe we can have a talk at some point in the near future.
Keep up the project work, It’s nice to see a parallel train of thought!