Table of Contents

Play Video

STARRY NIGHT INFINITY MIRROR

The Starry Night Infinity Mirror is an Arduino project using LED strips to create an endless starry sky effect. Perfect for beginners, it serves as a beautiful home decoration, a fun learning tool, or a unique gift for events.

Software Used

Platform Used

The Starry Night Infinity Mirror is a fun Arduino project where you create a captivating light display using LED strips. Placing the LEDs between two mirrors gives the illusion of lights stretching endlessly, like stars in the night sky. With an Arduino, you can program the LEDs to change colors and patterns, such as twinkling or smoothly shifting hues. The Starry Night Infinity Mirror project is ideal for beginners and electronics enthusiasts alike. Besides being a stunning home decoration, it offers a hands-on way to understand lights, mirrors, and basic coding. It also makes a distinctive gift or decor item for parties and special occasions, Starry Night Infinity Mirror project for school students

Components used in this project are:

  1. Arduino NANO with cable
  2. LED Strip
  3. Male to Male Jumper Wires x 3

Featured Image:

Pin Connections:

LED Strip:

  • VCC -> Arduino 5V
  • GND -> Arduino GND
  • Signal -> Arduino digital pin 3

Circuit Diagram:

Code:

Before uploading the code, install the “FastLED” library from the library manager of Arduino IDE.

#include <FastLED.h>

int i;
int r;
int g;
int b;

const int strip1 = 3; //GPIO pin for D0.


CRGB leds1[42];
CRGB leds2[42];
CRGB leds3[42];
CRGB leds4[42];
CRGB leds5[42];
CRGB leds6[42];
CRGB leds7[42];
CRGB leds8[42];

void setup() {

  FastLED.addLeds<WS2812, strip1, GRB>(leds1, 42);


}

