Подключение матрицы WS2812B к Ардуино

Матрица WS2812B Arduino

Матрица WS2812B Ардуино ► позволяет сделать множество крутых и интересных проектов. Продемонстрируем несколько интересных скетчей для ws2812b матрицы Arduino

Матрица WS2812B для Ардуино и просто адресная лента — позволяет сделать множество крутых и интересных проектов. На этой странице мы продемонстрируем несколько интересных скетчей для 8×8 матрицы WS2812B Arduino (подойдут и другие размеры матрицы — 16×16 или 32×32). Для создания различных красивых световых эффектов на матрице использовалась популярная библиотека Adafruit_NeoPixel.

Подключение WS2812B матрицы к Ардуино

Arduino матрица на адресной ленте ws2812b

Светодиодную матрицу на ws2812b 32×32 можно заказать на Алиэкспрессе, а можно сделать самому (это наш случай). На фото и видео показана матрица шириной 5 и высотой 8 пикселей (светодиодов). Для представленных примеров размер матрицы значения не имеет — главное указать общее количество светодиодов в ленте. На следующем фото можно увидеть, как из адресной ленты сделали матрицу.

Матрица из адресной ленты ws2812b своими руками
Матрица из адресной ленты своими руками

Если вы решили сделать матрицу из ws2812b своими руками, то при пайке обращайте внимание на направление стрелок, нарисованных на ленте. Во-вторых, поставьте резистор 100-500 кОм на цифровой вход ленты, чтобы подключать ленту к сигнальному пину Ардуино уже напрямую, без резистора. Высота матрицы должна быть не менее 8 строк, иначе при выводе букв на led дисплей, они у вас не будут помещаться.

Как подключить матрицу ws2812b к Ардуино




Для этого занятия нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • WS2812B матрица 8×8 / 16×16 / 32×32;
  • провода «папа-папа».
Схема подключения матрицы WS2812B к Ардуино
Схема подключения матрицы WS2812B к Arduino Uno

Первый пример заставляет матрицу из адресной ленты переливаться всеми цветами радуги. Перед загрузкой скетча в микроконтроллер, убедитесь, что у вас установлена библиотека Adafruit_NeoPixel.h. Если нет, то архив можно скачать на нашем сайте со страницы, где размещены все наиболее популярные библиотеки Ардуино. После установки и подключения матрицы WS2812B к Arduino Uno — загрузите скетч.

Скетч. Радуга на матрице ws2812b Ардуино

#include <Adafruit_NeoPixel.h> // подключаем библиотеку
// указываем количество пикселей в матрице и пин подключения
Adafruit_NeoPixel strip(35, 6, NEO_GRB + NEO_KHZ800);

void setup() {
   strip.begin();                     // инициализируем объект NeoPixel
   strip.show();                     // отключаем все пиксели на ленте
   strip.setBrightness(50);  // указываем яркость (максимум 255)
}

void loop() {
   for(uint16_t t = 0; t < 256; t++) {
     for(uint16_t p = 0; p < strip.numPixels(); p++) {
        strip.setPixelColor(p, Wheel((p+t) & 255));
     }
       strip.show();  // отправляем информацию на ленту
       delay(10);      // задержка для эффекта (можно менять)
   }
}
// функция Wheel задает нужный цвет пикселям (RGB)
uint32_t Wheel(byte WheelPos) {
   WheelPos = 255 - WheelPos;
   if(WheelPos < 85) {
       return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
   }
   if(WheelPos < 170) {
       WheelPos -= 85;
       return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
   }
   WheelPos -= 170;
   return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}

Пояснения к коду:

  1. в строчке Adafruit_NeoPixel strip(35, 6, NEO_GRB + NEO_KHZ800);: первое значение — это количество пикселей в ленте, а второе — это пин Ардуино к которому подключен цифровой вход матрицы из адресной ленты.

Бегущий огонек на матрице ws2812b Ардуино

Следующий пример подойдет и для простой адресной ленты, но так как матрица собрана из ws2812b зигзагом, то мерцание пикселей смотрится достаточно эффектно. Скорость мерцания светодиодов можно ускорять и замедлять с помощью команды delay. Цвет ленты можно менять, в процедуре void loop, которая вызывает функцию void theaterChase(), передавая информацию о цвете светодиодной адресной ленты.

