цифровая электроника
вычислительная техника
встраиваемые системы

 

Рождественский венок на Arduino и Adafruit NeoPixel своими руками

Автор: Mike(admin) от 22-12-2017, 17:25

В такие праздники как Новый год и Рождество принято украшать помещения и наряжать различные предметы всякими светящимися устройствами. Самым классическим вариантом в данном случае является гирлянда. Но энтузиасты и радиолюбители могут пойти дальше этих шаблонов и сделать к празднику какую-нибудь свою светящуюся штуку.


Рождественский венок на Arduino и Adafruit NeoPixel

В данном очень простом проекте показано, как самостоятельно сделать простое светящееся кольцо (рождественский венок) на основе Arduino и Adafruit NeoPixel 1/4 – 60.


Здесь используется компактная плата Arduino Nano, которая подключается к светодиодному кольцу Adafruit NeoPixel 1/4 – 60, содержащему шестьдесят RGB-светодиодов с индивидуальной адресацией. Светодиоды соединены в неразрывную цепь, то есть выход одного компонента соединен со входом другого. Это позволяет использовать лишь одну линию микроконтроллера для управления всей цепочки светодиодов, сформированной в кольцо. Драйвер внутри каждого светодиода имеет постоянный ток 18 мА, поэтому цвет будет очень насыщенный и постоянный, даже если напряжение изменится, при этом никаких внешних дроссельных резисторов не потребуется. Это позволяет немного уменьшить размеры конструкции.


Подключение Arduino к светодиодному кольцу очень простое. Контакт 5V на кольце присоединяем к 5V на плате Arduino. То же самое делаем с выводами Gnd. Для управления светодиодами подключаем шестую линию ввода/вывода Arduino (PIN 6) к линии DIN кольца. Не трогайте линию DOUT, она нужна для подключения другого кольца или отдельных светодиодов в цепь. Схема подключения показана ниже.


Рождественский венок на Arduino и Adafruit NeoPixel своими руками

Далее приведен код (скетч) для управления светодиодным кольцом посредством Arduino.



#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
 #include <avr/power.h>
#endif

// Какой контакт на Arduino подключен к NeoPixels?
// В случае с Trinket или Gemma мы лучше заменить это на 1
#define PIN 6

// Сколько NeoPixels подключено к Arduino?
#define NUMPIXELS      60

// Когда мы настраиваем библиотеку NeoPixel, мы указываем, сколько пикселей и какой вывод использовать для отправки сигналов.
// Обратите внимание, что для старых лент NeoPixel вам может понадобиться изменить третий параметр
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN);

int myPixels[] = {5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60};
int delayval1 = 100; // delay for a 1/10th of a second
int delayval2 = 5000; // delay for 5 seconds

void setup() {

  pixels.begin();
  pixels.show(); // Это инициализирует библиотеку NeoPixel
}

void loop() {
  
  // Для набора NeoPixels первый NeoPixel равен 0, второй - 1, вплоть до полного количества пикселей минус один

  for(int i = 0; i < NUMPIXELS; i++){

    // pixels.Color принимает значения RGB, от 0,0,0 до 255,255,255
    pixels.setPixelColor(i, pixels.Color(255,0,0)); // Умеренно ярко-зеленый цвет
    pixels.show(); // Это отправляет обновленную информацию о цвете пикселя на кольцо
    delay(delayval1); // Задержка в течение определенного периода времени (в миллисекундах
  }
    for(int i = NUMPIXELS-1; i >= 0; i--){

    // pixels.Color принимает значения RGB, от 0,0,0 до 255,255,255
    pixels.setPixelColor(i, pixels.Color(0,150,0)); // Умеренно ярко-зеленый цвет
    pixels.show(); // Это отправляет обновленную информацию о цвете пикселя на кольцо
    delay(delayval1);
  }
     // Делаем каждый пятый светодиод красного цвета, чтобы сформировать Холли на венке, остальная часть венка остается зеленой
     for (int i = 0; i < pixels.numPixels(); i += 5){
      
      pixels.setPixelColor(i, 255, 0, 0);  
      pixels.show();  
  }      
      delay(delayval2);// пауза в течение 5 секунд
      
// Теперь этот светодиод становится синим, а затем снова красным и все повторяется.
  for(uint16_t pos = 0; pos < 12; pos++) {
    pixels.setPixelColor(myPixels[pos], 0, 0, 255);
    pixels.show();
    delay(delayval1);  
  }

    for(uint16_t pos = 0; pos < 12; pos++) {
    pixels.setPixelColor(myPixels[pos], 255, 0, 0);
    pixels.show();
    delay(delayval1);  
  }

    for(uint16_t pos = 0; pos < 12; pos++) {
    pixels.setPixelColor(myPixels[pos], 0, 0, 255);
    pixels.show();
    delay(delayval1);  
  }

    for(uint16_t pos = 0; pos < 12; pos++) {
    pixels.setPixelColor(myPixels[pos], 255, 0, 0);
    pixels.show();
    delay(delayval1);  
  }
  delay(delayval2);
}



Теги: Arduino, светодиоды



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий