Бегущий огонек.
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN 6 //Пин, к которому подключены светодиоды ws2812
#define NUMPIXELS 16 //Количество подключенных светодиодов
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define DELAYVAL 500 //Задержка между переключением светодиодов
void setup() {
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
pixels.begin();
}
void loop() {
pixels.clear();
for(int i=0; i<NUMPIXELS; i++) {
pixels.setPixelColor(i, pixels.Color(0, 150, 0));
pixels.setPixelColor(i-1, pixels.Color(0, 150, 0));
pixels.show();
delay(DELAYVAL);
}
}
Радуга.
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
#define PIN 6 //Пин, к которому подключены светодиоды ws2812
#define NUMPIXELS 16 //Количество подключенных светодиодов
Adafruit_NeoPixel strip(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin();
strip.show();
}
void loop() {
rainbow(10);
}
void rainbow(int wait) {
//Проходим по цветовому кругу...
for(long firstPixelHue = 0; firstPixelHue < 3*65536; firstPixelHue += 256) {
//Смещение оттенка пикселя, чтобы сделать один полный оборот цветового круга по длине ленты
for(int i=0; i<strip.numPixels(); i++) {
int pixelHue = firstPixelHue + (i * 65536L / strip.numPixels());
//strip.ColorHSV () может принимать 1 или 3 аргумента:
//Оттенок (от 0 до 65535)
//Опционально насыщенность и значение яркость (каждый от 0 до 255)
//Здесь мы используем только вариант оттенка с одним аргументом
//Результат передается через strip.gamma32(), чтобы обеспечить более «правильные» цвета перед присвоением каждому пикселю:
strip.setPixelColor(i, strip.gamma32(strip.ColorHSV(pixelHue)));
}
strip.show();
delay(wait);
}
}
Нарастание яркости.
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN 6 //Пин, к которому подключены светодиоды ws2812
#define NUMPIXELS 16 //Количество подключенных светодиодов
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define DELAYVAL 500 //Задержка между увеличениями яркости
void setup() {
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
pixels.begin();
}
void loop() {
pixels.clear();
for(int br=1; br<255; br++) {
for(int i=0; i<NUMPIXELS; i++) {
pixels.setPixelColor(i, pixels.Color(0, br, 0));
pixels.show();
}
delay(DELAYVAL);
}
}