Retro 7 Segment Clock - the Final One(s)

by parallyze in Circuits > Clocks

40078 Views, 196 Favorites, 0 Comments

Retro 7 Segment Clock - the Final One(s)

_title.jpg
IMG_3833.jpg
IMG_4417.jpg
IMG_4369.jpg
IMG_4251.jpg
IMG_4406.jpg
IMG_4335.jpg
IMG_4151.jpg
IMG_4206.jpg
IMG_4230.jpg
IMG_3889.jpg
IMG_4367.jpg
IMG_4410.jpg

2021/10/20 - Update

Added the XL version (4 LEDs / segment). Parts/Info can be found at the bottom of this Instructable. So there's now 4 options available (3/4 LEDs, 4/6 digits).

--

Here's another set of 7 segment modules including a clock example. There's nothing really new on this one, it is meant as a replacement for my most popular (according to the broken stats on another site) clock so far, the "Retro 7 Segment Clock - Regular Edition".

While working on ClockSketch v7 and adding support for older designs I noticed I absolutely don't like many, many things about the current design and this somehow forced me to do an update.

As before the whole design consists of the digits module and a center/dots module. Some of my designs (like Lazy 7 / One or S7ripClock) required different modules depending on their positions (often an additional 3rd module for 6 digit versions). This is not the case here, the modules can be daisy chained to as many as you'd like to.

Since it's an update I tried to keep the requirements for printing the parts the same as before. The biggest footprint is to be found on the digits cover at 176.25mm x 146.95mm. So this design should still be printable on many printers (default 20x20, prusa mini, makerbot clones).

The clock is running ClockSketch v7, so you will have to get the sketch from that Instructable (Step 3). I highly recommend reading that Instructable if you're going to build any of my designs.

Most comments are about the sketch anyways, so I'll keep "Hardware" like this seperated from the "Software" in this case.

The finished clock is 392mm (6 digits: 608mm) x 147mm x 30mm in size, not including the optional feet. Wall mount is included right in the back mount, hole spacing is exactly 100mm. Oh, of course... there's 3 LEDs inside each segment, just as before. The dots module will use 2 LEDs per dot. Total LED count is 103 (6 digits: 157).

For a list of features have a look at the ClockSketch v7-Instructable, there's a lot of combinations possible (Arduino, ESP8266, various RTCs, settings, ldr support, 12/24h format and so on). This Instructable is only about the clock example for this module and as shown in the pictures - using a Arduino Nano and a DS3231 RTC (ZS-042).

Supplies

IMG_3862.jpg
IMG_3836.jpg
IMG_3952.jpg
ws2812_thickness.jpg

The clock example (4 digits version) requires the following 3d printed parts:

  • 1x 7SCv3_Backplate.STL
  • 1x 7SCv3_Backplate_Cover.STL
  • 1x 7SCv3_Cable_Covers.STL
  • 2x 7SCv3_Digits_Cover.STL
  • 2x 7SCv3_Digits_Diffusers.STL
  • 2x 7SCv3_Digits_Frame.STL
  • 1x 7SCv3_Dots_Cover.STL
  • 1x 7SCv3_Dots_Diffusers.STL
  • 1x 7SCv3_Dots_Frame.STL
  • 1x 7SCv3_Elec_Case.STL
  • 1x 7SCv3_Feet.STL (optional)

I recommend printing everything except the diffusers from black material. I've been using transparent/natural PLA for the diffusers. If you'd like to get a different colored front I recommend swapping filament after 2-3 layers when printing the front covers. Printing them completely in white will result in light leaking into other segments.

Material usage heavily depends on print settings, but using PLA it's about ~390g/~140g (black/transparent).

