#include <Adafruit_NeoPixel.h>
#define NEOPIXEL_PIN A5 // номер порта к которому подключен модуль
#define NEOPIXEL_LEDS 36 // количество светодиодов
#define ENCODER_SW 3 // кнопка на энкодере
const byte encoderPinA = 2; // CLK энкодера
const byte encoderPinB = 4; // DT энкодера
const int8_t maxSpeed = 100; // верхний лимит скорости
const int8_t minSpeed = -100; // нижний лимит скорости
volatile bool up; // направление вращения кольца
volatile bool clearFlag = true; // флаг очистки кольца
volatile int8_t speed = 0; // скорость работы
volatile uint8_t mode = 0; // режим работы
Adafruit_NeoPixel rgb_ring = Adafruit_NeoPixel(NEOPIXEL_LEDS, NEOPIXEL_PIN, NEO_GRB + NEO_KHZ800); //first number change does distance between colors
void setup() {
pinMode(ENCODER_SW, INPUT);
pinMode (encoderPinA, INPUT);
pinMode (encoderPinB, INPUT);
attachInterrupt(digitalPinToInterrupt(ENCODER_SW), button_isr, FALLING);
attachInterrupt(digitalPinToInterrupt(encoderPinA), encoder_isr, CHANGE);
randomSeed(analogRead(0));
rgb_ring.begin();
}
void loop()
{
if (clearFlag) {
rgb_ring.setBrightness(255);
rgb_ring.clear();
rgb_ring.show();
clearFlag = false;
}
if (mode == 0)
rainbowCycle();
else if (mode == 1)
colorDotCycle(16841234);
else if (mode == 2)
fadingCycle();
}