One day I stepped foot into a strange land.. a strange time..
C++ Other C
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

At last my time trans-location side arm was complete! I quickly moved to my bedroom and moved the giant chest of drawers and fired at the large wall it once was previously obstructing... and lept in. I ended up at the 1964 worlds fair--a curious affair filled with technology that seemed like magic to my mind. And that's when a man dressed in a slim black suit, of the finest fabric I had ever laid eyes on handed me a pair of goggles. The ominous glow was unlike anything from my time, or the present one. The man held them firmly in his grasp for a brief moment and uttered, "You must find her," and slowly faded from existence.


Oculus Aethereum

Preview them in action here


  • Get the NeoPixel library and learn more about them at
  • Connect two (or more) Adafruit NeoPixel Rings together
  • Set the pin you connected them to in the code (Default is 4)
  • Add Spots, Wobblers, Pulsars, Circlers and Growers as you see fit in the themes file!
  • Adjust their speed, color, and amplitude for variation.
  • Upload the code using Arduino's software.

Annotated Source

Nerdy Notes for the Curious

The style of this code is based on a Model/View pattern: The models (another name for classes that deal with data only) take care updating their information, in this case, the wobble or position of rotation of a light segment. The model's don't need to know about how many leds there are in a circle. The Views gather their respective Models and render them to the NeoPixel strands.

This code is object oriented uses Pointers to objects. Read more about the C++ constructors at

The Spot class has virtual in front of its update() method, this makes sure the proper method is called on its subclasses instead of the original method.

The #IFNDEF SOMETHING_HERE lines you see in the header files solve an annoying situation in C/C++ where including a header in multiple places gives a warning that whatever is in it has been defined twice.