Modular Display Clock
This project makes use of a previous project Modular Display Element to make a digital clock, using four of the modules connected together and controlled by a Microbit and an RTC.
Supplies
Microbit V2 (preferred due to built in speaker, V1 will work but will require an external sounder.)
Kitronik Edge Connector Breakout
Jumper Jerky Junior F/M - Qty 20
Jumper Jerky Junior F/F - Qty 4
Jumper Jerky F/F - Qty 3
Jumper Jerky F/M - Qty 3
470R resistor
Right Angle Header 2 x (3 ways x 1 row) required.
WS2812Neopixel Button LED's * 56 qty.
Enamelled Copper Wire 21 AWG (0.75mm dia.), or other insulated wire.
Stripboard
M2 screws 8mm - Qty 12
M2 screws 6mm - Qty 16
M2 Bolts 10mm - Qty 2
M2 nuts - Qty 2
M2 washers - Qty 2
M2 Hex spaces 5mm - Qty 2
M3 washers - Qty 14
M3 bolts 10mm - Qty 2
M3 bolts 25mm - Qty 4
M3 nuts - Qty 12
M3 Hex spacers 5mm - Qty 2
M3 Hex spacers 10mm - Qty 4
Right angle Brackets (15(W) x 40(L) x 40(H) mm) - Qty 2
May prove more cost effective to buy a range of values rather than individual values unless you already have them available. Some components may also have a MOL greater than the quantity specified in the component list.
3D Printer
White Filament - For the greatest display flexibility.
Black Filament - For the supporting boards.
2mm drill bit
3mm drill bit
5mm drill kit
Drill
Saw
Pliers
Wire cutters
Soldering Iron
Solder
Sanding paper
Screwdrivers
Know your tools and follow the recommended operational procedures and be sure to wear the appropriate PPE.
No affiliation to any of the suppliers used in this project, feel free to use your preferred suppliers and substitute the elements were appropriate to your own preference or subject to supply.
Links valid at the time of publication.
Baseplate Strips
See: Modular Display Element (MDE)
Four "Modular Display Elements" are required to create the clock display and these are held together with baseplate strips which were cut from a larger baseplate.
The baseplate strips measure 32(W) x 144(L) mm or 4 x 18 stubs and each one over laps two MDE's attaching to the stubs on the MDE. However, for added strength four M2 x 8mm screws are fitted close to the corners which pass through the baseplate and into the MDE.
Schematic
The schematic shows the components that are used to control the MDE's which contain 56 Neopixels.
The control components consist of a Microbit, RTC, Breakout Board, Switch and protection circuit.
The majority of the soldering is focused on the Neopixels whereas the control components are mainly connected with jumpers.
Coding
Code in created in MakeCode.
'on start' procedure.
Initializes the Neoplxel strip of 56 LED's
Display title message.
Initializes the segment_list which contains segment designations per number to be displayed.
Number 0 stored in element [0] = 0111111
Number 1 stored in element [1] = 0000110
.....
Number 9 stored in element [9] = 1101111
Additionally.
Number 10 stored in element [10] = 0000000 used for digit blanking.
'forever' procedure.
Calls 'set mode' which checks P1and if high enables time setting otherwise displays the current time.
Calls 'Time_split' which joins the two numerical values of hours and minutes in to a 4 character string, prefixing any numbers less than 10 with a leading zero.
Calls 'pixel_time'
Which extracts each of the 4 characters in turn starting with the last character into segment_value
Digit then contains the value in segment_list referenced by segment_value.
(If segment_value = 0 then digit = element [0] = 0111111)
Inc = index x (LED_SEG) x 7). Where index = which of the 4 characters is referenced, LED_SEG = number of LED's per segment, 7 = number of segments in a digit.
This specifies the start of the LED's to be controlled for the appropriate character.
The for element assigns in turn each number in digit to value.
If value =1 then the pixel assigned by inc is set to red and turned on otherwise it is turned off.
As two LED's per segment are required this process is repeated LED_SEG times.
(E.g. If Hours unit is 9, index = 0,
digit = 1011111 [value = 1, inc = 0 & inc = 1], [value=0, inc = 2 & inc = 3] .... [value=1, inc=12 & inc = 13])
Hours tens [Index =1, inc range 14 to 27], Minutes unit [index =2, inc range 28 to 41], Minutes tens [index =3, inc range 42 to 55].
Once each of the 7 values have been processed and sent to the strip the changes are shown.
A delay is introduced to prevent flicker.
'on button A'
This sets the hours if set_enable = 1
'on button B'
This sets the minutes if set_enable = 1
'on button A+B'
This calls 'settime' which sets the time based on the values assigned with buttons A and B.
Downloads
Back Panel
The components are attached to a baseplate (95(W) x 128(L) mm), which is fitted to the back of the MDE's with M3 X 25mm bolts and 10mm standoffs.
Four bolts are fitted through the holes in the Neopixel support board and the standoffs fitted to attach the baseplate at the corners, 3mm holes are made in the baseplate to align with the bolts.
Position and drill holes for the Edge connector Breakout (2 x 3mm), the RTC (2 x 2mm), and the switch ensuring to leave space (20 x 40mm), to mount the right angle brackets which act as feet.
Connections to the RTC are made with 4 Junior jumpers F/F and the RTC is secured with 2 x M2 bolts.
Connections to the switch are made with 2 Junior jumpers F/M and the switch is fitted through a 5mm hole.
Connections to the CR protection circuit for the Neopixels is made with 3 Jumpers F/F and from this to the Neopixels with 3 jumpers F/M, this is attached to the board with a cable tie fed through one of the holes in the board.
Fit the angle bracket feet to the baseplate with 4 bolts. (The lower corner M3 bolts for attaching the baseplate can be used to hold the feet in place with a 2nd bolt in the lower hole of the bracket.
To prevent scratching the surface on which the clock will sit, attach stick on pads or a couple turns of tape.
The baseplate can now be fitted on to the corner support bolts and secured with nuts.
Operation
Power is provided by connecting the USB cable directly to the Microbit.
Setting the clock.
Before setting the clock ensure that the RTC has a battery fitted to retain the time when/if power is removed.
The default time format is 24 hour mode.
Move the switch to the set time position a plus symbol will be shown on the display.
Press Button A for Hours. (0 to 23)
Press Button B for Minutes. (0 to 59)
Press Buttons A & B together to set the time, the entered time values will be displayed.
Move the switch from the set position.
At switch on or after setting.
After a short delay the display will be updated with the current time.
Finally
The bringing together of a couple of smaller projects resulting in a larger project.
Hope you find this and the preceeding related projects of interest.