MAZE RUNNER inspired LED 16x16 matrix clock with 256 NeoPixel LEDs
Features:
16x16 matrix clock that you cannot read directly without knowing where you have to look. Some people i showed it had a really hard time to see it and some gave up trying it… :-P
The background is randomly generated in RGB colors every new hour
The digits of the clock seem to disappear in the background if you do not set a strong color for the numbers
Every minute after 30 seconds a little “maze runner” runs over the numbers and tries to escape ;)
A night mode option is available in the settings to turn off the clock at night time
The clock uses an ESP8266 that drives the 256 LEDs well
The time is read from an NTP server on the internet. You can set the NTP server and time zone that fits your time
The color of the maze runner, time digits and letters can be set in the settings
In general the code is capable of showing letters too on the 4 digit segments. The clock uses this during the startup phase to show f.e. the connection status to your WiFi and a logo
During startup the text “WIFI" is shown in red until the clock is connected and switches to green color then
You can join your WiFi network with the know “WifiManager” for Arduino. See notes below
In case the clock can not reach the set time server a red text “TIME” is shown and the ESP will reboot to try again
Use the Arduino IDE to upload the code to the D1 mini. Follow f.e. this guide to see how
You will need 3 additional libraries: “Adafruit Neopixel’, “WiFiManager” and “TimeLib” which you need to add in the Arduino IDE library manager
In the code you should check the settings of the sketch in the file “settings.h”:
//####################################################################################################################################################// Adjust program settings here:// ##############################define BRIGHTNESS 128 // Brightness between 0 - 255 (128 was close to the limit for my USB port power outlet... Do not set this to high on your PC USB port...)#define BRIGHTNESS_OFF 0 // Brightness between 0 - 255 when using night mode is used#define NIGHTMODE_USED 1 // Turns Night Mode on (1) or off (0) after the set times below:int NIGHTMODE_START = 22; // Night Mode Start time: At the default 22 o'clock (value 22) the brigtness will be set to the value BRIGHTNESS_OFF = 0int NIGHTMODE_END = 7; // Night Mode End time: At the default 7 o'clock (value 7), the brigtness will be set to the value BRIGHTNESS = 128#define RESETWIFI 0 // To DELETE the WiFi settings set to "1" and upload the sketch to the ESP. Set to "0" again and upload once more#define SHOWSTARTTEXTS 1 // Show (1) or do not show (0) the "AWSW" "MAZE" "CLOCK" text at startup// Color of the MAZE numbers:#define COL_MAZE_NUMBER COL_MAZE_CYAN // Color value of the MAZE numbers (RGB = Red, Green, Blue) --> 0, 255, 128 is CYAN = COL_MAZE_CYAN#define COL_MAZE_RUNNER COL_MAZE_RED // Color value of the MAZE numbers (RGB = Red, Green, Blue) --> 255, 0, 0 is RED = COL_MAZE_RED// Available colors as variable: // COL_MAZE_RED = Color RED// COL_MAZE_GREEN = Color GREEN// COL_MAZE_BLUE = Color BLUE// COL_MAZE_YELLOW = Color YELLOW// COL_MAZE_CYAN = Color CYAN// COL_MAZE_OFF = Set LEDs OFF// Some functions for testing:// ############################define USELEDTEST 0 // Show the RGB LED test on startup#define USELETTERTEST 0 // Show the digits letter and runner test on startup#define TIMEDATESERIAL 0 // Show current time and date in serial monitor//####################################################################################################################################################// LED matrix settings:// ####################define PIN D2 // D1 mini LED output pin#define NUMPIXELS 256 // Number of pixels on the LED matrixAdafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);//####################################################################################################################################################// Adjust time settings here only:// ###############################// NTP Servers:static const char ntpServerName[] = "us.pool.ntp.org";//static const char ntpServerName[] = "time.nist.gov";//static const char ntpServerName[] = "time-a.timefreq.bldrdoc.gov";//static const char ntpServerName[] = "time-b.timefreq.bldrdoc.gov";//static const char ntpServerName[] = "time-c.timefreq.bldrdoc.gov";const int timeZone = +2; // Central European Time//const int timeZone = -5; // Eastern Standard Time (USA)//const int timeZone = -4; // Eastern Daylight Time (USA)//const int timeZone = -8; // Pacific Standard Time (USA)//const int timeZone = -7; // Pacific Daylight Time (USA)//####################################################################################################################################################
Supports for the “Matrix Holder" part from the bed used
No brim
No special settings
Assembly of the clock:
During printing you will have enough time to wire the parts and upload the code
The 159x159mm piece of paper should fit very well on the 160x160mm “matrix” part
Please make sure that the piece of paper lays really flat on the matrix part and does not bend because this will disturb the look. I used a little bit of glue stick to fix it on the matrix part
Push the matrix part with the paper in front into the “front” part. Please be careful not to press on the paper on the front to prevent ugly dents in the paper
On the back of the matrix part with the little cutouts the 16x16 LED matrix is placed flat
After that the 16x16 LED matrix is held in place with the “matrix holder” part. This part will click in place in the front with the little notches
For wiring see the table in the text and have a look in the pictures please. I used the cables that came with the LED matrix
Slide the D1 mini to its new home in the “matrix holder” part
Plug the micro USB cable first through the “lid” part and then into the D1 mini
Secure the USB cable in place with the cable tie
Turn on the clock and check the orientation of the 16x16 pixel matrix
Depending on the orientation of matrix click the “lid” part on the back of the “front” part and close the case. The wall hook should face to the top of the back ;)
Press the 4 little “foot” parts in the back of the lid to gain some space to your wall to hang the clock straight with the USB cable coming out of the back too
See pictures please
First start of the clock:
Plug the other side of the USB cable into the power supply
After a second you should see the LEDs come to work
The clock uses the ESP8266 "WiFi Manager" to be able to connect to your WiFi without saving your WiFi credentials in the code directly
After the clock logo was shown it will show “WIFI” in red color and waits for your input
On your PC, tablet or smartphone please have a look into the WiFi list of your device and search and connect to the WiFi called "MAZE LED CLOCK". No password is required to connect to it.
In case your device does not automatically open the browser with the WiFi Manager page please open your browser now and navigate to "http://192.168.4.1" to set the Wifi credentials.
From there on the WiFi configuration should be straight forward.
After saving the credentials the ESP will join your usual WiFi network and displays the time on the LEDs. Setup is finished then. The temporary Wifi "MAZE LED CLOCK" is removed.
In case you entered your WiFi credentials not correctly the ESP will restart and open the temporary WiFi called "MAZE LED CLOCK" again to correct the values. You might need to navigate to the page "http://192.168.4.1" manually again.