Инструкции

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

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

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

В сети

Пользователей: 302
Из них просматривают:
Аналоги: 109. Видео: 1. Даташиты: 102. Инструкции: 13. Новости: 20. Обзор: 2. Остальное: 2. Производители: 5. Профиль пользователя: 12. Теги: 9. Форум: 27.
Участников: 2
Гостей: 300

Google , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

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

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

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
Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.

Разное

Интересно

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

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