Нужен скетч с millis для кноки

Имеется код, создаю страбоскопы, сделал пару простеньких режимов на ws2812b, но при постоянной работы ленты, кнопка толком не опрашивается, приходится тыкать раз 100 что бы переключить режим. Жду ваших предложений

#include <EncButton.h>
#include "FastLED.h"

#define LED_COUNT 36
#define LED_PIN 8

unsigned long last_time;


CRGB strip[LED_COUNT];

EncButton<EB_TICK, 13> btn(INPUT_PULLUP);

void setup() {
  FastLED.addLeds<WS2812B, LED_PIN, RGB>(strip, LED_COUNT);
  Serial.begin(9600);
}

void loop() {
  if (millis() - last_time > 1) {
    last_time = millis();
    static byte mode = 0;
    btn.tick();
    if (btn.isClick()) {
      if (++mode >= 5) mode = 0;
    }
    switch (mode) {
      case 0: task1(); break;
      case 1: task2(); break;
      case 2: task3(); break;
      case 3: task4(); break;
      case 4: task5(); break;
  }
 }
}


void task1() {
  
}
void task2() {
  // Включаем все светодиоды
  for (int i = 0; i < 18; i++)
  {
    strip[i] = CRGB::Green; // Красный цвет.
  }
  // Передаем цвета ленте.
  FastLED.show();
  // Ждем 500 мс.
  delay(50);
  // Выключаем все светодиоды.
  for (int i = 0; i < 18; i++)
  {
    strip[i] = CRGB::Black; // Черный цвет, т.е. выключено.
  }
  // Передаем цвета ленте.
  FastLED.show();
  // Ждем 500 мс.
  delay(50);

  // Включаем все светодиоды
  for (int i = 18; i < 36; i++)
  {
    strip[i] = CRGB::Blue; // Синий цвет.
  }
  // Передаем цвета ленте.
  FastLED.show();
  // Ждем 500 мс.
  delay(50);
  // Выключаем все светодиоды.
  for (int i = 18; i < 36; i++)
  {
    strip[i] = CRGB::Black; // Черный цвет, т.е. выключено.
  }
  // Передаем цвета ленте.
  FastLED.show();
  // Ждем 500 мс.
  delay(500);
}

void task3() {
  fill_gradient_RGB(strip, 0, CRGB(225,225,225), 9, CRGB(225,225,225));
  fill_gradient_RGB(strip, 27, CRGB(225,225,255), 36, CRGB(225,225,255));
  FastLED.show();
  delay(150);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  fill_gradient_RGB(strip, 9, CRGB(225,225,255), 18, CRGB(225,225,255));
  fill_gradient_RGB(strip, 18, CRGB(225,225,255), 27, CRGB(225,225,255));
  FastLED.show();
  delay(150);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(150);

  fill_gradient_RGB(strip, 0, CRGB(225,225,225), 9, CRGB(225,225,225));
  fill_gradient_RGB(strip, 27, CRGB(225,225,255), 36, CRGB(225,225,255));
  FastLED.show();
  delay(150);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  fill_gradient_RGB(strip, 9, CRGB(225,225,255), 18, CRGB(225,225,255));
  fill_gradient_RGB(strip, 18, CRGB(225,225,255), 27, CRGB(225,225,255));
  FastLED.show();
  delay(150);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(150);

  fill_gradient_RGB(strip, 0, CRGB(225,225,225), 9, CRGB(225,225,225));
  fill_gradient_RGB(strip, 27, CRGB(225,225,255), 36, CRGB(225,225,255));
  FastLED.show();
  delay(150);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  fill_gradient_RGB(strip, 9, CRGB(225,225,255), 18, CRGB(225,225,255));
  fill_gradient_RGB(strip, 18, CRGB(225,225,255), 27, CRGB(225,225,255));
  FastLED.show();
  delay(150);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(150);

  fill_gradient_RGB(strip, 0, CRGB(225,225,225), 36, CRGB(225,225,225));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(225,225,225), 36, CRGB(225,225,225));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(225,225,225), 36, CRGB(225,225,225));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(225,225,225), 36, CRGB(225,225,225));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(225,225,225), 36, CRGB(225,225,225));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(225,225,225), 36, CRGB(225,225,225));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  delay(500);
  fill_gradient_RGB(strip, 0, CRGB(225,225,225), 36, CRGB(225,225,225));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(225,225,225), 36, CRGB(225,225,225));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(225,225,225), 36, CRGB(225,225,225));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(225,225,225), 36, CRGB(225,225,225));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  
  fill_gradient_RGB(strip, 0, CRGB(225,225,255), 18, CRGB(225,225,255));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 18, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(225,225,255), 18, CRGB(225,225,255));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 18, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(225,225,255), 18, CRGB(225,225,255));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 18, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(225,225,255), 18, CRGB(225,225,255));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 18, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  
  fill_gradient_RGB(strip, 18, CRGB(225,225,255), 36, CRGB(225,225,255));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 18, CRGB(225,225,255), 36, CRGB(225,225,255));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 18, CRGB(225,225,255), 36, CRGB(225,225,255));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 18, CRGB(225,225,255), 36, CRGB(225,225,255));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
}

void task4() {
  fill_gradient_RGB(strip, 0, CRGB(0,225,0), 18, CRGB(0,225,0));
  fill_gradient_RGB(strip, 18, CRGB(0,0,255), 36, CRGB(0,0,255));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,225,0), 18, CRGB(0,225,0));
  fill_gradient_RGB(strip, 18, CRGB(0,0,255), 36, CRGB(0,0,255));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,225,0), 18, CRGB(0,225,0));
  fill_gradient_RGB(strip, 18, CRGB(0,0,255), 36, CRGB(0,0,255));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,225,0), 18, CRGB(0,225,0));
  fill_gradient_RGB(strip, 18, CRGB(0,0,255), 36, CRGB(0,0,255));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,225,0), 18, CRGB(0,225,0));
  fill_gradient_RGB(strip, 18, CRGB(0,0,255), 36, CRGB(0,0,255));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(700);
  
  fill_gradient_RGB(strip, 0, CRGB(0,225,0), 18, CRGB(0,225,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,225,0), 18, CRGB(0,225,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,225,0), 18, CRGB(0,225,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,225,0), 18, CRGB(0,225,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,225,0), 18, CRGB(0,225,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 18, CRGB(0,0,255), 36, CRGB(0,0,255));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 18, CRGB(0,0,255), 36, CRGB(0,0,255));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 18, CRGB(0,0,255), 36, CRGB(0,0,255));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 18, CRGB(0,0,255), 36, CRGB(0,0,255));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 18, CRGB(0,0,255), 36, CRGB(0,0,255));
  FastLED.show();
  delay(50);
  fill_gradient_RGB(strip, 0, CRGB(0,0,0), 36, CRGB(0,0,0));
  delay(50);
  FastLED.show();
  delay(500);
}

void task5() {
  task2();
  delay(900);
  task3();
  delay(1000);
  task4();
  delay(1000);
}

доработаю ваш скетч за 2тыс, fridgetester@mail.ru

поинтересуюсь, что это такое?

сделал, отдам код за 1000!))) (при условии конечно что все ваши режимы работают, а 5 режим вовсе был выпилен, ибо я не понимаю что это))) )

ФСО однако, около тыщи :slight_smile:

дайте свои контакты)

в личке сообщение проверьте