Запрос на создание скетча ws2812b кольцо

Всем привет.
Описание задания.
есть кольцо ws2812b на 24 светодиода.
нужно сделать подсветку для микроскопа с управлением: 1 яркости, 2 цвет кольца (холодный белый, теплый белый, синий, красный, зеленый, оранжевый), 3 включение определенных светодиодов и 4 контролируемое перемещение включенных светодиодов по кругу.

Жду Ваши предложения со стоимостью работы

Функции 2 и 3 предполагаю реализовать на кнопках. 1 и 4 на переменных резисторах или энкодерах.
Жду предложений

А почему на пинах 1 и 4? . Oстальные заняты? . В принципе, контакт 1 не должен использоваться, поскольку он используется вместе с контактом 0 для Tx и Rx связи с USB-портом компьютера.
Функция яркости легко реализуется путем подключения потенциометра к одному из аналоговых портов arduino (порты A0 - A5).
Вывод 2 обычно используется для выхода управления кольцом, что в принципе оставляет 11 свободных контактов (D3 - D13), которые при подключении к 11-позиционному поворотному переключателю позволят нам сделать 11 различных последовательностей для достижения ваших пунктов 2, 3 и 4.
Пункт 2 займет 6 из этих последовательностей, но пункт 4 не дает четкого понимания, что вы хотите сделать, и я не знаю, сможем ли мы сделать это с оставшимися 5, определите немного больше, что вы хотите сделать в пункте 4.
Приветствую вас

Это не пины, пины можно любые все свободны.

Что то круто. 11 позиционный. мне бы проще. например 1 кнопкой при нажатии на которую будет включатся следующая программа. так же с пунктом 2.

По пункту 4: допустим горит по 2 светодиода напротив друг друга. и мне нужно их переместить по часовой стрелке (или против, не принципиально) на 30/60/90/120 итд градусов. это нужно для того чтобы я смог регулировать сторону подачи света....

Затем просто добавляем две кнопки для вращения влево и вправо.
Если мы будем использовать только цифровые контакты Arduino nano, электрическая схема будет следующей.


Вы бы использовали позицию для программы токарной обработки с двумя кнопками, оставляя вам 8 позиций для еще 8 функций.


Схему я набросал. Позиционный переключатель как то грубовато.
2 инкрементальный энкодер и 2 кнопки

  • 1 кнопка - цвет led

  • 2 кнопка - переключение led режимов (полное кольцо, половина кольца, четверть кольца, 3 led с одной стороны, по 3 led с двух сторон

  • 1 энкодер - регулировка яркости

  • 2й энкодер перемещение влево-вправо горящих led

запрос актуален?

на

#define LED_TYPE WS2812B
#define COLOR_ORDER GRB
#define BRIGHTNESS 255
#define NumLed 24
#define LED_PIN 3
#define PotiPin A0
#define ButtonPin 3

byte Pos = 0;
byte Option = 0;
#include <FastLED.h>
CRGB leds[NumLed];
uint32_t colors[] {CRGB::White, CRGB::WhiteSmoke, CRGB::Blue, CRGB::Red, CRGB::Green, CRGB::DarkOrange};

void setup() {
  FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NumLed).setCorrection(TypicalLEDStrip);
  FastLED.setBrightness(BRIGHTNESS);
  pinMode(ButtonPin, INPUT_PULLUP);
}

void loop() {
  if (digitalRead(ButtonPin) == LOW) {
    Option = (Option++) % 4;
    delay(100);
    while (digitalRead(ButtonPin) == LOW);
  }
  switch (Option) {
    case 0:
      Option1();
      break;
    case 1:
      Option2();
      break;
    case 2:
      Option3();
      break;
    case 3:
      Option4();
      break;
  }
  FastLED.show();
}

void Option1() {
  byte value = analogRead(PotiPin) >> 2;
  fill_solid(leds, NumLed, CRGB(value, value, value));
}

void Option2() {
  byte ShowingColor = map(analogRead(PotiPin), 5, 1020, 0, sizeof(colors) / sizeof(colors[0]));
  fill_solid(leds, NumLed, colors[ShowingColor]);
}

void Option3() {
  byte HowMuch = map(analogRead(PotiPin), 5, 1020, 0, NumLed);
  fill_solid(leds, NumLed, CRGB::Black);
  fill_solid(leds, HowMuch, CRGB::Red);
}

void Option4() {
  byte Offset = map(analogRead(PotiPin), 5, 1020, 0, NumLed - 1);
  fill_solid(leds, NumLed, CRGB::Black);
  for (byte i = 0; i < NumLed; i++) {
    leds[(i + Offset) % NumLed] = CRGB::White;
  }
}