void loop() {

  for (int s = 0; s <= 50; s++) {
    r = random(0, 256);
    g = random(0, 256);
    b = random(0, 256);

    for (i = 0; i <= 42 && i >= 0; i++) {
      FastLED.setBrightness(255);
      leds1[i] = CRGB(r, g, b);
      leds2[i] = CRGB(r, g, b);
      leds3[i] = CRGB(r, g, b);
      leds4[i] = CRGB(r, g, b);
      leds5[i] = CRGB(r, g, b);
      leds6[i] = CRGB(r, g, b);
      leds7[i] = CRGB(r, g, b);
      leds8[i] = CRGB(r, g, b);
      if (i > 4) {
        for (int a = 5; a <= 10 && (i - a) >= 0; a++) {
          leds1[i - a] = CRGB(0, 0, 0);
          leds2[i - a] = CRGB(0, 0, 0);
          leds3[i - a] = CRGB(0, 0, 0);
          leds4[i - a] = CRGB(0, 0, 0);
          leds5[i - a] = CRGB(0, 0, 0);
          leds6[i - a] = CRGB(0, 0, 0);
          leds7[i - a] = CRGB(0, 0, 0);
          leds8[i - a] = CRGB(0, 0, 0);
        }
      }
      if (i > 10) {
        for (int a = 10; a <= 15 && (i - a) >= 0; a++) {
          leds1[i - a] = CRGB(r, g, b);
          leds2[i - a] = CRGB(r, g, b);
          leds3[i - a] = CRGB(r, g, b);
          leds4[i - a] = CRGB(r, g, b);
          leds5[i - a] = CRGB(r, g, b);
          leds6[i - a] = CRGB(r, g, b);
          leds7[i - a] = CRGB(r, g, b);
          leds8[i - a] = CRGB(r, g, b);
        }
      }
      if (i > 15) {
        for (int a = 15; a <= 20 && (i - a) >= 0; a++) {
          leds1[i - a] = CRGB(0, 0, 0);
          leds2[i - a] = CRGB(0, 0, 0);
          leds3[i - a] = CRGB(0, 0, 0);
          leds4[i - a] = CRGB(0, 0, 0);
          leds5[i - a] = CRGB(0, 0, 0);
          leds6[i - a] = CRGB(0, 0, 0);
          leds7[i - a] = CRGB(0, 0, 0);
          leds8[i - a] = CRGB(0, 0, 0);
        }
      }
      FastLED.show();
      delay(100);
    }
  }

  //................Random on each strip...................//

  for (int s = 0; s <= 20; s++) {
    r = random(0, 256);
    g = random(0, 256);
    b = random(0, 256);

    for (i = 0; i <= 42 && i >= 0; i++) {
      FastLED.setBrightness(255);
      leds1[i] = CRGB(r, g, b);
    }
    r = random(0, 256);
    g = random(0, 256);
    b = random(0, 256);

    for (i = 0; i <= 42 && i >= 0; i++) {
      FastLED.setBrightness(255);
      leds2[i] = CRGB(r, g, b);
    }
    r = random(0, 256);
    g = random(0, 256);
    b = random(0, 256);

    for (i = 0; i <= 42 && i >= 0; i++) {
      FastLED.setBrightness(255);
      leds3[i] = CRGB(r, g, b);
    }
    r = random(0, 256);
    g = random(0, 256);
    b = random(0, 256);

    for (i = 0; i <= 42 && i >= 0; i++) {
      FastLED.setBrightness(255);
      leds4[i] = CRGB(r, g, b);
    }
    r = random(0, 256);
    g = random(0, 256);
    b = random(0, 256);

    for (i = 0; i <= 42 && i >= 0; i++) {
      FastLED.setBrightness(255);
      leds5[i] = CRGB(r, g, b);
    }
    r = random(0, 256);
    g = random(0, 256);
    b = random(0, 256);

    for (i = 0; i <= 42 && i >= 0; i++) {
      FastLED.setBrightness(255);
      leds6[i] = CRGB(r, g, b);
    }
    r = random(0, 256);
    g = random(0, 256);
    b = random(0, 256);

    for (i = 0; i <= 42 && i >= 0; i++) {
      FastLED.setBrightness(255);
      leds7[i] = CRGB(r, g, b);
    }
    r = random(0, 256);
    g = random(0, 256);
    b = random(0, 256);

    for (i = 0; i <= 42 && i >= 0; i++) {
      FastLED.setBrightness(255);
      leds8[i] = CRGB(r, g, b);
    }
    FastLED.show();
    delay(5000);
  }

  //.....................Random on each LED...........//
  for (int s = 0; s <= 20; s++) {

    for (i = 0; i <= 42 && i >= 0; i++) {
      FastLED.setBrightness(255);
      r = random(0, 256);
      g = random(0, 256);
      b = random(0, 256);
      leds1[i] = CRGB(r, g, b);
      leds2[i] = CRGB(r, g, b);
      leds3[i] = CRGB(r, g, b);
      leds4[i] = CRGB(r, g, b);
      leds5[i] = CRGB(r, g, b);
      leds6[i] = CRGB(r, g, b);
      leds7[i] = CRGB(r, g, b);
      leds8[i] = CRGB(r, g, b);
      FastLED.show();
    }
    delay(5000);
  }

  //.....................Random colour on every strip...........//
  for (int s = 20; s >= 0; s--) {
    r = random(0, 256);
    g = random(0, 256);
    b = random(0, 256);
    for (i = 0; i <= 42 && i >= 0; i++) {
      leds1[i] = CRGB(r, g, b);
      leds2[i] = CRGB(r, g, b);
      leds3[i] = CRGB(r, g, b);
      leds4[i] = CRGB(r, g, b);
      leds5[i] = CRGB(r, g, b);
      leds6[i] = CRGB(r, g, b);
      leds7[i] = CRGB(r, g, b);
      leds8[i] = CRGB(r, g, b);
    }
    for (int b = 0 ; b <= 255; b = b + 10) {
      FastLED.setBrightness(b);
      FastLED.show();
      delay(s);
    }
    delay(s * 100);
    for (int b = 255 ; b >= 0; b = b - 10) {
      FastLED.setBrightness(b);
      FastLED.show();
      delay(s);
    }
  }

  //.....................even odd led Blink...........//
  for (int s = 0; s <= 20; s++) {
    r = random(0, 256);
    g = random(0, 256);
    b = random(0, 256);
    for (i = 0; i <= 16 && i >= 0; i++) {
      leds1[2 * i] = CRGB(r, g, b);
      leds2[2 * i] = CRGB(r, g, b);
      leds3[2 * i] = CRGB(r, g, b);
      leds4[2 * i] = CRGB(r, g, b);
      leds5[2 * i] = CRGB(r, g, b);
      leds6[2 * i] = CRGB(r, g, b);
      leds7[2 * i] = CRGB(r, g, b);
      leds8[2 * i] = CRGB(r, g, b);
    }
    r = random(0, 256);
    g = random(0, 256);
    b = random(0, 256);
    for (i = 0; i <= 16 && i >= 0; i++) {
      leds1[2 * i + 1] = CRGB(r, g, b);
      leds2[2 * i + 1] = CRGB(r, g, b);
      leds3[2 * i + 1] = CRGB(r, g, b);
      leds4[2 * i + 1] = CRGB(r, g, b);
      leds5[2 * i + 1] = CRGB(r, g, b);
      leds6[2 * i + 1] = CRGB(r, g, b);
      leds7[2 * i + 1] = CRGB(r, g, b);
      leds8[2 * i + 1] = CRGB(r, g, b);
    }
    for (int b = 0 ; b <= 100; b++) {
      FastLED.setBrightness(50);
      FastLED.show();
      delay(500);
      FastLED.setBrightness(255);
      FastLED.show();
      delay(500);
    }
  }
}
#include <FastLED.h>