Non-printed parts required:

  • 103x WS2812B LEDs, 5V, 60 LEDs/m, individually addressable, IP30 (IP65/67 will NOT fit)
  • 1x Arduino Nano (ATmega328, 5V)
  • 1x RTC module, DS3231 / ZS-042 modules recommended
  • 2x push buttons, 6mm x 6mm (button length ~1.5mm-3.0mm recommended)
  • 1x USB cable (used for powering the device, so micro/mini usb doesn't matter, only interested in the usb a-side - or whatever plug the available power supply might have)
  • power supply, 5V/1A USB
  • Some wires to connect all the components
  • 10x M3 screw, length 7-16mm, 8-10mm recommended

Other requirements:

  • A properly set up Arduino IDE including all the required libraries for ClockSketch v7
  • Basic knowledge of what you're doing there
  • If you're skipping both of the above... well, you're on your own

Notes about wiring:

As written in the ClockSketch v7-Instructable the sketch is limited to 500mA by default. On this clock using 4 digits I recommend setting this to around ~900mA when finished, otherwise you'll notice the limitation on higher brightness settings (digits will dim down whenever the dots are on, all dependent on what time it is / how many segments are lit).

One thing I've seen very often is people using very thick wiring inside my designs. When running them at limits around 800-1500mA there's not really the need for using something like AWG18/20. The holes inside the modules will fit quite thick wire gauges but this is also dependent on the thickness of the insulation (3x ~1.7mm diameter max). The short wires attached to many LED strips are such an example. The wires I'm using in this Instructable are 0.25mm², that's somewhere in between AWG22/24. And even if you're going to raise the power limit further you'll only need the appropiate wiring on the LED strip - there's not really a benefit in using AWG22/20 for the connections to the microcontroller, RTC and buttons, it will just make things a bit harder. Something like AWG26 (~0.13mm²) is perfectly fine for those components and will make it easier to do things like fitting 2 wires to a single GND point on the microcontroller.

The power limit will only be active for the LEDs. So if you're going to use another microcontroller, like one from the ESP8266 range, make sure your power supply is providing sufficient current. ESP8266s can peak up to ~400mA when powering up and will peak at around ~200mA all the time if WiFi is enabled.

Also I'd recommend lowering the power limit from 500mA to 300-400mA on ESP8266s when running the sketch for LED tests to avoid problems when using the USB port only.

Comparison Old / New / Others

retro-v2_vs_retro-v3_1.jpg
retro-v2_vs_retro-v3_2.jpg
IMG_4128.jpg
gcv2_spe_retro-v3.jpg
v3_vs_qbe.jpg
various_1.jpg

Major changes to the previous design:

Way less screws. Used to be > 20 for the 4 digits version, that's now down to 10. Hole diameter is a tiny bit smaller than before (like on my recent designs, 2.90mm vs 2.85mm).

Much better diffusion. I spent surprisingly much time on the diffusers. But I do think the result is clearly better than the old design.

Wiring is much easier on the new one. No need to add data/power to different spots on the strips. Also it's a bit more straight forward (as in S7ripClock, L7/O and others - one side of the led strip is powered, rest attached to the other side).

The big holes between the segments are now closed. I didn't want to thicken up the old design even more so this time the electronics are inside the digits module. This allowed me to shave of ~9mm on the parts on the back and keep a total depth of 30mm, while increasing the modules/diffusers depth for better diffusion.

One sacrifice had to be made: There's more unused LEDs than before. While the old design did require 99 LEDs, it's 103 on this one. To make the segments noticeably wider I just had to do this, otherwise the way the strip is routed would still limit to a maximum width of 8-9mm for the segments. Right now they're ~12mm, which is a 50% increase compared to the old one.

Of course you can always remove the unused LEDs and save them for other projects, but you will have to adjust the array definitions inside the sketch to make it work properly. If you don't know how to do this, have a look at the ClockSketch Instructable or stick to this Instructable and waste some LEDs.

The distance between the digits was slightly increased. That's a mistake I repeated on S7ripClock if you look closely. It does work well in small/medium rooms but depending on the distance and time displayed it's sometimes quite hard to tell some digits apart. That's actually the reason why I've never published the larger S7ripClock after building the prototype... :D

Distance between dots/digits is identical to the distance digits/digits now. I think the pictures comparing the old and new designs clearly show the improvments in readability.

Sadly many people don't really check out the printing instructions/infos. The old one was designed using wall widths of 1.2mm/2.4mm, so I always recommended printing the parts at 0.6mm extrusion width/line width. Printing at 0.4mm would immensely increase print times and produce weaker parts - still people did so quite often.

On this design all walls are multiples of 0.5mm. This fits many slicers standard settings (or is close enough, for example Simplify3D is using a default width of 0.48mm on 0.4mm nozzles). This should make the print even easier than before.

As always there's no supports needed or any tricky parts in the files. No steep overhangs, no big bridging areas or whatsoever.

I've added some pictures comparing this one to various of my other designs. This might be helpful when choosing between different designs, sometimes it's hard to tell from the pictures how big/small a clock will turn out.

(1. Grid Clock v2, Small Printers Edition, this one)

(2. Lazy 7 / Quick Build Edition, this one)

(3. Old one, new one, SPE, S7ripClock, Lazy 7 / One)

In a Nutshell

003.jpg
IMG_3979.jpg
IMG_4044.jpg
010.jpg
009.jpg
015.jpg
IMG_4074.jpg
020.jpg
023.jpg

Here's what's going on inside the clock. 2x digit modules with 49 LEDs inside each, 1 center module with 5 LEDs inside and some parts to hold everything together. The pictures should give you an idea of what to expect when building this.

Note: All the pictures are available in higher resolution, you just need to click the "download" button appearing in the lower left corner when viewing the pictures.

Inserting the LED Strips

004.jpg
IMG_3883.jpg
001.jpg
IMG_3884.jpg
IMG_3885.jpg
IMG_3889.jpg
IMG_3891.jpg
IMG_3894.jpg
002.jpg
IMG_3895.jpg
IMG_3904.jpg

Make sure the modules are pointing into the right direction when putting in the LED strips. Not paying attention here will require disassembly later on, the parts on the back won't fit if the modules are not pointing upwards as shown here!

(Actually they will fit if all modules are the wrong way. But the wall mounts will be on the bottom and you will have to adjust the sketch to fix the top/down display by yourself!)

Watch out for the solder blobs every 50cm on the LED strip. You'll not be able to bend the strip at those joints, so carefully pre-bend the LED strips and make sure the solder joints won't end up on a corner before cutting them off.

Start inside the center segment on a digits module as shown. Watch the direction markings here.

There's 2 LEDs between the left upper/lower segments. Always be careful when bending the strip to avoid knocking off some of the tiny resistors.

After finishing the left digit there's 3 LEDs in the center before starting the right digit from the lower left segment.

The strip routing is like it is in the left digit, just mirrored. So there's another 2 LEDs between the right upper/lower segments.

When you're done simply repeat this for the second digits module.

The center module is fairly straight forward, just a piece of strip with 5 LEDs, starting from the top.

Make sure the strip is going down into the "guides", there should be 2-3mm clearance above the LED strips before putting in the diffusers later on.

Wiring the LED Strips

IMG_3922.jpg
IMG_3924.jpg
IMG_3919.jpg
IMG_3926.jpg
IMG_3956.jpg
IMG_3961.jpg
IMG_4025-Bearbeitet.jpg
IMG_4026-Bearbeitet.jpg

Let's connect the 3 pieces of LED strip together. Start with the one inside the left digits module at the end of the strip.

Carefully bend the solder pads at the end of the strip so they will be inside the cavity behind the LED strip in the center segment. Route the wires through the hole in the side to reach the next module.

Connect the end of the LED strip inside the left digits module to the start of the LED strip inside the dots module.

Now connect the end of the LED strip inside the dots module to the start of the LED strip inside the right digits module.

Note: If you don't like the idea of routing the wires through the little holes on the sides of the modules, you don't have to. You can simply connect wires to the LED strips, route them through the rectangular holes and connect them together after putting the backplate on. But this will make things a bit harder as the backplate can only be fixed using the screws when the covers are in place. The red toned pictures show this alternative.

Connecting the Arduino / Testing the LEDs

IMG_3975.jpg
IMG_3978.jpg
IMG_3979.jpg
7SCv3_Fritzing_001.jpg
IMG_3988.jpg
serial_test.JPG

Let's connect the Arduino. Add some wires to the start of the LED strip inside the left digits module and connect them according to the pictures. Make sure you route the wires through the rectangular hole as can be seen in the pictures. Keep the area around the circular holes clear, this is where the screws will end up!

5V -> 5V, GND -> GND, Data In -> Arduino D6

Now it's time to see if the LED strip is working as intended. Open up the sketch inside the Arduino IDE and have a look at this part on top of the sketch:

// RTC selection - uncomment the one you're using, comment all others and make sure pin assignemts for
// DS1302 are correct in the parameters section further down!
// #define RTC_DS1302
// #define RTC_DS1307
#define RTC_DS3231

For testing the LED strip without an RTC connected you need to disable it temporarily by commenting out "#define RTC_DS3231":

// RTC selection - uncomment the one you're using, comment all others and make sure pin assignemts for
// DS1302 are correct in the parameters section further down!
// #define RTC_DS1302
// #define RTC_DS1307
//#define RTC_DS3231

(If you don't do this you can still test the LED strip - but you'll only be able to see anything displayed while in setup and/or the animations on color switches are running)

Note: The only reason I recommend powering this using USB only at this point is because I know the sketch is limited to 500mA by default. You should never power a large amount of WS2812B LEDs this way without a power limit!

I've put a piece of paper on top of everything while testing, looking right into the LEDs isn't really a nice experience.

Compile and upload the sketch.

The clock should start up displaying 0:00. You can use the serial monitor inside the Arduino IDE to check if everything is working, like setting time, switching color palettes by sending the corresponding buttons (7/8/9, check the ClockSketch v7-Instructable for usage instructions).

Check the serial monitor for output/status messages.

Adding RTC, Power and Button Connections

IMG_4034.jpg
IMG_4035.jpg
IMG_4039.jpg
IMG_4043.jpg
IMG_4044.jpg
IMG_9271.jpg
IMG_9269.jpg
IMG_4069.jpg
IMG_4080.jpg
IMG_4083.jpg
7SCv3_Fritzing_All.jpg

Prepare 5 wires as shown. 4 of them will be connecting the RTC to the Arduino, the 5th one is added to the same GND pin on the Arduino and used for the two push buttons.

Connections (RTC->Arduino): VCC -> 3.3V, GND -> GND, SDA -> A4, SCL -> A5

Note: ZS-042/DS3231 can be used from 3-5V, the reason why I'm connecting it to 3.3V here is explained in the ClockSketch v7-Instructable.

Add the USB cable, connecting +5V and GND at the end of the strip. I recommend using a cable tie and/or knot to make sure accidentally pulling on the cable won't rip off the solder pads. Make sure to keep the area around all circular holes clear!

Add the buttons as shown, one to D3/GND on the Arduino, the other one to D4. GND for the second push button will be connected to the first buttons GND connection.


Diffusers and Front Covers

IMG_4047.jpg
IMG_4050.jpg
011.jpg
IMG_3997.jpg
IMG_3998.jpg

Put in the diffusers as shown, the round indentations are meant to face the LEDs.

The center segments are different from the outer ones, watch out for this when trying to push them in.

There's 3 different types: The ones for the dots (much smaller than the other ones, only for 2 LEDs), the center ones inside the digits and the outer ones from all digits.

Now put on the front covers (watch the direction!) and make sure everything fits nicely without any squeezed/trapped wires.

Note: I was taking the pictures on different days and while testing different parts. So don't be too confused by the fact the buttons aren't connected in some pictures, I just forgot to take new pictures after connecting the buttons.

Test Again

At this point I recommend setting the sketch to your desired settings (enabling/disabling options, setting the power limit, enabling the RTC again if disabled in the previous test) and flashing it to the Arduino. Test everything does work as expected before continuing. Once the Arduino is mounted inside the digits module you won't have access to the USB port any longer!

If you're raising the power limit I recommend to avoid powering everything by the USB port only - use the USB/power cable added in step 6.

You can always access the Arduino by removing 2 screws later on if you should need to, but for now I recommend to stick to the instructions.

Final Assembly

IMG_4060.jpg
IMG_4063.jpg
IMG_4084.jpg
IMG_4085.jpg
IMG_4086.jpg
IMG_4072.jpg
IMG_4074.jpg
IMG_4075.jpg
IMG_4076.jpg
IMG_4088.jpg
IMG_4091.jpg
037.jpg
036.jpg
035.jpg
034.jpg
032.jpg
031.jpg
IMG_4092.jpg
IMG_4094.jpg
028.jpg
030.jpg

Flip over all the modules carefully and rotate them by 180° so you end up looking at them like in the first picture.

Add the backplate as shown and fix it using 6 screws.

Hold the buttons in place and fix them by sliding in the c-shaped blocks.

Note: One button is "button A" (yellow, D3), the other one is "button B" (orange, D4). It's up to you which one you put on what side, I put them in so "button A" will be the left one when looking at the finished clock from the front.

Note: I was taking the pictures on different days and while testing different parts. So don't be too confused by the fact the buttons aren't connected yet in some pictures, I just forgot to take fresh pictures showing all this after connecting the buttons.

Place the Arduino and RTC inside the electronics case.

Route the wires as shown, flip it all over and insert everything into the digits module as shown.

Add the cable cover parts and route the wires as shown. The final covers should clip/snap fit into place - if this doesn't work as expected you can use additional 3 screws (M3, min. 5mm - max. 7mm) to hold them in place.

When putting on the big cover on the backplate make sure to watch the indents on the lower side, you'll need to put it on there first.



Optional: 6 Digits

IMG_4255.jpg
IMG_4259.jpg
IMG_4257.jpg
IMG_4260.jpg
IMG_4264.jpg
IMG_4269.jpg
IMG_4271.jpg
IMG_4272.jpg
IMG_4275.jpg
IMG_4278.jpg
IMG_4367.jpg
IMG_4348.jpg

The idea is the same as in my other designs/the old one:

Printer another digits + dots module, add them to the clock using a 2nd backplate, set the sketch to 6 digits, done.


You'll need 1 digits module, 1 dots module, 1 backplate + cover and 6 screws for this.


We want to add another dots + digits module to the right side of the clock, displaying seconds. Prepare the modules as before.

Flip everything and rotate it by 180° so you're looking at the clock from the back like in the 3rd picture.

Remove the 4 screws holding the left cable cover (USB power cable) and the left digits module in place.

Flip/Rotate everything again and remove some diffusers so you get access to the end of the strip, just where the USB cable is connected.

Remove the USB cable and connect it to the end of the new digits module.

Connect the end of the old digits module to the strip inside the new dots module.

Put the diffusers and covers back in place, flip/rotate everything again.

Put in all the screws (6 + 4) to mount the 2nd backplate and hold everything together.

Remove the 2 screws on the right cable cover (Arduino + RTC)

Look for this part inside the sketch (line ~#250):

 #define LED_DIGITS 4                      // 4 or 6 digits, HH:MM or HH:MM:SS
 #define LED_COUNT 103                     // Total number of leds, 103 on Retro 7 Segment Clock v3 - TFO
 #if ( LED_DIGITS == 6 )
  #define LED_COUNT 157                    // leds on the 6 digit version
 #endif

Set "#define LED_DIGITS" to 6, compile and upload the sketch.

Put the Arduino/RTC back in place, put in the two screws.

Done.


Note: You might want to raise the power limit a bit further when adding a module, somewhere in the range ~1200mA-1300mA should work alright.

XL Version

IMG_4410.jpg
IMG_4417.jpg
IMG_4406.jpg
IMG_4378.jpg
IMG_4380.jpg
IMG_4381.jpg
IMG_4384.jpg
IMG_4385.jpg
IMG_4391.jpg
IMG_4392.jpg

This is a replacement for the former XL-Remix of my old Retro 7 Segment Clock, which can be found here.

This one is using 4 LEDs in each segment (3 for the dots), otherwise it is exactly like the one above.

Required LEDs: 133 (4 digits) / 203 LEDs (6 digits) - 63 per digits module, 7 per dots module

Size of the finished clock: 474mm (6 digits: 731mm) x 186mm x 30mm (not including optional feet).

The biggest part as before is the digits cover, requiring 217mm x 186mm on the build plate. If your printer can't handle this, there's a split version of the digits frame and cover available. The biggest part will then be the backplate, requiring 185mm x 145mm, depending on rotation (214mm x 157mm @ 0°). So while this will still work on replicator style printers (220mm x 147mm) it will not work on printers like the Prusa Mini (180mm x 180mm).

Simply print the left/right parts of the digits frame and put them together using 2 screws (M3 x 10). Be cautious when handling/rotating the clock while building it, splitting the frame does affect stability quite a lot... (not really a problem when it's done and put on it's feet or on the wall, that's fine).

Here's the STL files. The splitted digits frame/cover and matching feet are all included in "XL_Split_Parts.STL", seperate and arrange them as needed. If you need help on this, please have a look at this thing.

The sketch (4 and 6 digits pre-configured) can be found in the ClockSketch v7-Instructable, like the other one.

Note: It's the "7SCv3-TFO-4"-sketch, "7SCv2-XL" is the old one!