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.

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.

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.

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

Clocks Contest

Participated in the
Clocks Contest