My name is David Littell.  I'm an embedded systems engineer with about 35 years experience with microprocessors, computer hardware, software, and systems of all sizes.  I was one of "those" kids that was constantly taking apart (and sometimes even fixing!) all things electronic.  I grew up spending my allowance at Radio Shack for kits, books, and parts and my nights with fingers glued to shortwave radios.  At age 15 I built a Processor Technology Sol-20 from the kit - one of the only kids in my home state to have a computer (in 1978).  It worked at first power-up.  (I still have it and it (probably) still works - resurrection is yet another item on the bucket list.)

Fast-forward a few decades and I now have a daughter that loves when Daddy builds things for her.  I had noticed the NeoPixels at Adafruit and thought they'd be interesting to work with, so I ordered a NeoPixel Ring-12 and started studying the Data Sheet.  Slippery slope, that...

One idea led to another led to an avalanche of "Hey! This might actually work!  What about this…" and the next thing I knew I was learning KiCad to design my first board to drive NeoPixel rings to make a desk clock for my daughter.  Enter Madison's NeoClock:

Well, these are the famed NeoPixels so I wanted to use color in a sane but interesting way.

And wow will they light up a room at night!  Sleeping in sunglasses isn't all that comfortable, so what can be done about that?  Should it throttle back based on only time or can it somehow know the brightness around itself?

Where to begin?  Where the rubber meets the road, I think:  creating a bitstream for the NeoPixels.  There are many options that work well but I already had a few Microchip PIC's that I'd been using in other projects.  Can this do the job?  Time to visit those WS2812 and PIC Data Sheets...

This guide was first published on Aug 18, 2014. It was last updated on Mar 08, 2024.

This page (The Backstory) was last updated on Aug 14, 2014.

Text editor powered by tinymce.