Игра Яндекс Практикума
Игра Яндекс Практикума
Игра Яндекс Практикума

Готовимся к Новому году: простая гирлянда на Arduino

Отредактировано

Гирлянды и Новый Год созданы друг для друга. Почему бы не попробовать сделать гирлянду своими руками? Рассказываем, как это сделать.

17К открытий18К показов
Превью видео kRh7e5bnd4E
Превью видео kRh7e5bnd4E

К Новому Году везде начинают продавать гирлянды, но мы не ищем лёгких путей и предлагаем вам сделать гирлянду самостоятельно. Это просто, интересно и недорого, а заодно позволит вам потренироваться в работе с Arduino. Итак, начнём.

Примечание Для создания подобной гирлянды вам потребуются минимальные знания в Arduino. Однако если вы в себе не уверены — ничего страшного:

Что понадобится

  • Arduino Uno;
  • адресная светодиодная лента на WS2811;
  • источник питания для ленты.

Светодиодная лента

Светодиодная лента — это группа из светодиодов, размещённых на гибком и клейком основании. Лента может быть длиной от 30 см до 5 м.

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

Готовимся к Новому году: простая гирлянда на Arduino 1
Традиционная адресная светодиодная лента

У таких адресных светодиодных лент множество форм-факторов. Есть традиционные формы лент или же матрицы. Есть ленты с отдельными светодиодами, которые лучше всего подойдут на роль гирлянды. Вот некоторые их них:

Для примера будет использоваться последний тип адресной ленты:

Готовимся к Новому году: простая гирлянда на Arduino 2

Контроллер

В гирлянде контроллером ленты будет Arduino Uno. Но для этих целей подойдёт всё, что под руку попадётся: различные платы Arduino, МК серии ESP, STM, AVR, PIC, микрокомпьютеры Raspberry Pi. Единственное, о чём ещё следует помнить, это о логическом уровне контроллера. Некоторые из них работают на 3-вольтовой логике, и нужно будет использовать конвертер уровней.

Тока, выдаваемого с Arduino Uno, не хватит на запитывание ленты. Поэтому нужно использовать внешний источник питания на 5В (обратите внимание, некоторые ленты могут запитываться от 12В). Потребляемый ток напрямую зависит от длины ленты, поэтому нужно внимательно подбирать источник питания в зависимости от ваших целей. Минусовые контакты источника питания и контроллера нужно объединить. Плюс от источника питания нужно подключить напрямую к плюсовому контакту ленты. Сигнальный же контакт ленты нужно подключить к любому порту Uno.

Готовимся к Новому году: простая гирлянда на Arduino 3
Схема подключения ленты к контроллера и источнику питания

Для управления лентой понадобится специальная библиотека. В этой статье детально описывается установка библиотеки Adafruit NeoPixel.

После скачивания zip-файла, нужно установить его в Arduino IDE. Переходите в Скетч→Подключить библиотеку→Добавить .ZIP библиотеку и выберите нужный файл.

Зажигаем!

Вначале стоит проверить схему на работоспособность. Для этих целей подойдёт следующий код:

			#include 
 
#define PIN 6 // Номер пина, к которому подключен сигнальный провод ленты
#define LED_NUM 50  // Количество светодиодов в ленте
 
Adafruit_NeoPixel ledtape = Adafruit_NeoPixel(LED_NUM, PIN, NEO_GRB + NEO_KHZ800);  // Если у ленты контроллер WS2812, то третий параметр должен быть NEO_KHZ800, а если WS2811 — NEO_KHZ400
 
void setup() {
  ledtape.begin();
  ledtape.show(); // Выключит все светодиоды
}
 
void loop() {
 uint16_t i, j;
 
 for(j=0; j <256; j++) {
   for(i=0; i < ledtape.numPixels(); i++) {
     ledtape.setPixelColor(i, rotateColor((((i) * 256 / ledtape.numPixels()) + j) & 255));
   }
   ledtape.show();
   delay(20);
 }
}
 
// Функция прохода по цветам
uint32_t rotateColor(byte WheelPos) {
  if(WheelPos < 85) {
   return ledtape.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
  } else if(WheelPos < 170) {
   WheelPos -= 85;
   return ledtape.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  } else {
   WheelPos -= 170;
   return ledtape.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
}
		

Если все компоненты исправны и схема собрана корректно, то вы увидите примерно такую картину:

Готовимся к Новому году: простая гирлянда на Arduino 4


Если же немного изменить код, то можно заставить светодиоды загораться один за другим:

			#include 
 
#define PIN 6 // Номер пина, к которому подключен сигнальный провод ленты
#define LED_NUM 50 // Количество светодиодов в ленте
 
Adafruit_NeoPixel ledtape = Adafruit_NeoPixel(LED_NUM, PIN, NEO_GRB + NEO_KHZ800);  // Если у ленты контроллер WS2812, то третий параметр должен быть NEO_KHZ800, а если WS2811 — NEO_KHZ400
 
void setup() {
  ledtape.begin();
  ledtape.show(); // Выключит все светодиоды
}
 
void loop() {
  uint16_t i, j;
 
// Тут изменяется цвет светодиодов
 for(i=0; i < ledtape.numPixels(); i++) {
   ledtape.setPixelColor(i, Wheel((((i) * 256 / ledtape.numPixels()) + j) & 255));
   ledtape.show();
   ledtape.setPixelColor(i, ledtape.Color(0,0,0));
   delay(20);
   ledtape.show();
 }
}
 
// Функция прохода по цветам
uint32_t rotateColor(byte WheelPos) {
  if(WheelPos < 85) {
   return ledtape.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
  } else if(WheelPos < 170) {
   WheelPos -= 85;
   return ledtape.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  } else {
   WheelPos -= 170;
   return ledtape.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
}
		

Такая гирлянда подойдёт как для наружного применения, так и для традиционного размещения на ёлке.

Следите за новыми постами
Следите за новыми постами по любимым темам
17К открытий18К показов