|

Работа с адресными светодиодными лентами NeoPixel

Всем привет! В этой статье я расскажу, как подключать и как управлять адресными светодиодными лентами и кольцами от NeoPixel.

Адресные светодиоды управляются каждый по отдельности, то есть можно все светодиоды зажечь разными цветами.

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

Вот готовый код, сейчас разберём как он устроен.

#include <Adafruit_NeoPixel.h>
#define PIN 2 // Пин Arduino к которому подключена лента
#define NUMPIXELS 30 // Количество светодиодов в ленте

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

int delayval = 100; // Время задержки
int redColor = 0;
int greenColor = 0; // ЦВЕТА
int blueColor = 0;

void setup() {
  pixels.begin(); // Запускаем ленту
}

void loop(){
   for(int i = 0; i < NUMPIXELS; i++){
     setColor(); // Генерируем цвета
     // Отправляем сигнал на ленту
     pixels.setPixelColor(i, pixels.Color(redColor, greenColor, blueColor));
     pixels.show(); // Включаем светодиоды
     delay(delayval); // Перерыв
   }
}

void setColor(){  // Генерируем цвета
  redColor = random(0, 255);
  greenColor = random(0,255);
  blueColor = random(0, 255);
}

В первой строке мы видим функцию INCLUDE. С помощью неё мы подключаем библиотеку для светодиодов. Во второй строке мы указываем, к какому пину подключен цифровой вход светодиодной ленты (DIN). В третьей строке мы указываем количество светодиодов в нашей ленте.

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

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

В функции SETUP (выполняется при подаче питания на Arduino 1 раз) мы инициализируем библиотеку для светодиодов.

В цикле LOOP (выполняется циклично после SETUP, пока подаётся питание на Arduino) мы создаём счётчик, который будет выполнять указанные в фигурных скобках действия и увеличивать переменную i на 1, пока переменная i не станет равна количеству светодиодов, то есть светодиоды закончились, начинаем снова. В этом счётчике мы вызываем функцию setColor(), которая генерирует значения цветов, затем отправляем эти значения на ленту, с перерывом, который мы прописывали в переменной в седьмой строке.

И в конце кода мы создаём функцию setColor(), которая генерирует значения цветов в диапазоне от 0 до 255 функцией random().

Вот так работает этот код. Вообще, если вы хорошо разбираетесь в программировании Arduino, можно сделать управление этой лентой с телефона, ИК пульта или просто кнопкой и сделать множество эффектов свечения.

Спасибо за внимание! 😊

5/5 - (18 голосов)


Поделись!