Как регулировать скорость автоматической смены цветов

Alexey_09

✩✩✩✩✩✩✩
26 Фев 2021
14
0
Добрый день!

Имеется скетч автоматической смены цветов (1530 цветов ColorWheel) на основе библиотеки GyverRGB. Не могу понять как регулировать скорость смены цветов? Поставил в скетче чтобы цвет увеличивался на 1, и все равно очень быстро цвета меняются. Как их замедлить?

C++:
#define PIN_R 9
#define PIN_G 10
#define PIN_B 11
#define CLK 2
#define DT 3
#define SW 4 //пин подключения кнопки энкодера
#define ENC_REVERSE 0       // 1 - инвертировать направление энкодера

#include <GyverRGB.h> // подключаю библиотеку RGB
GRGB strip(PIN_R, PIN_G, PIN_B);  // пины, куда подключены цвета (R, G, B)
#include <GyverEncoder.h> //подключаю библтиотеку Энкодера
Encoder enc(CLK, DT, SW); //называем энкодер (энк и кнопка)

int16_t brightness = 0; // переменная яркости

void setup() {
  //-----Энкодер-----
  enc.setType(TYPE2); // выбираю тип энкодера
  enc.setTickMode(AUTO); //устанавливаю автоматический режим опроса энкодера
  if (ENC_REVERSE) enc.setDirection(REVERSE);
  pinMode(PIN_R, OUTPUT);
  pinMode(PIN_G, OUTPUT);
  pinMode(PIN_B, OUTPUT);
  pinMode (6, OUTPUT);
  digitalWrite (6, HIGH);
  Serial.begin(9600);
}
void loop() {
  // плавно проходимся по всем цветам
  static int thisColor = 0;
  thisColor += 1;
  if (thisColor > 1530) thisColor = 0;
  strip.colorWheel(thisColor);
  strip.setBrightness(brightness);
  Serial.println (brightness);


  if (enc.isRight()) brightness += 10; // если был поворот направо, увеличиваем brightness на 10
  if (enc.isLeft()) brightness -= 10; // если был поворот налево, уменьшаем brightness на 10
  brightness = constrain(brightness, 10, 255); //ограничиваем значение brightness от 10 до 255
}
 

IamNikolay

★★★✩✩✩✩
15 Янв 2020
820
175
если энкодер не нужен, то самый простой вариант - вставить задержку (delay), а если нужен, то через millis() её организовать
 
  • Лойс +1
Реакции: Alexey_09

Alexey_09

✩✩✩✩✩✩✩
26 Фев 2021
14
0
Энкодер нужен. Идеально бы регулировать скорость энкодером. Через millis() регулировать скорость увеличения значения цвета (от 0 до 1530)?

UPD: Все получилось через millis(). Спасибо за подсказку!
 
Изменено: