Introduction: Arduino Word Clock Mini
Arduino Word Clock Mini- Anniversary Clock
Relatively easy to build Word Clock using a Arduino Nano and four MAX7219 32mm Dot Matrix Display Modules
Choice of styles, picture frame or Perspex cube with various base options.
Specs
Mini Arduino Word Clock with minute resolution of time in words and linear display of seconds. Uses an Arduino Nano and Four MAX7219 32mm Dot Matrix Displays giving 256 LEDs the same as my large Word Clock
There are modes, digital clock, analogue clock, temperature & humidity, & also three games, Game of Life, Simon & Tetris.
The clock can be stand alone or run as a slave off a Master Clock if required. In stand alone mode the clock runs off it's built in temperature compensated real time clock with an accuracy of ±2ppm from 0°C to +40°C
When running as a slave off a Master Clock time is synchronised on every 30 seconds past the minute. There is an option for PIR/Microwave Radar Sensor control so the clock automatically turns off when no one is in the room.
The Clock display measures 64mm x 64mm and is designed to be desk mounted although the picture frame version could go on a wall. There are touch pads in each corner to setup and control the clock. A mini USB socket allows software programming in situe.
Plugging in an Android phone/PC allows setting of the time and choice of what mode to display on startup. Time setting can also be carried out in the digital clock mode using the touch buttons.
The clock draws 20mA (all LEDs off) to 40mA (LEDs max brightness) from it's 12v supply.
There is a choice of designs. Picture Frame Clock pic 1 or a Perspex Cube Clock pic2. Each design uses a different Veroboard layout but shares the same code.
Full details also available on my Word Clock Mini web site.
Credits
This clock is a miniaturised version of my Word Clock and is in turn based on the original Word Clock by Wouter Devinck full details on this Instructable and the "Catalan" Pijuana Word Clock software based on Wouter Devinck's clock (this is a fork off the original Wouter Devinck design) here GitHub.
Step 1: Clock Type Examples
Picture Frame Word Clock
Picture 1.
The picture frame clock is the easiest and cheapest of the clocks to build. it just requires a plain black 6"x6" (150x150mm) picture frame with a white card mount reducing the frame size down to 4"x4". Enough to see the display with a bit of space all around. The Perspex glass was replaced with real 2mm glass as the Perspex was attracting too much dust.
On the rear of the frame I have added a box from thin plywood 170mm x 170mm x 40mm deep. You may be able to get a shadow box with the same size box on the back.
Perspex Cube Word Clock
Picture 2.
The Perspex Cube clock is a bit more tricky to build as there are 2 Veroboards to build along with a number of holes to be drilled in the Perspex case and base. An cheaper MDF base could also be built and this can also house a PIR instead of a Radar sensor in the main case and the DHT22 temperature & humidity sensor.
The Perspex case and 20mm Perspex base each cost more than the Picture frame alone.
Picture 3 shows the relative sizes of the Mini word clocks compared to my original clock.
Step 2: Perspex Case Option
Perspex Case Option
With Radar Controlled display and PWM LED backlight.
There are two case styles a Picture Frame or a Perspex Cube.
The 100mm x 100mm Perspex Cube can be stand alone or have a MDF base to house the Temperature/Humidity sensor and also a PIR to blank the display when no one is in the room. A 20 mm thick Perspex base can also be fitted see picture 1 above. In this case the temperature/humidity sensor is fitted inside the case along with a Microwave Radar Sensor RCWL0516 to sense movement.
Picture 2. Transparencies are fitted to the sides, rear and top and can be plain or have messages printed as required. These Inkjet Transparencies made from the original Wedding certificate and original invites. Fitted to sides of the clock these are illuminated by the on board LED.
Picture 3. A LED in the rear illuminates the transparencies at night controlled by the PIR/Radar sensor as required.
Step 3: Picture Frame Option
Picture Frame Option
Picture 1 I have used a plain black 6"x6" (150x150mm) picture frame with a white card mount reducing the frame size down to 4"x4". Enough to see the display with a bit of space all around. The Perspex glass was replaced with real 2mm glass as the Perspex was attracting too much dust.
Picture 2 On the rear of the frame I have added a box from thin plywood 170mm x 170mm x 40mm deep.I have used Mitre Glue (picture 3) to fix the box together then cut and glued corner braces from wood off cuts.
The box lid is fixed by small wood screws to these corner braces. The box is fixed to the frame with 2 angle brackets I cut from some angled aluminium.
The touch sensors can be seen at the rear of the frame with Perspex covers.
Wooden feet are cut from blocks of wood and hold the frame at an angle on the desk or table. Rubber feet are glued to the wooden block feet to stop the clock slipping on the desk or table top.
As this clock is for a first wedding anniversary a label is attached to the back behind a Perspex sheet. Not shown in this photo are the 12v power lead and short USB cable coming out of the rear of the box.
Picture 4. The dot matrix displays are fixed to show through the front of the card mounts. On the completed clock
the LEDs are fixed behind the letter mask and a sheet of dark neutral density Perspex sheet and will only be visible when an LED is on illuminating a letter on the mask.
Step 4: Touch Button Controls
On the Perspex case version there are 5 Touch Buttons. One is located on the back of the case and just sets the backlight On or Off.
The other four touch buttons are located around the four corners of the sides of the display. Picture 3 view from rear of case with case transparencies removed showing touch button locations. These buttons are repeated on the other side as well.
Unless in a sub menu the "top left" button steps to the previous display mode and the "top right" button steps to the next display mode.
When a touch location on the case is touched the LED indicator on the touch button lights while you are touching it to indicate it is active. Picture 2 touch buttons glowing behind the main display to show their locations. The buttons only light when touched, normally they are off.
Picture 1 Lopped animation showing touch buttons in use.
1 top left button steps from "Word Clock" mode to the previous mode "Message display" 2 top right button steps from "Message display" mode back to next mode "Word Clock" 3 in "Word Clock" mode pressing the bottom right button turns the PIR/Radar Module Off "PIR NO" is displayed for 2 seconds 4 in "Word Clock" mode pressing the bottom left button turns the PIR/Radar Module On "PIR ON" is displayed for 2 seconds
Picture 4 The picture frame version has four touch buttons located on the rear of the main frame on each corner.
Buttons are activated by gently squeezing a corner between your thumb and index finger.
Step 5: Touch Button Controls
The touch buttons have different functions depending on what mode the clock is in, see chart below.
The perspex Clock has a 5th button in the rear of the case to turn the backlight LED On & Off
Step 6: Display Modes Clock & Utilities
The clock has three time modes word clock, digital clock, analogue clock and a temperature & humidity mode and also three games, Game of Life, Simon & Tetris.
It also has a message mode where a message is displayed on start up or if mode 1 is selected. As this is an 1st Wedding Anniversary Clock the start up message shows the wedding date and also the names of the bride and groom.
The display modes are the same on the picture frame clock or the Perspex Cube clock.
Clocks/Utilities
Picture 2 Mode 1 Message Preset looped message played on start-up or if mode 1 is set
Picture 1 Mode 2 Word Clock
Time displayed in words and linear seconds shown on bottom of display
Picture 3 Mode 3 Digital Clock
Digital clock with linear seconds on bottom of the display
Picture 4 Mode 4 Temperature & Humidity Display Mode
Picture 5 Mode 5 Analogue Clock
Analogue clock with linear seconds
Step 7: Display Modes Games
Picture 1 Mode 6 Game of Life
Conway's Game of Life
The universe of the Game of Life is an infinite two-dimensional orthogonal grid of square cells, each of which is in one of two possible states, alive or dead, or "populated" or "unpopulated".
Every cell interacts with its eight neighbours, which are the cells that are horizontally, vertically, or diagonally adjacent. At each step in time, the following transitions occur: Any live cell with fewer than two live neighbours dies, as if caused by underpopulation. Any live cell with two or three live neighbours lives on to the next generation. Any live cell with more than three live neighbours dies, as if by overpopulation. Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction.
The initial pattern constitutes the seed of the system. The first generation is created by applying the above rules simultaneously to every cell in the seed births and deaths occur simultaneously, and the discrete moment at which this happens is sometimes called a tick (in other words, each generation is a pure function of the preceding one). The rules continue to be applied repeatedly to create further generations.
Picture 2 Mode 7 Simon Game
Simon memory game
When entering your sequence double tap the last entry to end your turn.
Picture 3 Mode 8 Tetris
Tetris is the Soviet tile-matching puzzle video game released in June 1984.
Step 8: Components
Pic 1& 2 16x16 LED Matrix/MAX2719 module - 4 off
These will need to be modified before use.
Pic 3 Microwave Radar Sensor RCWL0516 - 1 off
Used on the Picture Frame Design or when using a Perspex base on the Cube Clock
Pic 4 PIC Module 1 off
Only used if an MDF base is used on the Perspex cube clock
Pic 5 MP1584 PSU module 1 off
This DC/DC step-down voltage converter is based on MP1584, it converts input voltage between 4.5V and 28V into a smaller voltage between 0.8V and 18V, capable of driving a 3A load with excellent line and load regulation.
Pic 6&7 TTP223 Capacitive Touch Switch Module 4 off Picture frame design or 5 off Perspex Cube
The TTP223 is a touch pad detector IC which offers 1 touch key built into a tiny module 15mm x 11mm that can be fed from a 2.5 to 5.5v PSU. The touch detection IC is designed to replace traditional mechanical push buttons and works very well through Perspex and glass.
Pic 8 DS3231 RTC (real time clock) 1 off
The RTC uses a DS3231 AT24C32 I2C Precision Real Time Clock Module with an accuracy of ±2ppm from 0°C to +40°C. The module comes supplied with a Lithium-Ion rechargeable battery but I use a non rechargeable battery so have removed resistor R5 from the module as below.
Pic 9 AM2302 DHT22 Temperature & Humidity Module 1 off
The AM2302 is a capacitive humidity sensing, digital temperature and humidity module and sends data over 1 wire to the Arduino. I have used the module form that includes the resistor across the 5v to output pin.
Pic 10 Arduino Nano 1 off
The are a few other electronic components required see Schematics and Veroboard layouts for details.
Step 9: Construction Display Mask
The display mask is printed out on inkjet transparency paper.
The mask is drawn up in Inkscape. Inkscape is professional quality vector graphics software which runs on Windows, Mac OS X and GNU/Linux.
It is used by design professionals and hobbyists worldwide, for creating a wide variety of graphics such as illustrations, icons, logos, diagrams, maps and web graphics.
I used the original file from my large word clock and scaled it down in Photoshop so the letter border is 6.2 cm square. The black border is then added by increasing the canvas size. I add the extra black border at the bottom to allow for adjustment over the LED display. To create your own mask use the original Inkscape file included here, modify it then scale it down.
Attachments
Step 10: Construction Frame Layers
Picture 1 Frame, with White Mount and glass fitted
Picture 2 Frame removed and a sheet of neutral density Perspex is cut to the same size as the mount/glass.
This is fitted behind the mount.
Picture 3 Frame mount and glass fitted but Neutral density Perspex sheet removed to show Vero board and display matrices.
Picture 4 White mount and neutral density Perspex removed and frame shown semi transparent to reveal how the Vero Board sits within the glass rebate in the frame.
The wooden box at the rear of the clock fits up to this rebate allowing the vero board to be removed.
Picture 5 Neutral density sheet fitted in place. LED Matrix has gone black and disappeared. Layers in this order- Frame, glass, White Mount board, Neutral density Perspex, Letter Mask on inkjet transparency, Vero Board. Note bolts through Neutral density Perspex sheet and Vero board only.
Picture 6 All layers in place and display on. The LEDs shine through the letter mask and are visible in the frame.
All layers are held in place in the frame by the frame nails on the inside of the rebate.
Step 11: Construction Perspex Case
The 100mm x 100mm Perspex case has 5 sides and a removable base and was purchased from Amazon here.
Picture 1 & 2 The Perspex case can be left clear or be fitted with transparencies containing messages or pictures.
These are backlit by an LED that can be PIR/Radar controlled if required.
Picture 3 & 4 The case has a dark neutral density Perspex sheet fitted to the front. The LED matrixes are fitted against this with the neutral density sheet hiding the unlit LEDs from view.
Picture 5 Various bases can be fitted to the case as required in this case a 20mm thick Perspex Sheet.
Picture 6 MDF base fitted to the clear case. The display Veroboard holding the LED matrix is bolted to the front of the case with the neutral density sheet in front. The main Vero Board can be seen fitted to the base of the case and holds the Nano and other components. The PIR and temp/humidity sensor are fitted to the case front and base respectively. If the clear Perspex base is used the PIR is replaced by a Radar module as it will be glued to the roof of the case.
The base of the Perspex case is screwed to the MDF base or bolted to the Perspex base both through the main Veroboard. The Perspex case is then fixed in place in three places .
Picture 7 detail of case fixing. There are two of these on either side of the case. The steel washer on the outside of the case remove for clarity.
Picture 8 detail of 3rd case fixing. Again the steel washer on the outside of case remove for clarity.
Step 12: Construction RTC Modification
RTC Modification
Modification of DS3231 AT24C32 I2C Precision Real Time Clock Module
My clock uses a DS3231 AT24C32 I2C Precision Real Time Clock Module.
The module comes supplied with a Lithium-Ion rechargeable battery see diagram picture 3 above. I use a non rechargeable battery so have removed resistor R5 from the module as picture 1 & 2.
Picture 4 shows the modified schematic.
Warning.
This step is optional and I only do it as I don't want the risk associated with charging Lithium-Ion batteries im my clocks. The are discussions on some forums about the suitability of this module design for charging these batteries.
Step 13: Construction Modifying the MAX2719 Display Modules
The original design of this clock used a custom built PCB. To use the standard MAX7219 modules with the software six connection need to be changed on each of the MAX2719 modules.
This could be done in software but instead of working out the software rotation I found it quicker to change the wiring to match the software. If you want do it in software and get it working please let me know and I will modify my code.
Picture 1 & 2 The modification is quite straightforward. First of all bend the following LED Matrix pins 90°, the top pins up and the bottom pins down. Pins 16, 15, 3, 4,10 & 11
Connections to make
LEDA to Dot Matrix Pin 16
LEDB to Dot Matrix Pin 15
LEDG to Dot Matrix Pin 3
LEDF to Dot Matrix Pin 4
LEDE to Dot Matrix Pin 10
LEDC to Dot Matrix Pin 11
Picture 3 The six wires are soldered to the back of the LED matrix first.
Picture 4 Take the six wires down through a mounting hole of the PCB.
Picture 5&6 Finally solder the wires to the LED pins on the PCB.
The wires soldered on should correspond to the pins bent pins on the LED Matrix.
The modules are rotated as they are fitted (again this was the original design due to physical constraints in the case) see pictures 7 & 8 front and rear views.
Picture 9 Front view of modules with dot matrix displays unplugged
Step 14: Construction Testing the Modified MAX7219 Modules
MAX7219 Dot Matrix Module Wiring Test program
I have modified the Word Clock sketch to enable the MAX2719 Module to be tested after the wiring mod. All this program does is light each LED in turn from the top left to the bottom right of the matrix. See animation 1.
Picture 2 Just connect 5 wires to the NANO and MAX2719 Module and power the NANO from it's USB port.
Load the sketch from the enclosed zip file and let it run. Test each module in turn.
Picture 3 Once all the Modules are modified and tested they can be plugged into the Vero Board.
A wooden frame is built around the edges of the displays to hold them tight together so the LEDs line up with the words.
Depending on your Veroboard this may not be required. I found the LED matrixes did not line up exactly making it hard to get the Letter mask in place over the LEDs later on.
The frame is just thin wood bonded at the corners with mitre adhesive as used in the rear box build.
Attachments
Step 15: Construction Module Interconnections
Module Interconnections
The diagram shows how the modules are connected. Most modules connect directly to the Arduino Nano.
The MAX7219 boards only connect to the NANO via module 01. The other modules are daisy chained together. Each 8x8 LEDs matrix is then connected to a MAX7219 module.
Keep the distance between the NANO and the 1st MAX7219 module and MAX7219 module to modules as short as possible.
Also make sure you supply power to both ends of the daisy chained MAX7219s as most of the power is drawn by this part of the circuit.
Four Touch sensor modules are required unless a 5th is used on the cube clock design to control the LED backlight.
Depending on the chosen design either a PIR or Radar Module will be required.
Step 16: Construction Veroboard Layout Picture Frames Clock
Veroboard Layout Picture Frame Clock
NOTE. Any horizontal mounted connectors will need the tracks cutting in between the holes with a craft knife.
The picture frame style has 1 single board whereas the Perspex Cube design has 2 boards.
Picture 1 Picture Frame Veroboard Layouts Board showing minor components, module socket locations and 5v/0v runs. Note LDR connector, preset R, DHT22 and touch sensor connectors are mounted on the rear of the board. Mounting bolts shown will attach via the neutral density display filter. Any horizontal mounted connector will need the tracks cutting in between the holes with a craft knife- see rear view.
Picture 2 Board layout with all modules barring LED matrixes in place. Note MP1584 mounted vertically and RTC mounted vertically and bent at an angle to be level with the top of the LED Matrixes.
This will keep it clear of the Neutral density Perspex sheet when fitted later. The battery holder is de-soldered from the RTC and mounted on the back of the Board. This allows for easy battery change by just removing the back cover on the working clock. The Microwave motion detector is fixed off it's 3 pin mounting socket with support from some hot melt glue.
Picture 3 LED matrixes fitted in place on the MAX2719 boards. Note the thin wooden support frame on the outside of the LED Matrixes to hold them tight in alignment together.
Picture 4 Finally the inkjet transparency with the letters is placed on top of the LED matrixes. Note not shown this is cut-out of the sheet with large tabs top and bottom to allow for alignment once the Neutral density Perspex sheet is bolted in place.
Picture 5 Rear of the Veroboard.
Note the preset resistor and RTC battery holder mounted on the rear for easy access when the rear cover is removed. Similarly the connectors for the 4 touch sensors, DHT22 and LDR are also mounted on the rear of the Vero Board.
NOTE. Any horizontal mounted connectors will need the tracks cutting in between the holes with a craft knife.
Enclosed zip file contains all the Veroboard layouts full size.
Attachments
Step 17: Construction Veroboard Layout Perspex Case Clock
Veroboard Layout Perspex Case Clock
There are 2 Veroboard for this style of clock base board and display board.
Picture 1 Shows the Base Board. Note the backlight control touch sensor module mounted to touch the rear of the clock case.
Picture 2 Base board with modules.
Note 1 with an MDF base the DHT22 and PIR modules are mounted in the base with cables routed via the cut-out in the board.
If a Perspex base is used then the DHT22 is mounted direct to the socket. This will measure the temperature/humidity within the case not the room so higher temperature readings will be expected.
Note 2 some modules are mounted vertically.
Picture 3 shows the rear Veroboard layout.
Display Board
Picture 4 Bare board showing module connectors (MAX2719 and touch sensor connector to main board are mounted on the rear of the board).
Note, any horizontal mounted connector will need the tracks cutting in between the holes with a craft knife- see rear view.
Picture 5 Display board with MAX2719 boards in place. Note the orientation of each board.
Picture 6 LED Matrixes fitted to MAX2719 boards. The wooden frame holds the LED matrices in alignment.
Picture 7 Finally the inkjet transparency with the letters is placed on top of the LED matrixes.
Note not shown this is cut-out of the sheet with large tabs top and bottom to allow for alignment once the display board is bolted to the front of the Perspex case.
The Touch sensor modules are shown in position vertically. These will be fitted with some foam single sided tape and bent angled out from the board so they are in contact with the case. This allows the touch sensors to work through the Perspex case.
Picture 8
Rear of the display board showing the Touch Sensors and MAX2719 to main board connectors mounted on this side of the board.
Note sockets shown for illustration only- cable connections to the main board are soldered direct at this end.
Any horizontal mounted connector will need the tracks cutting in between the holes with a craft knife.
Picture 9
Display Board Wiring Showing Touch Sensors on side of the Board.
I have not used socket connectors for the MAX2719 and Touch Sensors to main board wiring as shown in the rear Veroboard layout above but have soldered the wires direct to the boards.
The 2 black plugs shown are these two connection that are plugged into the main board. Note the black cotton ties supporting these two connection cables near the solder joints. This will prevent the cables from breaking away at the solder joints. The aluminium angle bolted to the top and bottom of the Veroboard stop it distorting around the LED matrixes when the mounting bolts are tightened. You may find you don't need these brackets!
Picture 10
The main board is fixed through the case into the base. Fix with Wood screws for an MDF base or M2 bolts if a Perspex base is used. The case top is fixed using 2 this copper strips bent at an angle with M3 bolts soldered in place.
Full size Veroboard layouts are in a zip file in the previous step.
Step 18: Schematic
Schematic
Note Touch Sensor LED is for Cube Clock only. Use PIR or Radar Module as required.
Full size schematics in zip files.
Step 19: Setting the Real Time Clock
Setting The Real Time Clock
Picture 1
The clock has four touch sensors in the wooden frame see picture below.
Using your thumb and index finger on the front and rear of the frame very gently squeeze the frame momentarily to activate a sensor.
In most screen
modes the Top Left sensor moves back a mode and the Top Right sensor moves to the next screen mode.
The modes are;
1 Credits or Start-up message
2 Word Clock
3 Digital Clock
4 Temperature & Humidity Display
5 Analogue Clock
6 Game of life
7 Simon Game
8 Tetris Game
The Bottom left & Right buttons only work in some display modes.
Setting the Time
Picture 2
Time is set in the Digital Clock Display mode.
Press the Top Left or Top Right Touch sensor until you get to the Digital Clock Mode
Picture 3
In Digital Clock mode press the Bottom Left or Bottom Right touch sensor.
This will start clock setting mode for hours indicated by the hours flashing and the seconds stopping.
Picture 4
Seconds can be reset to zero by pressing the Bottom Right touch sensor.
The Top Left sensor will now step the hours down & the Top Right Sensor will step the hours up.
Once the hours are correct press the Bottom left Sensor.
Picture 5
The hours are now set so the clock moves to minute setting mode indicated by the minutes flashing.
If you have not done it already the Bottom Right sensor resets the seconds to zero.
The Top Left sensor will now step the minutes down & the Top Right Sensor will step the minutes up.
Set the minutes to the next actual minute and when the correct time reaches zero press the Bottom Left sensor to start the clock at exactly the correct time.
Picture 6
The clock restarts at the time you have set.
On the Perspex case version clock setting is the same the only difference being that the touch sensors are on the left and right sides of the clock case.
Step 20: Code
Time to Word Mapping Chart
The chart shows how each minute of the day is mapped to words.
This is how I say the time. This will of course vary depending on your country, in the UK where you live in the UK and to some extent where you went to school.
You may want to change this and also of course the message displayed in the start screen.
Changing The Code
When you want to make changes to my code you can compare my code to the "Catalan Code" to make it easier to understand what changes you need to make. I have added //Brett to my code to highlight my changes.
Changing the code. If like me you are not very good at coding just play around with the code to get an understanding of how it works. I just save a different version each time I make even a tiny change. This way if I mess up I can go back a version and start again. If you are keeping my linear seconds display update the version number on the display so you know what version you are trying out each time. This is done in the module credit.h around line 47.
It would take far too long to explain all the code but here is a very brief guide on how to change the words and when they are displayed.
Picture 2 The WORDS are set in time.h
On line 52 we have const byte w_the[3] PROGMEM = { 0, 0, 3 };
The word "THE" is described in this line with the LED location in the curly brackets "{ 0, 0, 3 }"
This is the co-ordinate of the LEDs we are gong to light when we call "w_the"
The LED matrix numbers starts top left and start from 0 so "{ 0, 0, 3 }" is the first LED across and down the 3 just means the 3 LEDs across including this one will light. As the letters THE are in this position the word "THE" is displayed.
Similarly the word "TIME" would be lit by lighting the four LEDs here { 0, 4, 4 } or row 0, 5th LED along and light 4 LEDs (remember to count from 0). Working you way down the page shows the position of all the words.
Picture 3 Controlling when words are lit
This happens in the module time.cpp
Here you just make a list of rules to tell the clock what words to light at certain times.
Picture 3 shows part of the code starting with line 695
At midnight we want to make the clock say "THE TIME IS TWELVE OCLOCK AT NIGHT"
Midnight is 00 00
"THE TIME IS" is always displayed from lines 687
So we add the rules if minutes are 0, then if hours are 0 show the word for hours "TWELVE" and the word "OCLOCK" the word "AT" and the word "NIGHT"
If you follow the code down all the possible time combinations are covered.
Code
Program Files Modules
Brett_wordclock_v3_4.ino Main program
brightness.cpp/.h Brightness autoadjustment
character.cpp/.h Character (digit) definitions
credits.cpp/.h Ending Credits
display.cpp/.h Display & LED functions
life.cpp/.h Game of Life
serial.cpp/.h Serial port setup menu
simon.cpp/.h Simon Says game
temphum.cpp/.h Temperature & Humidity display
tetris.cpp/.h Tetris game
time.cpp/.h Wordclock, digital clock
timeanalog.cpp/.h Analogue clock
touchbuttons.cpp/.h Touch buttons, mode switching
Third party libraries:
Chronodot.cpp/.h Chronodot library (for DS3231)
DHT.cpp/.h Temperature sensor library (for DHT22)
LedControl.cpp/.h LedControl library (for MAX7219)
stc.cpp/.h/platform.h Simple Tetris Clone library
pitches.h Note frequencies from the Arduino webpage