Итак, в прошлой части мы таки разобрались с оборудованием, а сейчас попробуем написать простейшую программу, помигать светодиодами, заодно и проверим их.
Итак, подключаем 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); }
В следующей части я приведу простые примеры переключения светодиодов.
Комментарии: