Pixel LED with Arduino Sinhalen | Vesak Decorations WS2811

Spread the love

අද වෙසක් සැරසිලි වීඩියෝ එකෙන් මම කියලා දෙන්නේ Pixel LED ගැන. Pixel LED කියන්නේ පොඩියට තිබ්බට හිතන්නෙ නැති තරම් වැඩ ගොඩක් කරන්න පුලුවන් LED වර්ගයක්. අපි මේකට addressable LED කියලත් කියනවා. එහෙම කියන්නේ අපිට මේ LED එකින් එක වෙන වෙනම අපි ලියන program එකෙන් address කරලා, ඒ ඒ LED එකට අදාලව අපිට code කරන්න පුලුවන් නිසා.

උදාහරණයක් විදියට කිව්වොත් අපිට මේ බල්බ් වැලේ 20 වෙනි බල්බ් එක විතරක් දම් පාටින් brightness එක බාගයක් වෙන විදියට පත්තු කරන්න ඕනෙ නම් ඒක අපිට අපි ලියන code එකෙන් කරන්න පුලුවන්. එහෙම කරන්න පුලුවන් වෙලා තියෙන්නෙ මේ හැම LED එකක් එක්කම සම්බන්ධ කරලා තියන විශේෂ chip එකක් නිසා. මම අද පාවිච්චි කරන බල්බ් වැලේ තියෙන්නේ ws2811 chip එක.

මේ බල්බ් වැලේ LED 50 ක් තියනවා. ඒ කියන්නෙ මේකේ ws2811 chip 50 ක් හැම LED එකකටම වෙන වෙනම සම්බන්ධ වෙලා තියනවා.

මේ බල්බ් වැල වැඩ කරන්නේ 5V dc current එකෙන්. මේකට අපි power දෙන විදිය සහ arduino board එකට connect කරන විදිය ගැන වීඩියෝ එකේ පැහැදිලිව කියලා දීලා තියනවා.

අපි මේකට අදාල program එක ලියද්දි Fast LED library එක තමයි use කරන්නේ. මේ library එක Github එකෙන් download කරගෙන extract කරලා ඔයාලගෙ arduino library folder එකට paste කරගන්න.

මේ library එකේ හොද documentation එකක් තියනවා. මම වීඩියෝ එකේ කියලා දෙන දේවල් වලට් අමතරව මේ documentation එකත් බලන්න. මේකත් එක්ක අරන්න පුලුවන් දේවල් තවත් ඉගෙන ගන්න පුලුවන් වෙයි. ඒ වගේම FastLED library එකේ තියන example try කරලා බල්ලන්න. මම පහළ දාලා තියෙන්නේ බෞද්ධ කොඩියේ පාට 5 එක්ක pattern එකක්.

#include <FastLED.h>

#define DATA_PIN     2
#define NUM_LEDS    100

CRGB leds[NUM_LEDS];

void setup() {
  FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);

}

void loop() {
  P_flag();
  //P_2();
  P_flagColors();

}

void P_flag() {
  int TIME_1 = 20;

  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CRGB::Blue;
    FastLED.show();
    delay(TIME_1);
  }
  for (int i = 0; i < 4 * NUM_LEDS / 5; i++) {
    leds[i] = CRGB::Yellow;
    FastLED.show();
    delay(TIME_1);
  }
  for (int i = 0; i < 3 * NUM_LEDS / 5; i++) {
    leds[i] = CRGB::Red;
    FastLED.show();
    delay(TIME_1);
  }

  for (int i = 0; i < 2 * NUM_LEDS / 5; i++) {
    leds[i] = CRGB::White;
    FastLED.show();
    delay(TIME_1);
  }

  for (int i = 0; i < NUM_LEDS / 5; i++) {
    leds[i] = CRGB::OrangeRed;
    FastLED.show();
    delay(TIME_1);
  }
  delay(5000);
  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CRGB::Black;
    FastLED.show();
    delay(20);
  }
}

void P_2() {

  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CRGB::Red;
    leds[i + 1] = CRGB::Red;
    leds[i + 2] = CRGB::Blue;
    FastLED.show();
    delay(10);
    leds[i] = CRGB::Black;
    FastLED.show();
  }

  for (int i = NUM_LEDS; i > 0; i--) {
    leds[i] = CRGB::Red;
    leds[i + 1] = CRGB::Red;
    leds[i + 2] = CRGB::Blue;
    FastLED.show();
    delay(10);
    leds[i - 3] = CRGB::Black;
    FastLED.show();
  }

  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CRGB::BurlyWood ;
    leds[i + 1] = CRGB::BurlyWood ;
    leds[i + 2] = CRGB::BurlyWood ;
    FastLED.show();
    delay(10);
    leds[i] = CRGB::Black;
    FastLED.show();
  }

  for (int i = NUM_LEDS; i > 0; i--) {
    leds[i] = CRGB::DeepSkyBlue ;
    leds[i + 1] = CRGB::DeepSkyBlue ;
    leds[i + 2] = CRGB::DeepSkyBlue ;
    FastLED.show();
    delay(10);
    leds[i - 3] = CRGB::Black;
    FastLED.show();
  }
}

void P_flagColors() {
  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CRGB::Blue;
  }
  FastLED.show();
  delay(1000);

  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CRGB::Yellow;

  }
  FastLED.show();
  delay(1000);

  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CRGB::Red;
  }
  FastLED.show();
  delay(1000);

  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CRGB::White;
  }
  FastLED.show();
  delay(1000);

  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CRGB::OrangeRed;
  }
  FastLED.show();
  delay(1000);
}

Spread the love