Skip to content

rgb-propeller-clock/spin

Repository files navigation

Propellor Clock

This repository powers an arduino project consisting of a spinning display of LEDs that shows the current time to the user. Let's see it in action:

High Level Architecture

Propellor_diagrams drawio (14)

Requirements

  1. If the start button is pressed when the motor is stopped (1.5 seconds have passed since last full rotation), the motor shall be commanded to begin spinning, approaching a speed of 10 rotations per second as measured using the beam break sensor
  2. When the device is spinning steadily, the LEDs shall display an image of the current time in 24-hour hh:mm:ss format
  3. If the stop button is pressed at any time, the motor shall be powered off

Sample Operation

After pressing the on button, the motor speed is set and the device spins up. Once the rotation speed threshold is reached, the LEDs begin to display an image representation of the current time.

A quick summary of how an image is actually displayed is that each time the beam break sensor detects a rotation, if the clock is in the running state, then the beam break ISR starts or adjusts the rate of a timer interrupt, and the timer interrupt updates the LEDs for each column of the image as the clock spins around.

Propellor_diagrams drawio (13)

Finite State Machine (FSM)

Propellor_diagrams drawio (15)

CAD

Onshape CAD for the 3d printed components can be found here.