мысли разные мои
авторский проект

Простенький, но интересный эффект для ленты WS2812b. В начале ленты зажигается огонек, который затем падает вниз, постепенно заполняя ленту. Цвет можно указать, можно установить случайный. Скетч масштабируется для любого количества светодиодов. Скорость регулируется. Используется библиотека AdafruitNeoPixel 

Посмотреть на YouTube

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
  #include <avr/power.h>
#endif
#define PIN            6
#define NUMPIXELS      30  // определяем количество светиков в ленте
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int delayval = 5; // скорость падения капли
void setup() 
{
  pixels.begin();
}
 
int rcolor = 0;
int gcolor = 0;
int bcolor = 0;
int i;
int j;
void loop() {
  for(i=0;i<NUMPIXELS;i++)
  {
    //вычисляем случайный цвет
    rcolor = 10*random(1,25); //random(1,254);
    gcolor = 10*random(1,25); //random(1,254);
    bcolor = 10*random(1,25); //random(1,254);
    
    // берем первый цвет
    pixels.setPixelColor(0, pixels.Color(rcolor,gcolor,bcolor));
    pixels.show();
    delay(500); //пауза при перемещении капли
 
    // перемещаем цвет вниз до конца, NUMPIXELS-i: 
    for(j=2;j<NUMPIXELS-i;j=j+2)
    {
      pixels.setPixelColor(j-2, pixels.Color(0,0,0));
      pixels.setPixelColor(j, pixels.Color(rcolor,gcolor,bcolor));
      pixels.show();
      delay(delayval);
      if(j==(NUMPIXELS-i)-2)
      {
        pixels.setPixelColor(j, pixels.Color(0,0,0));
        pixels.setPixelColor(j+1, pixels.Color(rcolor,gcolor,bcolor));
              pixels.show();
      delay(delayval);
      }
    } 
  }
  
  for(int i=0;i<NUMPIXELS;i++)
  {
    // очищаем ленту после полного заполнения
    pixels.setPixelColor(i, pixels.Color(0,0,0));
    pixels.show();
    delay(1); 
  }

}