Вот простенький вариант изменения скетча, котороый есть в примере. Библиотека FastLEd пример FirstLight. Этот скетч запускает одиночный белый огонек по ленте от начала к концу, с учетом указанного в скетче количества светодиодов.
Соединение - три провода: +5V, GND, соответственно, на плюс и минус ленты и Ардуино. Управляющий пин - номер 6. Его через балластный резистор, номиналом 300-470 ом, соединяем с контактом Din ленты.
Просто смотреть на бегающий белый огонек скучно, поэтому модернизируем слегка этот скетч. Публикую текст без изменений, но со своими дополнениями. Попутно их откомментирую в тексте программы.
// Use if you want to force the software SPI subsystem to be used for some reason (generally, you don't)// #define FASTLED_FORCE_SOFTWARE_SPI// Use if you want to force non-accelerated pin access (hint: you really don't, it breaks lots of things)// #define FASTLED_FORCE_SOFTWARE_SPI// #define FASTLED_FORCE_SOFTWARE_PINS#include "FastLED.h" /////////////////////////////////////////////////////////////////////////////////////////////// Move a white dot along the strip of leds. This program simply shows how to configure the leds,// and then how to turn a single pixel white and then off, moving down the line of pixels.// // How many leds are in the strip?#define NUM_LEDS 20 //Указываем количество задействованных светодиодов в ленте. ТО есть даже в пятиметровой ленте можно задействовать всего 20 светиков // Data pin that led data will be written out over#define DATA_PIN 6 //Указываем выход Ардуино, который будет управляьт лентой // Clock pin only needed for SPI based chipsets when not using hardware SPI//#define CLOCK_PIN 8 // This is an array of leds. One item for each led in your strip.CRGB leds[NUM_LEDS]; // This function sets up the ledsand tells the controller about themvoid setup() {// sanity check delay - allows reprogramming if accidently blowing power w/leds delay(2000); // Uncomment one of the following lines for your leds arrangement. // FastLED.addLeds<TM1803, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<TM1809, DATA_PIN, RGB>(leds, NUM_LEDS); //FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS); FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS); // FastLED.addLeds<APA104, DATA_PIN>(leds, NUM_LEDS); // FastLED.addLeds<WS2811_400, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<GW6205, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<GW6205_400, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<UCS1903, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<UCS1903B, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<WS2801, RGB>(leds, NUM_LEDS); // FastLED.addLeds<SM16716, RGB>(leds, NUM_LEDS); // FastLED.addLeds<LPD8806, RGB>(leds, NUM_LEDS); // FastLED.addLeds<P9813, RGB>(leds, NUM_LEDS); // FastLED.addLeds<APA102, RGB>(leds, NUM_LEDS); // FastLED.addLeds<DOTSTAR, RGB>(leds, NUM_LEDS); // FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<SM16716, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<P9813, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<APA102, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<DOTSTAR, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);} // This function runs over and over, and is where you do the magic to light// your leds.void loop() { // Move a single white led for(int whiteLed = 0; whiteLed < NUM_LEDS; whiteLed = whiteLed + 1) { // Turn our current led on to white, then show the leds //Зажигаем первый светик leds[whiteLed] = CRGB::Green; //Запускаем КРАСНЫЙ цвет от начала к концу ленты. Несмотря на то, что указан Green, на ленте будет Red. Это потому, что светодиоды у нас не RGB а GRB //Зажигаем второй светик с другого конца ленты. leds[NUM_LEDS - whiteLed] = CRGB::Red;//А тут будет зеленый. // Show the leds (only one of which is set to white, from above) FastLED.show(); // Wait a little bit delay(100); //Тут можно указать скорость передвижения точки. // Turn our current led back to black for the next loop around leds[whiteLed] = CRGB::Black; // Гасим зажженый светик номер 1 leds[NUM_LEDS - whiteLed] = CRGB::Black; // Гасим зажженый светик номер 2 }}Почему я выбрал именно этот пример для начала? Потому, что сам с ним разобрался, и у меня в планах использовать его основу в дальнейшем.