//
// LED Ring demo
//
// Author: Heinz Endres, Sep-2024
//
# include "Adafruit_NeoPixel.h"
# define pinNumber 7
// number of LEDs in one ring
# define numLEDs 16
# define numLEDs2 numLEDs*2
// Delay used
# define del 50
Adafruit_NeoPixel LEDRing(numLEDs2, pinNumber, NEO_GRB + NEO_KHZ800);
void setup()
{
// setBrightness(0..255)
LEDRing.setBrightness(255);
// NeoPixel Bibliothek initialisieren
LEDRing.begin();
}
// set LED for left ring from i=0 to numLEDs-1
void setRingLeft (int i, int r, int g, int b) {
LEDRing.setPixelColor(i, LEDRing.Color(r, g, b));
}
// set LED for right ring from i=0 to numLEDs-1
void setRingRight (int i, int r, int g, int b) {
int k = numLEDs2-i;
if (k == numLEDs2) k=numLEDs;
LEDRing.setPixelColor(k, LEDRing.Color(r, g, b));
}
void setRing (int i, int r, int g, int b) {
setRingLeft(i,r,g,b);
setRingRight(i,r,g,b);
}
void loop()
{
// running light
for (int i = 0; i < numLEDs; i++)
{
setRing(i,100, 100, 100);
LEDRing.show();
delay(del);
}
for (int j = numLEDs - 1; j >= 0 ; j--)
{
for (int i = 0; i <= j; i++)
{
setRing(i,255, 255, 0);
if (i > 0) setRing(i-1, 100, 100, 100);
LEDRing.show();
delay(del);
}
setRing(j,150, 150, 0);
LEDRing.show();
delay(del*10);
}
}