Ever since my addressable RGB LED strips (WS2812B) came from Aliexpress, I've been fascinated with LED projects. Following up on my success with my Charlieplexed LED clock, I wanted to create something with more Jazz..

While browsing google images, I came across an instructable for an Arduino Infinity Mirror and the brain cells started working in overdrive. Why shouldn't I make an infinity mirror, that's also a clock !!


  1. Works like a clock - the colours of the hands are user-programmable over bluetooth
  2. Has an IR sensor to sense if someone is coming near the mirror. Switches off the LEDs, so that this can be used as a normal mirror :-)
  3. Shows a rainbow effect every 15 minutes (time is user adjustable)
  4. Has a touch button to toggle between clock and rainbow effects
  5. Switches to night mode between midnight and 7:00 AM - can be changed in the code.
  6. Can be programmed over bluetooth - so you do not need to take it off the wall if you need to update the code
Remove these adsRemove these ads by Signing Up

Step 1: Electronics

  1. A Standalone Arduino: OR Arduino mini pro:
  2. RTC Module – DS1302:
  3. LM2596 Step Down Adjustable Power Supply Module 1.3V-35V:
  4. 1m 60LEDs/M Addressable RGB LED Strip (WS2812B):
  5. HC-05 Bluetooth module:
  6. IR Proximity Sensor: 4 IR LEDs; 1 IR LED detector:
  7. Touch Pad:
  8. 9V – 2A Adapter
  9. CP2102 USB-to-TTL (the RST pin on the CP2102 is not for resetting the arduino – you have to solder a wire to the DTR pad on the PCB – which sends a reset signal to program the arduino. This has to be connected to the DTR pin on the Arduino
1-40 of 117Next »
dushu (author) 7 days ago

Just realised, the set_time doesn't function correctly, please replace with the following:

void set_time(){

DateTime now =;

Serial.println("IN SETTIME");

uint8_t hr = (uint8_t)atoi(;

uint8_t minu = (uint8_t)atoi(;

uint8_t sec = (uint8_t)atoi(;



Format for setting time TIME h m s

e.g. TIME 10 12 00

Is it necessary to use the 7805 if im using the arduino uno?

I'm having I'm having trouble getting the lights to turn on. When I connect the LM25 to the lights they glow for a second then stop. Any idea?
15, 5:02 PM.jpg

How would you go about making this without the clock portion just the infinity mirror and an IR sensor?

the rgb led strip that i bought online has a circuit similar to this

how do i go about the connections? please help

dushu (author)  inifinityone8 days ago

You can use this to build one of these:

whoa looks pretty coool man! awesome stuff!
My addressable leds arrived just today! lets hope that im able to complete this project! *fingers crossed*

dushu (author)  inifinityone26 days ago

This looks like a 12V RGB strip - I don't think this is addressable. You need an addressable rgb strip for this project.

rafam17 days ago
So it is possible to use a simple flat glass and not a convex one?
dushu (author)  rafam8 days ago

There is no convex glass in this build. The back and front mirrors are flat.

rafam9 days ago

hello when i try the code it gives me

avrdude: stk500_recv(): programmer is not responding

any ideas how to fix it?

dushu (author)  rafam8 days ago

Did you connect pin 32 from the HC-05 to the reset pin as mentioned in step 2?

rafam11 days ago
Is the touchpad a necessary item to this built?
dushu (author)  rafam8 days ago

No - you can leave it out - but you will have to modify the code slightly

rafam20 days ago
Does the glass have to be a convex glass of can it just be a normal flat glass?
A-Bomb961 month ago
(removed by author or community request)
(removed by author or community request)
dushu (author)  A-Bomb9626 days ago

Yes - this should work. You should stick it on the inside face of the glass. An alternative would be a two-way mirror.

GrosSinge1 month ago

Hello, I'm facing issues with the code. I recieve the following message when I try to compile:

noise.cpp:24: error: expected initializer before 'const'
noise.cpp:50: error: expected initializer before 'grad16'

This is with the FastLED library. If I remove noise.cpp the code will compile but the software will only display "Status:" in the Serial Monitor and will eventually freeze up.

I've tried uploading to a Stand Alone Arduino (Uno) and an Arduino Nano and I get the same results. This is also with the latest software as well.

Any thoughts?

dushu (author)  GrosSinge29 days ago

Which version of FastLED and arduino IDE are you using? I believe v3.0 has some issues with the arduino IDE 1.5.7 or later.

GrosSinge dushu27 days ago

FastLED was version 3.0.3, but I found the problem which was the Arduino IDE. I had an old version. The code compiles and the clock works with the serial monitor commands. Except I'm having trouble with setting the time and date. Do I preset the DS1302 before hand?

Hey, im sorry! I'm still a beginner and this is my first project
Just wanted to know some basic things
Whats the use of standalone arduino? how exactly does it help? I have an arduino uno! can i use it directly?

dushu (author)  inifinityone1 month ago
You can directly use an uno. A standalone is simply cheaper.
hi, what's the thickness of the steel plate please?
dushu (author)  jo.werner.5681 month ago

The plate is just a couple of mm thick. but as it is convex - the height in the center is 10mm

pgupta312 months ago

Hi, I want to know exact command syntex for time setting if I set time it get disturbed then again I have to run ds1307 sketch to set it. like TIME -----------

dushu (author)  pgupta312 months ago

You can use rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

The format for __DATE__ is Mmm dd yyyy (Nov 07 2014)

The format for __TIME__ is hh:mm:ss (21:06:19)

pgupta31 dushu1 month ago

can I push this command directly through Bluetooth(without sketch)

nadlycam made it!4 months ago

Great clock! It inspired me to make this my first arduino project. I haven't completed it yet, I'm still trying to get the bluetooth to work, but I have it working using a USB to serial adapter. One thing that I found works really well is a convex mirror in the middle. I bought a 5 inch convex clock glass and painted the back with 'mirror effect' paint. It's amazing, the reflections go all the way to the middle. Thank you so much for posting this!

dushu (author)  nadlycam3 months ago

Also - it seems from the photo that you have stuck the LED strip next to one of the mirrors - hence the double LED rows in the reflections. If you stick it near the middle - the reflections would be more regular.

nadlycam dushu3 months ago

I finally finished the frame, so I was able to attach the LED strip to the side. This is how it looks now. The trickiest part was getting the inside perimeter exactly right. I used epoxy wood filler to reduce the diameter by a couple of millimeters to get that. Now I just have to find a bluetooth module that works and it will be done. Thanks again for this instructable!

SeppV nadlycam2 months ago

this looks super awesome :) what did you use in the centre of the mirror, would you be so kind to take a picture of it?

nadlycam SeppV2 months ago

I found a convex 'clock glass' on eBay. It's about 5-3/4 inches in diameter and about an inch tall in the middle ('high rise'.) By using some mirror paint (I used stuff called Mirror Effect, there are others) on the back it became a convex mirror. I think that any frame-less convex mirror of about that diameter should work. I considered a 12-1/2 inch convex glass that would have replaced the flat mirror, but I'd have lost the straight tunnel effect around the outside.


for anyone looking for the convex glass, I went to the local auto store and brought the circular mirror they sell them to stick on truck mirrors etc....and you just pop them out of the plastic housing and you have your convex mirror. My local store only had 3 sizes and the largest being 5" dia.

SeppV nadlycam2 months ago

thank you for your reply and for the picture that clears things out a little bit. But I hope I understood this right, the bigger mirror in the back is flat and the small one in the middle is the 5-3/4 inch convex mirror

nadlycam SeppV2 months ago

Right. The flat mirror gives you a straight tunnel effect around the outside edge, and the convex mirror reflects the LEDs in a repeating conical shape that gives you radiating lines into the middle.

dushu (author)  nadlycam3 months ago

Wow - that looks amazing. I could see you've used metal clips to hold the mirror. If you've made a frame around it like me (I can't see from the images) - you can simply stick it using N45 silicon glue. It would look better.

Amazing, nevertheless - glad I helped.

dushu (author)  nadlycam3 months ago

That looks amazing. Great idea on the convex glass.

I'm glad you liked this enough to make one. Let me know if you have any problems and I can help out.

rafam1 month ago
So I was are both of the end wires connected to the LEDs necessary? Because If not I can just cut off the wires from the left side and it would fit perfectly.
14, 9:21 AM.jpg
dushu (author)  rafam1 month ago
You need the wires on one side only. The ones connected to the data input. Please check before cutting off the other side.
1-40 of 117Next »