The
HypnoLamp

By Zach Archer

Interactive Development

My awesome job

I mostly write original software, and work with off-the-shelf hardware:

  • Multitouch screens
  • Mobile phones
  • Projectors
  • Leap Motion

The road to hardware development

July 2012

Wearable Computing Hackathon
@ Geoloqi (now Esri R&D)

Hacked on an Arduino LilyPad ProtoSnap

RGB LED, temperature sensor, light sensor, buzzer, POV effects, OMG amazing

August 2012

ToorCamp — Washington Coast

Built a TV-B-Gone, Arduino shields,
heard the good news at the Church of Robotron

August 2012

ToorCamp — Washington Coast

Bought LPD8806 LED strips from Jeff Records (OlyMega)

...But now what?
Put them inside a shirt?
Make DJ Gauntlets?

September 2012

Portland Mini-Maker Faire

Jeff put LEDs inside a frosted glass lamp.

Hey, I bought a similar lamp at Ikea.

I could add some knobs.

The Proto-Prototype

The plan

  • 3x6 LED matrix
  • Mount them in the lamp, somehow
  • Add some controls
  • And sweet code

 

Math + creativity + electronics == smells rad


This will probably work.

The plastic bits

  • Semi-clear acrylic (scrap material from a workshop)
  • Half-domes from TAP Plastics
  • For any two plastics X and Y, there is only one correct adhesive Z

The LED matrix



PROGMEM prog_uchar
ledOrder[] = {
  6,  5, 17,
  7,  4, 16,
  8,  3, 15,
  9,  2, 14,
  10, 1, 13,
  11, 0, 12
};

Hardware takes forever

  • Acrylic has a thickness. Your platonic model of a box is invalid.
  • It's two objects connected by a ribbon cable
  • They're not drill accidents, they're "bonus holes":

Now Zach will dim the screen and

Ignite The Lamp

What makes it so hypnotic?

Inspiration:

  • Fire (fireplace, campfire, fire pit)
  • Falling leaves, snow
  • Flowing water

How to implement these wonderful effects

Not so much

Since the lamp occupies my living room, I made a conscious decision to avoid:

  • Disco
  • Rainbows
  • Strobing
  • Unicorn ravers plundering a clown factory

The magic is in the code

Smart code can compensate for technical limitations (such as the low resolution of the LED matrix).

Here's the firefly from the proto-prototype. Note the interpolation across LEDs.

 

Apparent complexity emerges from simple rules

Campfire: Each LED tweens at a different rate. The rate is determined by:

led_index XOR 37

Technology

  • LED strips: One long strip of LPD8806 (SPI)
  • Microcontroller: Adafruit BoArduino
  • Board: Adafruit Perma-Proto
  • Power supply: Regulated 5V 2A
  • Touch pads: Adhesive copper tape
  • Code: Floating point math, in HSV color space (mostly)

This was the best technology for the HypnoLamp.

Why?

This technology is easy to use.

The hardware is just a canvas for ideas.

I want to focus on the art.

Adafruit BoArduino

  • I had prior experience with it
  • Snaps into a prototyping breadboard
  • 60 updates per second, with no performance issues (but only 32k of RAM, so watch out)
  • Fairly cheap
  • Decent IDE

If you're still not convinced

  • Copper tape comes from the hardware store
  • Floating point numbers are better than integers for creative coding (...usually)
  • Adafruit supplied LPD8806 libraries, with lots of sample code
  • I can go home early

Premature optimization is bullshit

More thoughts on the creative process

“Beautiful Code” my ass

During the creative phase:
Your solution should be good enough and no better.

Cheat more!

Experiment more!

Prototypes are expendable!

Overcoming Resistance

The War of Art, by Steven Pressfield

Resistance is the evil force that blocks your creativity

Productizing

Frequent reaction to the HypnoLamp:

The competition

$124.99

Hard decisions

  • Price point?
  • Hackable? ARM or AVR?
  • RAM for storing images & video?
  • What shape? Glass or plastic?
    • Tall prism looks weird from the sides & back.
    • Mount the LEDs on a central column?
  • Open source? Yes, because:
    • I always have new ideas for code + graphics
    • And, manufacturing is probably non-trivial
  • Funding?
    • Kickstarter: What if the cost exceeds the funding?

The interface

What's the best interface?

  • Probably not 3 knobs.
  • Should be inexpensive, for mass production.
  • Wi-Fi?
  • Something magical and irresistible?

The interface challenge

The HypnoLamp isn't a single color, it's dynamic. Think in those terms.

The controls should have effects that people notice.

Touchless Controller

Supports 3 gestures: Swipe, push/pull, and spin.

PROTIP: To use the touchless controller, plug it in.

(artist's conception)

Future interface?

  • Two buttons: Yes, No
  • Write an algorithm that writes algorithms
  • Magically produces better animations over time, given enough input
  • What could possibly go wrong?

Not Productizing

Manufacturing is probably non-trivial

Reward + time + stress > my_day_job ?

  • Reward: Does it put food into my mouth?
  • Time Vampirism: Will I ever see my friends again?
  • Growth, Art, Experimentation: Free time to make new, improved stuff?
  • Stress: Will my head explode?

Hard work is hard

— Epic chat with Matt Rooney

Just make more art?

The prototype took 5 months.

I have new ideas every day.

One-man projects are unusual. Build a team?

“You can do anything, but not everything.”
― David Allen

THE END

...or just the beginning?

hypnolamp.com

zacharcher.com

Slides made with Reveal.js