Новогодняя гирлянда своими руками. Часть 2

Управляемые светодиоды

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

Итак, подключаем Arduino и светодиоды к питанию, один из выводов данных Arduino подключаем к началу ленты. Возле каждого светодиода есть стрелка, обозначающая направление передачи данных – от начала ленты к концу, подключать нужно именно к началу, иначе в лучшем случае ничего не будет работать, в худшем что-то сгорит. Вывод данных можно использовать любой, я подключал на последний, с номером 7, он и будет использоваться в примере. Также подключаем Arduino к одному из USB-портов компьютера. При использовании Linux система может первый раз не увидеть платы, поэтому лучше первый раз подключить до включения компьютера. Дальше проблем не будет.

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

Итак, библиотеку скачали, добавили в конфигурацию Arduino IDE. Делается это несложно, информации в сети хватает, останавливаться не буду. Лучше сразу перейдём к написанию первой программы.

Для начала подключим библиотеку и определим все нужные константы, которые потребуются каждый раз:

#include <FastLED.h>

#define NUM_LEDS 72 // измените количество на своё
// следующие две строки на будущее, сейчас не используем
#define NUM_HALF int(NUM_LEDS / 2)
#define NUM_QUARTER int(NUM_LEDS / 4)

#define DATA_PIN 7
#define CLOCK_PIN 13
#define BRIGHTNESS 192 // яркость можно менять от 0 до 255

CRGB leds[NUM_LEDS]; // массив со значениями цветов

В программе должны быть две обязательные функции – setup() и loop(). Первая вызывается один раз и выполняет инициализацию ряда параметров, вторая выполняется в цикле и является основной в программе. После завершения она запускается второй раз, третий и т.д.

Начальная установка:

void setup() {
  LEDS.setBrightness(BRIGHTNESS);
  FastLED.addLeds<WS2812, DATA_PIN, GRB>(leds, NUM_LEDS);
}

Обратите внимание, что я указал не RGB, а GRB. Это связано с тем, что разные модификации этих светодиодов по-разному принимают информацию. В этом случае первым байтом идёт зелёная составляющая, затем красная и последней – синяя. Если перепутаете – получите достаточно неожиданные цветовые эффекты. Итак, пробуем включить всю ленту, заодно будет возможность проверить правильность выбора варианта GRB. Если неверно – подбираем, из трёх букв есть всего 6 комбинаций, одна неверная, осталось перебрать максимум 5.

void loop() {
  fill_solid(&leds[0], NUM_LEDS, 0xFF0000); // красный
  LEDS.show();
  delay(1000);
  fill_solid(&leds[0], NUM_LEDS, 0x00FF00); //зелёный
  LEDS.show();
  delay(1000);
  fill_solid(&leds[0], NUM_LEDS, 0x0000FF); // синий
  LEDS.show();
  delay(1000);
  fill_solid(&leds[0], NUM_LEDS, 0xFFFFFF); // белый
  LEDS.show();
  delay(1000);
  fill_solid(&leds[0], NUM_LEDS, 0x000000); // гасим ленту
  LEDS.show();
  delay(1000);
}

В следующей части я приведу простые примеры переключения светодиодов.

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

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

Ваш адрес email не будет опубликован.