When Adafruit first introduced the 60 element Neo-Pixel ring in March 2004, the obvious choice for a project was to build a clock. By selectively lighting certain pixels around the ring you can depict analog time in a digital manner.
Because the SAMD21 processor used in a Feather M0 boards has a built-in real-time clock, it's easy to keep track of time once you start the clock. The "RTC_Zero" library provided by Arduino.cc makes it easy to set and read the time using this built-in real-time clock hardware.
We give you a variety of ways to set the time and control various options on the clock. The simplest method is a set of 4 touch control pads using the Adafruit_FreeTouch library. But if you don't want to bother to take the device down off of the wall, we've also included the capability of using an infrared remote, or you can connect to the device using the Adafruit Bluefruit Connect app available for iOS or Android.
Once we designed the clock, we decided it would be nice to have it chime and/or play music every hour or quarter hour. You can optionally add the Music Maker Feather Wing with 3W amplifier and a small pair of speakers. Not only does this give you the ability to play chimes and/or music, by recording a small set of spoken phrases, the clock can also speak the current time. Furthermore we have implemented a voice prompt menu system for setting a variety of options. This project serves as a demonstration of how you could add a voice prompt menu system to any project where you have to set options but do not have any sort of text display available.
The MP3 files for the voice output and music output are stored on an SD card on the Music Maker Wing. This tutorial and code has been updated to allow you to drag-and-drop MP3 files onto the device by connecting it to your PC where it will appear as a USB flash drive.
We've added a series of animated color patterns that can be displayed at the top of the hour. You can set an alarm to go off at a particular time. You can play any MP3 music file at the top of the hour. We also give you the option to set up nighttime hours so that the volume level is lower and the display is dimmed at night. There is even option to add a photocell that will lower the volume and brightness if the room is dark rather than using a time-based volume and brightness level reduction.
The code written in C++ for the Arduino IDE is set up with a series of conditional compile flags that are easy to change so that you can turn off or on any of the features we have described. So if you're going to use Bluetooth but not infrared or touch controllers and don't have a photocell sensor, it's easy to simply set a flag or two and recompile the code for just options you've chosen to use in your project.
We have included a design for a 3D printed faceplate and frame that includes a wall hanger or an optional tabletop stand. Not only have we included STL files, we also include a Fusion 360 model so that you can adapt the design to your own liking. Or you are free to build any kind of faceplate or case of your own design using any other materials. Just mount the ring and electronics in it as you like.