Propeller LED Clock Display
by Orange Digital Center in Circuits > Arduino
37 Views, 0 Favorites, 0 Comments
Propeller LED Clock Display


This project was developed within the Orange Digital Center Morocco , a space dedicated to fostering innovation, creativity, and rapid prototyping. At the FabLab, individuals and teams have access to state-of-the-art tools, including 3D printers, laser cutters, and a variety of electronic and mechanical resources. The center provides a collaborative environment where innovators, entrepreneurs, and students can transform their ideas into tangible products. By focusing on sustainable and impactful solutions .
This project will guide you in building a Propeller LED Clock Display, a striking device that shows the current time mid-air as it spins. Utilizing the principle of Persistence of Vision (POV), the rotating LEDs create the illusion of a floating digital clock.
Key components include an Arduino Nano to control the LEDs, a real-time clock (RTC) module for accurate timekeeping, and a Hall sensor to sync each rotation. With some basic coding and assembly, you’ll create a portable LED clock that’s both functional and impressive.
This tutorial will take you through gathering materials, setting up the hardware, and programming for precise time output. By the end, you’ll have a captivating, rotating timepiece that is sure to catch attention.
Supplies

You’ll need a few essential electronics, structural parts, and tools to build this Propeller LED Clock Display. Here’s a comprehensive list of everything required to complete this project:
Electronic Components:
- Arduino Nano: The main microcontroller that will control the LEDs, process time data, and synchronize the display.
- DS3231 Real-Time Clock (RTC) Module: A precise clock module that keeps accurate time, ensuring the display is reliable without needing constant adjustments.
- 9 LEDs: Use 8 green LEDs for the time display and 1 white LED for the border of the propeller.
- Hall Sensor: Detects a magnet’s presence to help the Arduino sync each rotation of the propeller, keeping the clock display stable.
- 3.7V LiPo Battery and Charger: Powers the setup while ensuring portability.
- 9V DC Motor: Spins the propeller for the rotating display (a 7V supply works well here to control speed).
- 8 Resistors (220Ω each): Current limiting resistors for each LED to prevent burnout.
Mechanical and Structural Parts:
- PCB Board: Holds the LEDs and Arduino in place for stable rotation.
- 3D-Printed Stand: Used to hold the motor, Arduino, and PCB securely.
- Range Holder: Keeps the Arduino Nano and PCB attached and aligned.
Tools:
- Soldering Iron and Solder: For attaching components to the PCB.
- Jumper Wires: Used to connect components.
- Miscellaneous Hardware: Screwdrivers, glue, and any small tools for assembly.
Each component plays a vital role in creating a functional, synchronized display. Be sure to gather all items before beginning to ensure a smooth assembly process.
Circuit Setup and Wiring



In this step, connect the key components for your Propeller LED Clock Display. Set up a vertical LED array for digits, a border LED at the propeller’s edge, a Hall sensor for synchronization, and an RTC module for timekeeping. Follow these wiring steps to ensure an accurate and stable clock display.
1. LED Array Setup
The main display consists of 8 green LEDs positioned vertically on the PCB, which will create the digital numbers for the time display. On the opposite side of the propeller, a single white LED connected to D13 will serve as a border marker, helping to frame the rotating display.
- Positioning LEDs: Arrange the 8 green LEDs in a vertical line on the PCB, spacing them evenly for a balanced look and clear POV effect. Place the white LED on the opposite side of the PCB, aligned to indicate the border of the propeller.
- Connecting LEDs to Arduino Pins:
- Connect each green LED in the array to pins D2 to D9 on the Arduino Nano.
- Each LED should have a 220Ω resistor in series between the Arduino pin and the LED’s anode (positive side). The cathode (negative side) of each LED connects to ground (GND).
- For the white border LED, connect it to D13 with its own 220Ω resistor(optional). This LED will stay on consistently during operation to provide a visual border for the propeller.
2. Hall Sensor Setup
The Hall sensor synchronizes the rotation, helping the Arduino detect each full turn. This way, the display refreshes at the correct point, ensuring the clock appears stable.
- Positioning the Hall Sensor: Mount the Hall sensor on the rotating PCB, aligning it with a stationary magnet on the frame. Each time the sensor passes the magnet, it will send a signal to the Arduino to begin a new cycle.
- Wiring the Hall Sensor:
- Connect the Hall sensor’s output to pin D12 on the Arduino Nano.
- Enable the internal pull-up resistor on this pin in the code by setting it to HIGH, allowing the sensor to read a “LOW” signal whenever it detects the magnet.
3. Real-Time Clock (RTC) Module Setup
The DS3231 RTC module ensures that the display keeps accurate time. The module communicates with the Arduino via the I2C protocol, simplifying wiring.
- Wiring the RTC Module:
- Connect the SDA (data line) on the RTC to A4 on the Arduino Nano.
- Connect the SCL (clock line) on the RTC to A5 on the Arduino Nano.
- Connect VCC and GND on the RTC to the 5V and GND pins on the Arduino, respectively.
4. Powering the Setup
For portability, we’re using a 3.7V LiPo battery to power the Arduino and LEDs, while the 9V DC motor powers the propeller rotation.
- Arduino Power: Connect the LiPo battery’s positive and ground terminals to the VIN and GND pins on the Arduino Nano. This 3.7V battery provides enough power for the Arduino and LEDs while keeping the setup lightweight.
- Motor Power: The 9V DC motor should be powered separately at about 7V for stable, moderate-speed rotation. This setup ensures the motor runs smoothly without draining the Arduino’s power.
5. Wiring Diagram Overview
For a quick reference, here’s an outline of the connections:
- Green LEDs (D2-D9): Positioned in a vertical line on the PCB, each with a 220Ω resistor.
- White Border LED (D13): Positioned on the opposite side of the propeller, connected with a 220Ω resistor.
- Hall Sensor (D12): Detects each rotation to synchronize the display.
- RTC Module (SDA and SCL): Connected to A4 and A5 on the Arduino for I2C communication.
- Power Connections: 3.7V LiPo battery connected to Arduino’s VIN and GND; 9V DC motor powered separately to drive the rotation.
Assembling the Hardware

