Тип светодиодов 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() {
// Чтобы поддерживать простую программу,
// здесь не нужно ничего добавлять.
}
Так сколько в итоге чипов WS2811 на ленте - 300 или 100, каждый на 3 леда?
Вы константу LEDS_PER_SEGMENT 3 в коде задали, но нигде не используете.
Если у вас реально 3 леда в сегменте, то число NUM_LEDS надо задавать в 3 раза меньше.
Вот есть код у меня, я хочу будильник сделать, но на минимальной яркости они мигает цветами как тварь.
.#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);
}
Если мой рецепт не поможет, просто перепишите скетч под библиотеку Гайвера, раз она с вашей лентой работает.
У вас кода-то десяток строк, не считая переменных…
Библиотека гайвера тоже не работает, на белом цвете эти мерцания пропадают. Я уже без понятия в чём может быть дело.
Попробовал такой код, но он всегда подмешивает рандомные 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
}