Трьохкольорова світлодіодна стрічка на основі адресних світлодіодів WS2812B

30 світлодіодів на метр

Напруга живлення 5В

Довжина 1м

Роз'єми з обох сторін стрічки - можна підключати багато однотипних стрічок послідовно

Сигнальний дріт зелений

Плюс живлення червоний

Мінус живлення GND білий


Керування яскравістю та кольором кожного окремого світлодіода за допомогою програмованих контролерів

Приклад програми

#include "FastLED.h" // підключаємо бібліотеку

#define NUM_LEDS 30
#define PIN 7

byte bright = 50; // яскравість світлодіодів
byte rate = 0; // Швидкість ефектів
byte w = 1; // Перемикання режимів
byte baza = 0; // Зміна відтінку

boolean button1WasUp = true; // Змінні для зчитування натискання на кнопки
boolean button2WasUp = true;
boolean button3WasUp = true;

CRGB leds[NUM_LEDS];

void setup() {
   pinMode(8, INPUT_PULLUP); // Підключаємо тактові кнопки
   pinMode(10, INPUT_PULLUP);
   pinMode(12, INPUT_PULLUP);

   FastLED.addLeds <WS2812, PIN, GRB>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
   FastLED.setBrightness(bright);
   CRGB color = CRGB (255, 0, 0);
}

void knopka() {
   boolean button1IsUp = digitalRead(8); // дізнаємось про поточний стан кнопок
   boolean button2IsUp = digitalRead(10);
   boolean button3IsUp = digitalRead(12);

   // якщо кнопка 1 була натиснута, додаємо яскравість (не більше 250)
   if (button1WasUp && !button1IsUp) {
     delay(10);
     button1IsUp = digitalRead(8);
     if (!button1IsUp) { bright = bright + 25; if (bright > 250) { bright = 25; }
     }
   }
   button1WasUp = button1IsUp; // запам'ятовуємо стан кнопки 1

   // якщо кнопка 2 була натиснута, збільшуємо затримку (не більше 50)
   if (button2WasUp && !button2IsUp) {
     delay(10);
     button2IsUp = digitalRead(10);
     if (!button2IsUp) { rate = rate + 10; if (rate > 50) { rate = 0; }
     }
   }
   button2WasUp = button2IsUp; // запам'ятовуємо стан кнопки 2

   // якщо кнопка 3 була натиснута, переходимо у новий режим
   if (button3WasUp && !button3IsUp) {
     delay(10);
     button3IsUp = digitalRead(12);
     if (!button3IsUp) {w++; if (w > 12) {w = 1; }
     }
   }
   button3WasUp = button3IsUp; // запам'ятовуємо стан кнопки 3
}

void loop() {
   // Перший режим (райдуга)
   while (w == 1) {
     knopka(); // дізнаємося про стан кнопок
     for (int i = 0; i < NUM_LEDS; i++) {
      leds[i] = CHSV(baza+ i * 5, 255, 255);
     }
     baza++;
     FastLED.setBrightness(bright);
     FastLED.show();
     delay(50 - rate);
   }

   // другий режим (палітра)
   while (w == 2) {
     knopka(); // дізнаємося про стан кнопок
     static uint8_t starthue = 0;
     fill_rainbow( leds + 5, NUM_LEDS - 5, --starthue, rate);
     uint8_t secs = (millis() / 1000) % (rate * 2);
     if (secs < rate) { FastLED.setTemperature( Tungsten100W ); leds[0] = Tungsten100W; }
     else { FastLED.setTemperature( OvercastSky ); leds[0] = OvercastSky; }
     FastLED.setBrightness(bright);
     FastLED.show();
   }

   // Третій режим (конфетті)
   while (w == 3) {
     knopka(); // дізнаємося про стан кнопок
     fadeToBlackBy(leds, NUM_LEDS, (rate + 1) * 2);
     int pos = random16(NUM_LEDS);
     leds [pos] + = CHSV (baza + random8 (64), 200, 255);
     FastLED.setBrightness(bright);
     FastLED.show();
   }

   // четвертий режим (вогник, що біжить)
   while (w == 4) {
     knopka(); // дізнаємося про стан кнопок
     fadeToBlackBy(leds, NUM_LEDS, (rate + 1) * 2);
     int pos = beatsin16(13, 0, NUM_LEDS - 1);
     leds [pos] + = CHSV (baza ++, 255, 192);
     FastLED.setBrightness(bright);
     FastLED.show();
   }

   // п'ятий режим (циклон)
   while (w == 5) {
     for (int i = 0; i < NUM_LEDS; i++) {
       leds[i].nscale8(250);
       }
     for (int i = 0; i < NUM_LEDS; i++) {
       knopka(); // дізнаємося про стан кнопок
       leds[i] = CHSV(baza++, 255, 255);
       FastLED.setBrightness(bright);
       FastLED.show();
       delay (rate);
     }
   }

   // шостий режим (фокус)
   while (w == 6) {
     knopka(); // дізнаємося про стан кнопок
     fadeToBlackBy(leds, NUM_LEDS, (rate + 1) * 2);
     for (int i = 0; i < 8; i++) {
       leds[beatsin16(i + 7, 0, NUM_LEDS - 1)] |= CHSV(baza+=16, 200, 255);
     }
     FastLED.setBrightness(bright);
     FastLED.show();
     delay(10);
   }

   // сьомий режим (райдуга з мерехтінням)
   while (w == 7) {
     knopka(); // дізнаємося про стан кнопок
     fill_rainbow( leds, NUM_LEDS, baza++, 7);
     if (random8() < 80) { leds[ random16(NUM_LEDS) ] += CRGB::White; }
     FastLED.setBrightness(bright);
     FastLED.show();
     delay(50 - rate);
   }
   // сьомий режим (білий)
   while (w == 8) {
     knopka(); // дізнаємося про стан кнопок
     fill_solid( leds, NUM_LEDS, CRGB::White);
    FastLED.setBrightness(bright);
    FastLED.show();
     delay(50 - rate);
   }
    // сьомий режим (типу апельсин)
   while (w == 9) {
     knopka(); // дізнаємося про стан кнопок
     fill_solid( leds, NUM_LEDS, CRGB::Orange);
    FastLED.setBrightness(bright);
    FastLED.show();
     delay(50 - rate);
   }
    // сьомий режим (пурпур)
   while (w == 10) {
     knopka(); // дізнаємося про стан кнопок
     fill_solid( leds, NUM_LEDS, CRGB::Purple);
    FastLED.setBrightness(bright);
    FastLED.show();
     delay(50 - rate);
   }
    // сьомий режим (зеленка)
   while (w == 11) {
     knopka(); // дізнаємося про стан кнопок
     fill_solid( leds, NUM_LEDS, CRGB::Green);
    FastLED.setBrightness(bright);
    FastLED.show();
     delay(50 - rate);
   }
    // сьомий режим (синій)
   while (w == 12) {
     knopka(); // дізнаємося стан кнопок
     fill_solid( leds, NUM_LEDS, CRGB::Blue);
    FastLED.setBrightness(bright);
    FastLED.show();
     delay(50 - rate);
   }
}

Написати відгук

Примітка: HTML размітка не підтримується! Використовуйте звичайтий текст.
    Погано           Добре

Світлодіодна стрічка адресна WS2812B 1м 30led

  • Модель WS2812B IP30 1м
  • Код: ID-754
  • Наявність Є в наявності
  • 125.63грн.


<< Проекти << Усі товари >> Статті, уроки >>