int i;
int r;
int g;
int b;

const int strip1 = 3; //GPIO pin for D0.


CRGB leds1[42];
CRGB leds2[42];
CRGB leds3[42];
CRGB leds4[42];
CRGB leds5[42];
CRGB leds6[42];
CRGB leds7[42];
CRGB leds8[42];

void setup() {

  FastLED.addLeds<WS2812, strip1, GRB>(leds1, 42);


}

void loop() {

  for (int s = 0; s <= 50; s++) {
    r = random(0, 256);
    g = random(0, 256);
    b = random(0, 256);

    for (i = 0; i <= 42 && i >= 0; i++) {
      FastLED.setBrightness(255);
      leds1[i] = CRGB(r, g, b);
      leds2[i] = CRGB(r, g, b);
      leds3[i] = CRGB(r, g, b);
      leds4[i] = CRGB(r, g, b);
      leds5[i] = CRGB(r, g, b);
      leds6[i] = CRGB(r, g, b);
      leds7[i] = CRGB(r, g, b);
      leds8[i] = CRGB(r, g, b);
      if (i > 4) {
        for (int a = 5; a <= 10 && (i - a) >= 0; a++) {
          leds1[i - a] = CRGB(0, 0, 0);
          leds2[i - a] = CRGB(0, 0, 0);
          leds3[i - a] = CRGB(0, 0, 0);
          leds4[i - a] = CRGB(0, 0, 0);
          leds5[i - a] = CRGB(0, 0, 0);
          leds6[i - a] = CRGB(0, 0, 0);
          leds7[i - a] = CRGB(0, 0, 0);
          leds8[i - a] = CRGB(0, 0, 0);
        }
      }
      if (i > 10) {
        for (int a = 10; a <= 15 && (i - a) >= 0; a++) {
          leds1[i - a] = CRGB(r, g, b);
          leds2[i - a] = CRGB(r, g, b);
          leds3[i - a] = CRGB(r, g, b);
          leds4[i - a] = CRGB(r, g, b);
          leds5[i - a] = CRGB(r, g, b);
          leds6[i - a] = CRGB(r, g, b);
          leds7[i - a] = CRGB(r, g, b);
          leds8[i - a] = CRGB(r, g, b);
        }
      }
      if (i > 15) {
        for (int a = 15; a <= 20 && (i - a) >= 0; a++) {
          leds1[i - a] = CRGB(0, 0, 0);
          leds2[i - a] = CRGB(0, 0, 0);
          leds3[i - a] = CRGB(0, 0, 0);
          leds4[i - a] = CRGB(0, 0, 0);
          leds5[i - a] = CRGB(0, 0, 0);
          leds6[i - a] = CRGB(0, 0, 0);
          leds7[i - a] = CRGB(0, 0, 0);
          leds8[i - a] = CRGB(0, 0, 0);
        }
      }
      FastLED.show();
      delay(100);
    }
  }

  //................Random on each strip...................//

  for (int s = 0; s <= 20; s++) {
    r = random(0, 256);
    g = random(0, 256);
    b = random(0, 256);

    for (i = 0; i <= 42 && i >= 0; i++) {
      FastLED.setBrightness(255);
      leds1[i] = CRGB(r, g, b);
    }
    r = random(0, 256);
    g = random(0, 256);
    b = random(0, 256);

    for (i = 0; i <= 42 && i >= 0; i++) {
      FastLED.setBrightness(255);
      leds2[i] = CRGB(r, g, b);
    }
    r = random(0, 256);
    g = random(0, 256);
    b = random(0, 256);

    for (i = 0; i <= 42 && i >= 0; i++) {
      FastLED.setBrightness(255);
      leds3[i] = CRGB(r, g, b);
    }
    r = random(0, 256);
    g = random(0, 256);
    b = random(0, 256);

    for (i = 0; i <= 42 && i >= 0; i++) {
      FastLED.setBrightness(255);
      leds4[i] = CRGB(r, g, b);
    }
    r = random(0, 256);
    g = random(0, 256);
    b = random(0, 256);

    for (i = 0; i <= 42 && i >= 0; i++) {
      FastLED.setBrightness(255);
      leds5[i] = CRGB(r, g, b);
    }
    r = random(0, 256);
    g = random(0, 256);
    b = random(0, 256);

    for (i = 0; i <= 42 && i >= 0; i++) {
      FastLED.setBrightness(255);
      leds6[i] = CRGB(r, g, b);
    }
    r = random(0, 256);
    g = random(0, 256);
    b = random(0, 256);

    for (i = 0; i <= 42 && i >= 0; i++) {
      FastLED.setBrightness(255);
      leds7[i] = CRGB(r, g, b);
    }
    r = random(0, 256);
    g = random(0, 256);
    b = random(0, 256);

    for (i = 0; i <= 42 && i >= 0; i++) {
      FastLED.setBrightness(255);
      leds8[i] = CRGB(r, g, b);
    }
    FastLED.show();
    delay(5000);
  }

  //.....................Random on each LED...........//
  for (int s = 0; s <= 20; s++) {

    for (i = 0; i <= 42 && i >= 0; i++) {
      FastLED.setBrightness(255);
      r = random(0, 256);
      g = random(0, 256);
      b = random(0, 256);
      leds1[i] = CRGB(r, g, b);
      leds2[i] = CRGB(r, g, b);
      leds3[i] = CRGB(r, g, b);
      leds4[i] = CRGB(r, g, b);
      leds5[i] = CRGB(r, g, b);
      leds6[i] = CRGB(r, g, b);
      leds7[i] = CRGB(r, g, b);
      leds8[i] = CRGB(r, g, b);
      FastLED.show();
    }
    delay(5000);
  }

  //.....................Random colour on every strip...........//
  for (int s = 20; s >= 0; s--) {
    r = random(0, 256);
    g = random(0, 256);
    b = random(0, 256);
    for (i = 0; i <= 42 && i >= 0; i++) {
      leds1[i] = CRGB(r, g, b);
      leds2[i] = CRGB(r, g, b);
      leds3[i] = CRGB(r, g, b);
      leds4[i] = CRGB(r, g, b);
      leds5[i] = CRGB(r, g, b);
      leds6[i] = CRGB(r, g, b);
      leds7[i] = CRGB(r, g, b);
      leds8[i] = CRGB(r, g, b);
    }
    for (int b = 0 ; b <= 255; b = b + 10) {
      FastLED.setBrightness(b);
      FastLED.show();
      delay(s);
    }
    delay(s * 100);
    for (int b = 255 ; b >= 0; b = b - 10) {
      FastLED.setBrightness(b);
      FastLED.show();
      delay(s);
    }
  }

  //.....................even odd led Blink...........//
  for (int s = 0; s <= 20; s++) {
    r = random(0, 256);
    g = random(0, 256);
    b = random(0, 256);
    for (i = 0; i <= 16 && i >= 0; i++) {
      leds1[2 * i] = CRGB(r, g, b);
      leds2[2 * i] = CRGB(r, g, b);
      leds3[2 * i] = CRGB(r, g, b);
      leds4[2 * i] = CRGB(r, g, b);
      leds5[2 * i] = CRGB(r, g, b);
      leds6[2 * i] = CRGB(r, g, b);
      leds7[2 * i] = CRGB(r, g, b);
      leds8[2 * i] = CRGB(r, g, b);
    }
    r = random(0, 256);
    g = random(0, 256);
    b = random(0, 256);
    for (i = 0; i <= 16 && i >= 0; i++) {
      leds1[2 * i + 1] = CRGB(r, g, b);
      leds2[2 * i + 1] = CRGB(r, g, b);
      leds3[2 * i + 1] = CRGB(r, g, b);
      leds4[2 * i + 1] = CRGB(r, g, b);
      leds5[2 * i + 1] = CRGB(r, g, b);
      leds6[2 * i + 1] = CRGB(r, g, b);
      leds7[2 * i + 1] = CRGB(r, g, b);
      leds8[2 * i + 1] = CRGB(r, g, b);
    }
    for (int b = 0 ; b <= 100; b++) {
      FastLED.setBrightness(50);
      FastLED.show();
      delay(500);
      FastLED.setBrightness(255);
      FastLED.show();
      delay(500);
    }
  }
}
Scroll to Top