Скетч. Бегущий огонек на матрице ws2812b Ардуино

#include <Adafruit_NeoPixel.h> // подключаем библиотеку
// указываем количество пикселей в матрице и пин подключения
Adafruit_NeoPixel strip(35, 6, NEO_GRB + NEO_KHZ800);

void setup() {
   strip.begin();                     // инициализируем объект NeoPixel
   strip.show();                     // отключаем все пиксели на ленте
   strip.setBrightness(50);  // указываем яркость (максимум 255)
}

void loop() {  
   theaterChase(strip.Color(200, 200, 200));  // белый цвет
   theaterChase(strip.Color(200,     0,     0));  // красный цвет
   theaterChase(strip.Color(0,     200,     0));  // зеленый цвет
   theaterChase(strip.Color(0,     0,     200));  // синий цвет
}

void theaterChase(uint32_t color) {
    for(int a = 0; a < 10; a++) {
       for(int b = 0; b < 3; b++) {
       strip.clear();
          for(int p = b; p < strip.numPixels(); p += 3) {
             strip.setPixelColor(p, color);
          }
       strip.show();  // отправляем информацию на ленту
       delay(50);      // задержка для эффекта (можно менять)
       }
    }
}

Пояснения к коду:

  1. в процедуре void loop () можно добавить новые оттенки и вызывать функцию void theaterChase() с нужным цветом — количество новых цветов не ограничено.
Эффекты на матрице из адресной ленты
Эффекты на матрице из адресной ленты

Следующий скетч демонстрирует наиболее красивые эффекты на матрице (видео размещено в начале страницы). Программа представляет собой рандомное включение светодиодов с разным оттенком и разной контрастностью. В примерах программ от библиотеки Adafruit_NeoPixel можно найти еще много, не менее интересных эффектов для адресной ленты или матрицы ws2812b для платы Arduino Nano.

Скетч. Эффекты на матрице из адресной ленты

#include <Adafruit_NeoPixel.h> // подключаем библиотеку
// указываем количество пикселей в матрице и пин подключения
Adafruit_NeoPixel strip(35, 6, NEO_GRBW + NEO_KHZ800);

void setup() {
   strip.begin();                     // инициализируем объект NeoPixel
   strip.show();                     // отключаем все пиксели на ленте
   strip.setBrightness(50);  // указываем яркость (максимум 255)
}

void loop() {
   // перебираем оттенки цвета (максимум 65536 цветов)
   for (uint32_t firstPixelHue = 0; firstPixelHue < 65536; firstPixelHue += 256) {
     for (int p = 0; p < strip.numPixels(); p++) {
        uint32_t pixelHue = firstPixelHue + (p * 65536L / strip.numPixels());
        // для каждого светодиода (i), задаем оттенок (pixelHue)
        strip.setPixelColor(p, strip.gamma32(strip.ColorHSV(pixelHue, 255)));
     }
     strip.show();  // отправляем информацию на ленту
     delay(10);      // задержка для эффекта (можно менять)
   }
}

Пояснения к коду:

  1. для изменения скорости мигания матрицы измените delay в скетче;
  2. чем больше вы указываете яркость strip.setBrightness();, тем больше тока будет потреблять устройство и сильнее будет греться лента.

Заключение. На этой странице мы лишь продемонстрировали, какие эффекты можно сделать на 16×16 матрице WS2812B Ардуино. Если вы хотите сделать пиктограммы или бегущую строку, используя адресную ленту в качестве дисплея или экрана — заходите в раздел проекты на Ардуино с LED-лентой на нашем сайте. Если у вас остались вопросы по подключению матрицы ws2812b — оставляйте их в комментариях.

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Загрузка...

Подборка на тему: Подключение матрицы WS2812B к Ардуино

Один комментарий для “Подключение матрицы WS2812B к Ардуино

  1. Матрица 12×11 светит только белым цветом. Меняю скетч — тоже самое. Спаял отдельно 12 диодов 2812b-то же. Аrduino Nano управляет только количеством светящихся диодов. Помогите пожалуйста

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *