Home > Mindstorms > Scrolling Clock

Scrolling Clock

February 13th, 2023 Leave a comment Go to comments

My second clock project, featuring Mindstorms brick and scrolling digits.  


Completion date: 10/02/2023
Dimensions: length 53s / width 47s / height 21s
Weight: 4.19 kg
Power: electric (Mindstorms brick)
Language: Scratch
Bricks: 1
Motors: 5 x Spike Prime M, 1 x Spike Prime L
Sensors: none

My second clock ever, it was based on the scrolling mechanism from the LEGO 71374 NES set and it was designed to improve on the shortcomings of my previous clock. Namely it was meant to be more accurate, better-looking, stickers-free and easier to read.

The project was fairly simple, with six separate tracks with digits on them, driven by six separate motors controlled by the Mindstorms brick. All synchronization between digits was handled by a Scratch program, show below. The motors drove the tracks directly and the only mechanical part was an eccentric mechanism moving the two : indicators.

The clock was running in a loop where the desired hour would be calculated as a sum of seconds and tested for modulo. E.g. if modulo from dividing the sum of seconds by 60 is zero then a minute has passed and the minutes track needed to be moved by one digit. It was all fairly straightforward except for the midnight case, when the clock had to go from 23:59:59 to zeros. Here the problem was that I couldn’t find any way to move multiple motors simultaneously to different positions either in Scratch or Python, so the clock went resetting the digits group by group and then skipped the seconds track to 8 to make up for the time it has taken.

Despite all its simplicity, the clock has offered several challenges:

  • the tracks’ tension proved to be crucial, as they couldn’t be too tight or they would disconnect. This was probably caused by the combined weight of all the pieces attached to them, since e.g. the 10-digits track weighted 300 grams, and by the abrupt start/stop movements. Additionally, every track needed slightly different tension since there are two variants of the 5-studs wide track which I keep together unsorted, so rather than trying to sort them I simply adjusted the tension of each track separately.
  • each digit takes 6 track links (with one link used as a separator), so I initially wanted to drive the tracks using the smallest sprockets which have 6 teeth, as this would mean that 1 rotation of the sprocket moves the track by 1 digit. However, I found that the smallest sprockets frequently jam when used to drive a track (they seem to work better as idlers), so I had to use the medium-sized sprockets with 10 teeth, and that meant rotating them by 6/10th of a rotation per digit, or 216 degrees.
  • the best place to put the drive sprocket in a track wasn’t obvious. It was difficult to put it in front because that made it hard to fit the motors while keeping the tracks close together, and I found that the front of the track had a tendency to fold a bit with a drive sprocket on top or bottom of it. Putting the drive sprocket at the back of the tracks solved these issues, because two adjacent tracks are always different in length, so their rear ends are at different places, leaving plenty of room for motors. The downside was that the play in the track caused the digits to have some wiggle room in their vertical positions.

To test the reliability of the clock I’ve tried running it continuously for as long as possible. I got near 90 minutes several times. After that, the seconds track usually jammed, having run between 4,000 and 5,000 cycles. It also turned out that operating the clock was draining more power from the Mindstorms brick than it was getting from a charger, and eventually after over 5 hours of operation the battery went down to 1% and the clock began stopping and starting randomly. I was unable to determine why the seconds track jammed, except that it didn’t happen before I added housing to the clock, so it might have been a matter of housing’s weight and structural stress inside the clock, which was built around an inner scaffolding, with the casing only serving as an outer shell. The clock also ran about 3 seconds late per hour, which I believe must have been caused by the Mindstorms software taking some extra time between ending one loop and starting another.

I kept the exterior of the clock smooth and simple, hoping that if lacking details, it would appear smaller than it actually was. I was initially planning to build the housing in dark red, but the prices of the dark red pieces proved too much for my budget.


code.png IMG_0795.JPG IMG_0799.JPG IMG_0801.JPG IMG_0802.JPG IMG_0805.JPG


Categories: Mindstorms Tags:
  1. No comments yet.
  1. No trackbacks yet.