- Библиотеки
- Операторы
- Sketch
- Управляющие операторы
- Синтаксис
- Арифметические операторы
- Операторы сравнения
- Логические операторы
- Указатели доступа
- Битовые операторы
- Составные операторы
- Данные
- Типы данных
- Преобразование типов данных
- Область видимости переменных и квалификаторы
- Утилиты
- Цифровой ввод/вывод
- Аналоговый вход/выход
- Расширенный ввод/вывод
- Время
- Математические функции
- Тригонометрические функции
- Символы
- Случайные числа
- Биты и байты
- Внешние Прерывания
- Прерывания
- Функции передачи данных
- Функции
- Устройства
- Датчики
- WS2812
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() — отправляет данные на ленту.
- Можно делать анимации, переливы, бегущие огни и любые эффекты.