Инструкции

Справочный раздел

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

Разделы инструкций

В сети

Пользователей: 131
Из них просматривают:
Аналоги: 52. Даташиты: 47. Инструкции: 1. Новости: 5. Остальное: 1. Профиль пользователя: 8. Форум: 17.
Участников: 1
Гостей: 130

Google , далее...
Рекорд 3921 человек онлайн установлен 06.03.2026.

Партнёры


Партнёры

Новые объявления

В настоящее время нет объявлений.
Оглавление

WS2812

Что такое WS2812

WS2812 — это RGB-светодиоды с встроенным контроллером. Каждый светодиод можно управлять индивидуально по одной линии данных.

Особенности:

  • управление по цифровому протоколу (1 провод);
  • поддержка цепочки светодиодов (каждый передаёт сигнал дальше);
  • возможность задать цвет (24 бита: R, G, B) и яркость.



Подключение WS2812 к Arduino

У светодиодной ленты/модуля WS2812 обычно 3 вывода:

  • DIN — вход данных (подключается к Arduino);
  • VCC — питание (обычно 5 В);
  • GND — земля.

Схема подключения:

  • Arduino 5V → VCC ленты (если питание небольшое, например 5–10 светодиодов; для длинных лент нужен внешний блок питания 5 В).
  • Arduino GND → GND ленты.
  • Arduino D6 (например) → DIN.
  • Рекомендуется поставить резистор 330–470 Ом в линию данных и конденсатор 1000 мкФ / 6.3 В между +5 В и GND для защиты.


Скетч для управления WS2812

Для работы используется библиотека Adafruit NeoPixel.
Установить можно через Arduino IDE → Sketch → Include Library → Manage Libraries… → "Adafruit NeoPixel".

Пример кода:

#include <Adafruit_NeoPixel.h>

#define PIN 6 // пин Arduino для данных
#define NUMPIXELS 8 // количество светодиодов в ленте

Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  pixels.begin(); // инициализация ленты
}

void loop() {   // Зажигаем все светодиоды красным поочередно
  for (int i = 0; i < NUMPIXELS; i++) {
    pixels.setPixelColor(i, pixels.Color(255, 0, 0)); // Красный
    pixels.show(); // обновляем
    delay(200);
  }

  // Синий эффект
  for (int i = 0; i < NUMPIXELS; i++) {
    pixels.setPixelColor(i, pixels.Color(0, 0, 255)); // Синий
  }
  pixels.show();
  delay(1000);

  // Зелёный эффект
  for (int i = 0; i < NUMPIXELS; i++) {
  pixels.setPixelColor(i, pixels.Color(0, 255, 0)); // Зеленый
  }
  pixels.show();
  delay(1000);
}



Как работает код

  • NUMPIXELS — указываем число светодиодов.
  • pixels.setPixelColor(n, pixels.Color(r,g,b)) — задаём цвет для конкретного светодиода.
  • pixels.show() — отправляет данные на ленту.
  • Можно делать анимации, переливы, бегущие огни и любые эффекты.



Популярные готовые эффекты

Бегущий огонь:

void theaterChase(uint32_t color, int wait) {
  for (int a = 0; a < 10; a++) { // Повторить 10 циклов
    for (int b = 0; b < 3; b++) {
      strip.clear();
      for (int c = b; c < strip.numPixels(); c += 3) {
        strip.setPixelColor(c, color);
      }
      strip.show();
      delay(wait);
    }
  }
}

// Использование:
// theaterChase(strip.Color(127, 127, 127), 100); // Белый бегущий огонь



Радужный эффект:

void rainbow(int wait) {
  for (long firstPixelHue = 0; firstPixelHue < 5*65536; firstPixelHue += 256) {
    for (int i = 0; i < strip.numPixels(); i++) {
      int pixelHue = firstPixelHue + (i * 65536L / strip.numPixels());
      strip.setPixelColor(i, strip.gamma32(strip.ColorHSV(pixelHue)));
    }
    strip.show();
    delay(wait);
  }
}

Плавное затухание цвета:

void fadeInOut(uint8_t r, uint8_t g, uint8_t b, int steps, int delayTime) {
  for (int i = 0; i <= steps; i++) {
    uint8_t brightness = map(i, 0, steps, 0, 255);
    strip.fill(strip.Color(
      (r * brightness) / 255,
      (g * brightness) / 255,
      (b * brightness) / 255
    ));
    strip.show();
    delay(delayTime);
  }

  for (int i = steps; i >= 0; i--) {
    uint8_t brightness = map(i, 0, steps, 0, 255);
    strip.fill(strip.Color(
      (r * brightness) / 255,
      (g * brightness) / 255,
      (b * brightness) / 255     ));
    strip.show();
    delay(delayTime);
  }
}

Цветовые функции

// Создание цвета из отдельных компонентов
uint32_t red = strip.Color(255, 0, 0);
uint32_t green = strip.Color(0, 255, 0);
uint32_t blue = strip.Color(0, 0, 255);

// Создание цвета из HSV (оттенок, насыщенность, значение)
uint32_t colorHSV = strip.ColorHSV(21845, 255, 255); // Синий цвет
uint32_t colorGamma = strip.gamma32(colorHSV); // С коррекцией гаммы



Краткая шпаргалка:

КомандаОписание
strip.begin()Инициализация ленты
strip.show()Отправка данных на ленту
strip.setPixelColor(n, r, g, b)Установка цвета диода n
strip.fill(color)Заполнение всей ленты цветом
strip.clear()Выключение всех диодов
strip.setBrightness()Установка яркости (0-255)
strip.numPixels()Количество светодиодов
strip.Color(r, g, b)Создание цвета
strip.ColorHSV(h, s, v)Создание цвета из HSV

 

Скачать datasheet WS2812

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.

Разное

Интересно

Диэлектрические и диамагнитные отвертки можно выпилить из старых стеклотекстолитовых плат.

Похожие инструкции