Green LEDs (D2-D9): Positioned in a vertical line along one side of the PCB.
White Border LED (D13): Placed on the opposite side of the propeller as a visual border.
Arduino Nano and RTC Module: Mounted close together, with secure wiring to all components.
Hall Sensor and Magnet: Align the Hall sensor on the PCB to pass by a stationary magnet mounted on the frame, ensuring each rotation triggers synchronization.
Battery and Motor: Position the 3.7V LiPo battery and 9V DC motor as shown to maintain balance during rotation.
3D-Printed Stand

The 3D-printed stand helps secure the motor while the propeller rotates smoothly.
- Downloading and Printing the Stand
Here is the 3D model file (STL format). Download the file and use a 3D printer to create the stand.
Printing Recommendations:
- Material: PLA or ABS will work well for this model, as both provide sufficient durability.
- Infill: A 20-30% infill is recommended for structural stability.
- Layer Height: 0.2 mm for good detail and strength.
- Assembly Instructions with the 3D Stand
Once the stand is printed, follow these steps to complete the assembly:
- Mounting the Motor:
- Attach the 9V DC motor to the designated slot on the stand, ensuring that the motor shaft is positioned to rotate the propeller smoothly.
- Use screws or glue to secure the motor firmly, as any instability could cause wobbling.
- Attaching the PCB and Components:
- Place the PCB, with the LEDs, Arduino Nano, and other components, on top of the motor shaft, balancing it carefully.
- To prevent the PCB from shifting during rotation, secure it to the motor shaft using an adapter or mounting hardware if needed.
- Positioning the Hall Sensor and Magnet:
- Attach the Hall sensor to the rotating PCB in alignment with the magnet on the stand.
- The stationary magnet should be positioned on the stand, just within the Hall sensor’s path, to trigger a synchronization signal once per rotation.
Downloads
Code

For the complete code, you can refer to the GitHub repository here.
Below are explanations for a few functions that play crucial roles in achieving the POV effect and maintaining time synchronization.
- displayTime(int hour, int minute): This function takes the current hour and minute as arguments and calls displayNumber() to show each digit individually. It uses addSpace() to separate the digits and displayColon() to insert the colon between hours and minutes, making the display format consistent.
- displayNumber(byte num): This function is responsible for lighting up the LED columns according to each digit’s predefined pattern in the numbers[][] array. It loops through the LED columns in each digit, sending data one column at a time. This gradual display of columns across the rotation creates the POV effect, making it appear as a complete digit.
- sendToPins(byte colData): This function uses direct port manipulation to control LEDs, which is faster than calling digitalWrite() repeatedly. By controlling the PORTD and PORTB registers directly, it sets multiple pins simultaneously. This speed is essential for creating a smooth POV display without flickering.
- clearLEDs(): This function turns off all LEDs before moving to the next column or digit. Clearing the display prevents overlapping LED patterns, which would blur the image and reduce readability.
- addSpace() and displayColon(): addSpace() creates a gap between digits by briefly turning off LEDs, while displayColon() shows two dots to separate hours and minutes. Both functions contribute to readability and visual clarity.
These functions, along with COLUMN_DELAY and DIGIT_SPACE adjustments, allow the code to create a clean, synchronized clock display. By understanding each of these, you can customize or troubleshoot the display’s behavior as needed.
Conclusion

You have successfully completed your Propeller LED Clock Display. This project combines electronics, coding, and engineering to create a unique timepiece that showcases the concept of Persistence of Vision (POV).
There are many ways to enhance your project. Consider adding animations like scrolling text, rotating graphics, or icons alongside the time display. Additionally, you might want to design a custom 3D stand or a more compact battery mount for improved balance and portability.
Feel free to share your build and any modifications. With some adjustments, you can make your POV display even more interesting. Enjoy exploring and innovating!