Проблема с светодиодной лентой. Тип ws2811b. Криво работает

Тип светодиодов WS2811B.
На ленте + - и din
Написал такой код,

#include <FastLED.h>

// Определение параметров LED ленты
#define DATA_PIN 6    // Пин данных, подключенный к ленте. Можно изменить на нужный пин.
#define LED_TYPE WS2811  // Тип ленты
#define COLOR_ORDER GRB  // Порядок цветов на ленте

// Определение параметров ленты
#define NUM_LEDS 300      // Общее количество светодиодов на ленте
#define LEDS_PER_SEGMENT 3  // Количество светодиодов в одном отрезке

CRGB leds[NUM_LEDS];

void setup() {
  // Инициализация светодиодной ленты
  FastLED.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS);
  FastLED.setBrightness(100);  // Установка яркости (от 0 до 255)

  // Включение всех светодиодов красным цветом
  fill_solid(leds, NUM_LEDS, CRGB::Red);
  FastLED.show();
}

void loop() {
  // Чтобы поддерживать простую программу,
  // здесь не нужно ничего добавлять.
}

Но получилось это, что не так? Вообще не понимаю


Микроконтроллер какой? Не esp случайно?

Нет, ардуино уно. Китайская;)

На Mega 328P

Может потому-что частота процессора правает?

Такое бывает?

Так сколько в итоге чипов WS2811 на ленте - 300 или 100, каждый на 3 леда?
Вы константу LEDS_PER_SEGMENT 3 в коде задали, но нигде не используете.
Если у вас реально 3 леда в сегменте, то число NUM_LEDS надо задавать в 3 раза меньше.

Там 3 светодиода в коде как один исправил, но проблемы не решило

Схему подключения нарисуйте. Питания хватает? Для 300 светодиодов нужно порядка 300 * 0.06 = 18 ампер

Питания то хватает)) Бп на 300 ватт)) Попробовал код у гайвера, там он заливает как/то одним цветом…
А схема с 6 пина в Din и ±, дело в коде…

Что значит эта фраза? С кодом гайвера работает или нет?

Слушайте, вы все уже накатили по случаю пятницы. что ли?

Схему нарисуйте.
Плюс минус от ленты куда подключен? от чего питается ардуино? Земля у ардуино и ленты соединена?

С кодом гайвера заливает белым нормально, и радуга нормально бегает.
[Uploading: IMG_4450.jpeg…](

ну и пользуйтесь, чего вам еще надо?

Вот есть код у меня, я хочу будильник сделать, но на минимальной яркости они мигает цветами как тварь.
.#include <Adafruit_NeoPixel.h>
#define LED_PIN 6 // Пин, к которому подключен управляющий пин светодиодной ленты
#define LED_COUNT 60 // Общее количество светодиодов в ленте
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin();
strip.show(); // Инициализация ленты
}

void loop() {
// Постепенное разгорание с минимальной до максимальной яркости
for (int brightness = 0; brightness <= 255; brightness++) {
for (int i = 0; i < strip.numPixels(); i++) {
if (brightness > 0) {
strip.setPixelColor(i, strip.Color(brightness, brightness, brightness));
} else {
strip.setPixelColor(i, 0); // Гасим светодиоды при минимальной яркости
}
}
strip.show(); // Отображение изменений на ленте
delay(10); // Задержка между итерациями для плавного перехода
}
delay(1000);
}

В либе Гайвера минимальных градаций в 8 раз меньше, потому и не мигает.

Поставьте в своем цикле яркость не от нуля, а от 16, к примеру - и посмотрите что будет.

И да, вставьте код по правилам, а то от вас сейчас ровного места не останется.

Да не могу я с айфона, у меня сайт вылетает

Если мой рецепт не поможет, просто перепишите скетч под библиотеку Гайвера, раз она с вашей лентой работает.
У вас кода-то десяток строк, не считая переменных…

Пусть БП и 300 Вт, но сколько вольт на дальнем от него конце ленты я бы посмотрел чтоб не думалось.

Библиотека гайвера тоже не работает, на белом цвете эти мерцания пропадают. Я уже без понятия в чём может быть дело.
Попробовал такой код, но он всегда подмешивает рандомные 3 при обновлениии делая.

#include <FastLED.h>

// Define the number of LEDs in the strip
#define NUM_LEDS 60

// Define the data pin connected to the strip
#define DATA_PIN 6

// Create a CRGB array to store the color of each LED
CRGB leds[NUM_LEDS];

void setup() {
  // Initialize FastLED for WS2811 strip
  FastLED.addLeds<WS2811, DATA_PIN, GRB>(leds, NUM_LEDS);
}

void loop() {
  // Set all LEDs to red with a specified brightness (0-255)
  int brightness = 128; // Adjust this value as needed
  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CRGB::Red;
  }
  FastLED.setBrightness(brightness);
  FastLED.show();
  delay(1000); // You can adjust the delay to change the display duration
}

Я вот на ардуинку уже грешу, вообще ничего не понимаю уже