Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
Build this clock with four Adafruit 1/4 60 RGB NeoPixel rings—not one. Each quarter-ring contains 15 addressable LEDs; four sections form a complete 60-pixel circle. An Arduino-compatible controller reads time from a battery-backed DS1307 real-time clock (RTC), displaying hours in red, minutes in green and seconds in blue.
The electronics are straightforward, but a reliable finished clock also needs correctly joined data lines, a suitably rated 5 V supply and a rigid backing or enclosure. Treat it as a decorative maker-built clock rather than a precision timekeeping instrument.
What you are building
The finished clock is a 60-pixel illuminated circle. The three hands are represented by different colors:
| Time component | Color | Pixel position |
|---|---|---|
| Hour | Red | ((hour12 % 12) * 60 + minute) / 12 |
| Minute | Green | minute |
| Second | Blue | second |
Where colors overlap, the LEDs mix—for example, red and green produce yellow. The hour indicator can be smoothly advanced using the minutes instead of jumping once per hour.
#1 Best Overall
- ▶ LED Chip: WS2812B; Communication interface: Single-wire communication
- ▶ Voltage: DC5V, usually we use USB 5V to power it
- ▶ Note: The led ring doesn't come with cable
- ▶ You can set the led brightness in the arduino code, and also you can program each light individually
- ▶ What you will get is: 5pcs 12Bits WS2812B 5050 RGB Led rings
The design follows the original Adafruit NeoPixel 60 Ring Wall Clock reference design and the 2016 Hackster project.
Parts and tools
Required electronics
- Four Adafruit 1/4 60 RGB NeoPixel rings.
- An Arduino Uno, Adafruit Metro or compatible 5 V controller.
- A battery-backed DS1307 RTC breakout.
- Breadboard, perfboard or Perma-Proto board.
- A regulated 5 V power supply with adequate current capacity.
- Hookup wire, solder and heat-shrink tubing.
- A suitable RTC backup battery.
- A rigid backing plate, enclosure or 3D-printed mount.
Useful tools and optional parts
- Soldering iron, side cutters and a multimeter.
- Optional 470–1,000 µF electrolytic capacitor across the ring’s 5 V and GND.
- Optional 330–470 Ω resistor in series with the NeoPixel data wire.
- Diffuser, translucent faceplate, hour markers and wall-mount hardware.
- Inline power switch and strain relief.
The four RGB quarter-rings are approximately 6.2 inches (157 mm) outside diameter and 5.7 inches (145 mm) inside diameter when assembled. Each quarter section is only about 6.4 mm wide and 2 mm high, so the solder joints alone should not support the completed ring.
Important: one quarter-ring is not a complete ring
The product name is easy to misread. One purchase contains a quarter of a ring with 15 individually addressable RGB LEDs. Four sections are required for the 60-pixel clock. The sections use a one-way data path: the controller connects to the input side marked DIN, then data travels from each section’s DOUT to the next section’s DIN.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Do not substitute RGBW sections without changing the software. RGBW pixels need RGBW-aware library configuration and color handling; a normal RGB sketch may produce incorrect colors. See Adafruit’s RGBW quarter-ring information before choosing that variant.
Assemble the 60-pixel ring
- Lay the four quarter-rings on a flat surface in a circle. Check the LED numbering and the printed
DIN/DOUTlabels before soldering. - Join each neighboring
5Vpad to5Vand each neighboringGNDpad toGND. - Connect the
DOUTof one section to theDINof the next section. - Leave the input-side
DINand final output-sideDOUTunconnected. The controller’s data wire goes to the remaining input-sideDIN. - Inspect every joint for bridges between adjacent pads. Use a multimeter to check for continuity and unintended shorts before applying power.
- Attach the completed circle to a rigid backing plate before moving or mounting it.
The electrical bridges create continuity, not structural strength. A plywood, acrylic, foam-board or 3D-printed rear plate prevents flexing and protects the delicate PCB joints.
Wire the controller and RTC
Arduino Uno reference wiring
| Component | Connection |
|---|---|
NeoPixel +5V |
Regulated 5 V supply and controller 5 V |
NeoPixel GND |
Controller GND and supply negative |
NeoPixel DIN |
Arduino D3 in the Adafruit reference design |
RTC +5V |
Arduino 5 V |
RTC GND |
Arduino GND |
RTC SDA |
Uno A4 |
RTC SCL |
Uno A5 |
The original Hackster sketch uses data pin 6 instead. Either pin can work if the code matches the wiring. The Uno mapping above follows Adafruit’s reference circuit.
On a 5 V Trinket, Adafruit identifies the NeoPixel data connection as pin 3, with I²C on pins 0 and 2. Other boards may use different I²C pins. Modern 3.3 V controllers may also require a 5 V logic-level data shifter; they are not automatic drop-in replacements.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Rank #2
- ▶ WS2812B LEDs, same brightness, color and protocol with SK6812 LEDs
- ▶ This RGB LED ring can work with AVR, Arduino, Raspberry Pi, PIC, mbed etc
- ▶ Full color Programmable LED rings, 5050SMD, You can set the led brightness in the arduino code, and also you can program each light individually
- ▶ Communication interface: Single-wire communication, LED Chip:WS2812B, Voltage:DC4-7V, usually we use USB 5V to power it, current draw at 5 V is around 1.44amps (60 mA per LED,24 X 0.6 = 1.44 amps)
- ▶ What you will get is: 5 X 24Bits WS2812B 5050 RGB LED Ring. If you have any questions when you use our products, pls feel free to contact us
Install the Arduino libraries
Install the current versions of:
Adafruit_NeoPixelRTClibDST_RTC, if you are following the original guide’s daylight-saving-time approach
Use the Arduino IDE’s Library Manager where available, select the correct board and port, and verify the exact data pin and pixel type for your hardware. The Hackster code dates from 2016, while the Adafruit guide was last edited March 8, 2024, so do not assume old library examples are unchanged in every current installation.
Set the RTC once
The battery keeps the RTC running; it does not set the correct time automatically.
- Install the RTC library and upload a temporary RTC-setting sketch.
- Set the time from an explicit date/time value or from the sketch compilation time using
DateTime(__DATE__, __TIME__). - Check the serial output or clock display.
- Upload the normal clock sketch.
- Remove or disable the automatic initialization line. Otherwise, every later upload can overwrite the RTC with the sketch’s compilation time.
- Disconnect power briefly and verify that the clock retains time from the backup battery.
For the exact DS1307 setup process, use Adafruit’s clock code and RTC guidance.
Clock code structure
A minimal RGB configuration looks like this:
#include <Wire.h>
#include <RTClib.h>
#include <Adafruit_NeoPixel.h>
#define PIXEL_PIN 3
#define PIXEL_COUNT 60
Adafruit_NeoPixel strip(PIXEL_COUNT, PIXEL_PIN,
NEO_GRB + NEO_KHZ800);
RTC_DS1307 rtc;
In setup(), initialize the strip and RTC. In loop(), read rtc.now(), clear the pixels, calculate the three positions and call strip.show().
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
DateTime now = rtc.now();
int hour12 = now.hour() % 12;
int hourPixel = (hour12 * 60 + now.minute()) / 12;
int minutePixel = now.minute();
int secondPixel = now.second();
strip.clear();
strip.setPixelColor(hourPixel, strip.Color(80, 0, 0));
strip.setPixelColor(minutePixel, strip.Color(0, 80, 0));
strip.setPixelColor(secondPixel, strip.Color(0, 0, 80));
strip.show();
delay(250);
The color order NEO_GRB is appropriate for the referenced RGB ring, but confirm the order printed in the documentation for your exact product. If the colors are swapped, the pixel type or color order is probably wrong.
If you want the hour hand to occupy a position between hour marks, use the interpolated formula shown above. A simpler sketch may use only (hour12 * 5), causing the hour indicator to jump in five-pixel steps.
Power the clock safely
Power is the most important reliability issue. Adafruit reports that its reference clock produced strange RTC readings when the NeoPixels were powered from USB. That does not mean every USB setup is unsafe, but it does mean USB alone should not be assumed sufficient.
Rank #3
- Each pixel is individually addressable
- Voltage: DC5V, LED Chip: WS2812B
- Communication interface: Single-wire communication
- Full color Programmable LED Strip, You can set the led brightness in the arduino-code, This RGB LED ring can work with AVR, Arduino, Raspberry Pi, PIC, mbed etc
- What you will get: 1 X 7 Bits WS2812 RGB LED Ring + 1 X 12 bits WS2812 5050 RGB LED + 1 X 16 bits WS2812 5050 RGB LED + 1 X 24 bits WS2812 5050 RGB LED
Adafruit specifies approximately 18 mA per pixel. A conservative full-white estimate is:
Recommended Free Tools
60 pixels × 0.018 A ≈ 1.08 A
This is a theoretical LED-current estimate, not a measurement of the completed clock. Use a regulated 5 V supply with useful headroom, connect the controller and ring grounds together, and avoid routing the entire load through a thin USB cable or a single fragile PCB bridge.
- Never apply more than the ring’s rated 5 V input.
- Connect the external supply ground to the controller ground.
- Keep brightness below maximum for normal wall-clock use.
- Place the optional bulk capacitor close to the ring’s power input.
- Use a short, secure data wire and the optional series resistor near the controller.
- Provide strain relief and an inline switch for a permanent installation.
Control brightness
A wall clock rarely needs maximum brightness. Lower brightness reduces glare, power demand and stress on the supply, and makes the display more comfortable at night.
The Adafruit reference design uses parameters named DAYBRIGHTNESS, NIGHTBRIGHTNESS, MORNINGCUTOFF and NIGHTCUTOFF. Brightness values run from 0 to 255, although zero makes the display invisible. You can begin with modest values such as 30–80 and adjust them for the room. A light sensor can be added later for automatic dimming.
Build the enclosure and wall mount
Prototype backing
For testing, attach the ring to cardboard, acrylic, plywood or foam board. Keep the controller and wiring on the rear, and do not let the backing press against the LED packages.
3D-printed enclosure
The original Hackster project includes custom 3D-printed clock parts. A practical enclosure should include:
- A rigid rear plate supporting the entire ring.
- Openings or channels for power and data cables.
- Clearance around LED packages and solder joints.
- Access to the RTC battery and programming connector.
- Space for the controller, power wiring and optional switch.
- A wall-mount keyhole, bracket or other rated fixing method.
Finished wall clock
Add a diffuser or translucent faceplate only after confirming that the three colors remain easy to distinguish. Printed hour indices around the circumference make the unusual color-based display easier to read. Do not fully seal a warm power supply or controller in a tight enclosure; leave suitable space for heat dissipation.
Quick Recap
Troubleshooting
| Symptom | Likely causes |
|---|---|
| Only one quarter lights | Reversed DIN/DOUT, missing power bridge, wrong input end or bad solder joint. |
| Random colors or flicker | Insufficient power, missing common ground, long data wire, incorrect pixel order or 3.3 V logic without level shifting. |
| No LEDs light | No 5 V supply, reversed power connection, wrong data pin or a shorted solder bridge. |
| RTC resets or shows nonsense | Weak power, USB voltage drop, missing battery, incorrect I²C wiring or repeated time initialization. |
| Clock is one hour wrong | Daylight-saving setting, timezone assumption or a fixed offset in the sketch. |
| Hour hand jumps | The code uses a coarse hour position instead of including the minutes in the calculation. |
| Ring breaks during installation | The solder joints are carrying mechanical load. Reinforce the circle with a backing plate. |
Possible upgrades
- DS3231 RTC: a practical upgrade when long-term time accuracy matters more than reproducing the original DS1307 design. Confirm library and pin compatibility.
- Automatic brightness: add a light sensor and reduce brightness after dark.
- Time-setting controls: add buttons, a rotary encoder, Bluetooth or Wi-Fi rather than reprogramming the board.
- RGBW lighting: useful for decorative white illumination, but it requires RGBW-compatible code and color handling.
- Network time: a Wi-Fi controller can synchronize time, but it adds software, power and network dependencies.
Final installation checklist
- Four quarter-rings are present and aligned.
- All neighboring 5 V and GND pads are connected.
- Every data connection runs from DOUT to the next DIN.
- The controller connects to the input-side DIN.
- Controller, RTC and NeoPixel grounds are common.
- The RTC battery is installed and the time has been set once.
- Automatic RTC reset code has been disabled.
- The external 5 V supply has adequate capacity.
- The ring is attached to a rigid backing.
- Brightness is comfortable for the room.
- The enclosure leaves access to the battery and programming port.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.


Leave a Reply