Two RGB Rings and WS2813 Strip - Yellow Light — Xiao Esp32C6 simulation

Project to light up two Grove RGB LED Rings and a Grove WS2813 LED Strip in yellow.

An interactive Xiao Esp32C6 circuit simulation you can run free in your browser on Velxio, by rsetyo-widayanto.

Components

Sketch code

#include <Adafruit_NeoPixel.h>

#define STRIP_LEFT_PIN   2
#define STRIP_RIGHT_PIN  3
#define RING_LEFT_PIN    4
#define RING_RIGHT_PIN   5

#define STRIP_COUNT 60
#define RING_COUNT 48

Adafruit_NeoPixel stripLeft(
  STRIP_COUNT,
  STRIP_LEFT_PIN,
  NEO_GRB + NEO_KHZ800
);

Adafruit_NeoPixel stripRight(
  STRIP_COUNT,
  STRIP_RIGHT_PIN,
  NEO_GRB + NEO_KHZ800
);

Adafruit_NeoPixel ringLeft(
  RING_COUNT,
  RING_LEFT_PIN,
  NEO_GRB + NEO_KHZ800
);

Adafruit_NeoPixel ringRight(
  RING_COUNT,
  RING_RIGHT_PIN,
  NEO_GRB + NEO_KHZ800
);

void setup() {

  stripLeft.begin();
  stripRight.begin();
  ringLeft.begin();
  ringRight.begin();

  stripLeft.setBrightness(100);
  stripRight.setBrightness(100);
  ringLeft.setBrightness(100);
  ringRight.setBrightness(100);

  stripLeft.clear();
  stripRight.clear();
  ringLeft.clear();
  ringRight.clear();

  stripLeft.show();
  stripRight.show();
  ringLeft.show();
  ringRight.show();
}

void loop() {

  stripLeft.clear();
  stripRight.clear();
  ringLeft.clear();
  ringRight.clear();

  stripLeft.show();
  stripRight.show();
  ringLeft.show();
  ringRight.show();

  delay(300);

  // Semua bergerak secara bersamaan
  for (int i = 0; i < 60; i++) {

    // Kuning
    if (i < 60) {

      // Strip kiri
      stripLeft.setPixelColor(
        59 - i,
        stripLeft.Color(255, 180, 0)
      );

      // Strip kanan
      stripRight.setPixelColor(
        i,
        stripRight.Color(255, 180, 0)
      );
    }

    if (i < 48) {

      // Ring kiri berputar ke kiri
      ringLeft.setPixelColor(
        47 - i,
        ringLeft.Color(255, 180, 0)
      );

      // Ring kanan berputar ke kanan
      ringRight.setPixelColor(
        i,
        ringRight.Color(255, 180, 0)
      );
    }

    stripLeft.show();
    stripRight.show();
    ringLeft.show();
    ringRight.show();

    delay(35);
  }

  delay(700);

  // Mati semua
  stripLeft.clear();
  stripRight.clear();
  ringLeft.clear();
  ringRight.clear();

  stripLeft.show();
  stripRight.show();
  ringLeft.show();
  ringRight.show();

  delay(400);
}

More projects by rsetyo-widayanto