Pixel LED රටා බෞද්ධ කොඩිය – වෙසක් සැරසිලි 5

අද වීඩියෝ එකෙන් කියලා දෙන්නේ මම 2020 අවුරුද්දේ වෙසක් වලට Pixel LED වලින් කරපු සැරසිල්ල ගැන. මේක හදන්න මට මට Pixel LED වැල් 5ක් අවශ්‍ය උනා. එතකොට සම්පූර්ණයෙන්ම LED bulb 250 යි. Pixel LED ගැන මම කරපු පළවෙනි වීඩියෝ එකේ Pixel LED ගැන පැහැදිලි කිරීමක් කලා. ඒක බලපු අය දන්නවනේ අපිට මේකෙන් කොච්චර දේවල් කරන්න පුලුවන්ද කියලා.

වීඩියෝ එකේ කිව්වා වගේ මට හොයාගන්න පුලුවන් උනේ පරණ ගේට්ටුවක් තමයි මේ වැඩේට. ඊට පස්සේ LED ටික මේ විදියට සෙට් කරගෙන ගියා. මේකෙදි හැම LED වැලකටම 5V power එක බල්බ් වැලේ පළවෙනි LED එක ගාව තියන රතු සහ සුදු වයර් දෙකට දෙන්න ඕනේ.

ඔක්කොම ටික සෙට් කරගත්තට පස්සෙ අපිට මේකෙ programming part එකට යන්න් පුලුවන්. පල්ලෙහා diagram එකේ තියන විදියට තමයි LED ටික දැන් set වෙලා තියෙන්නේ. මේකෙ මම නිල් පාට් ඉලක්කම් වලින් දාලා තියන x හා y ඛන්ඩාංක වලින් තමයි මම LED අදුර ගන්නේ. මේ හැම දෙයක්ම වීඩියෝ එකේ පැහැදිලි කරලා තියනවා.

මේ වගේම එකක් ඔයත් හදනවා නම් මේ Code එක copy කර ගන්න. ඔයාට අවශ්මේ‍ය විදියට මේක වෙනස් කරලා බලන්න. ඒ වගේම post එකත් Share කරන්න අමතක කරන්න එපා 🙂

පලි : සමහර අයගේ code එක compile කරනකොට error එනවා කිව්වා. එහෙම වෙන්න ප්‍රධාන හේතුවාක් තමයි ඔයා FastLED library එක දාගෙන නැති එක. ඒක දාන විදිය මේ වීඩියෝ එකේ තියනවා. අනිත් හේතුව තමයි code එක බාගෙට copy කරගන්න එක. උඩ ඉදන් පල්ලෙහාටම සම්පූර්ණ code එක copy කරගන්න.

#include <FastLED.h>
#define DATA_PIN     2
            
const uint8_t mWidth = 10;                
const uint8_t mHeight = 25;
const uint8_t NUM_LEDS = mWidth * mHeight;
CRGB leds[NUM_LEDS];
void setup() {
  FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
  FastLED.setBrightness(180); //0-255
}
void loop() {
  flag2(12);
  P_2();
  flag1Blink(5, 1000);
  P_flagColors();
  fullFlag(20);
  flag3(20);
  P_flag();
  P_flag();
  lineKN(1);
  fullFlag(20);
  P_flagColors();
}
/*
** Author - Nisal Hewagamage
** Date   - 05-05-2020
** Video  - https://youtu.be/HA4xWJ_dGRo
** info   - http://nisalhe.com/
*/
uint16_t XY( uint8_t x, uint8_t y) {
  uint16_t i;
  if ( y & 0x01) {
    uint8_t reverseX = (mWidth - 1) - x;
    i = (y * mWidth) + reverseX;
  } else {
    i = (y * mWidth) + x;
  }
  return i ;
}
void clearDown() {
  for ( byte y = 0; y < mHeight / 5; y++) {
    for ( byte x = 0; x < mWidth; x++) {
      leds[ XY(x, y)]  = CRGB::Black;
    }
  }
  FastLED.show();
}
void clearUp() {
  for ( byte y = 4 * mHeight / 5; y < mHeight; y++) {
    for ( byte x = 0; x < mWidth; x++) {
      leds[ XY(x, y)]  = CRGB::Black;
    }
  }
  FastLED.show();
}
void clearSide() {
  for ( byte y = 0; y < mHeight; y++) {
    leds[ XY(0, y)]  = CRGB::Black;
    leds[ XY(9, y)]  = CRGB::Black;
  }
  FastLED.show();
}
void clearAll() {
  for ( int x = 0; x < NUM_LEDS; x++) {
    leds[ x]  = CRGB::Black;
  }
  FastLED.show();
}
void flag1Blink(int reps, int t) {
  for ( int x = 0; x < reps; x++) {
    flag1();
    delay(t);
    clearAll();
    delay(t / 2);
  }
}
void flag1() {
  for ( byte y = 0; y < mHeight / 5; y++) {
    for ( byte x = 0; x < mWidth; x++) {
      leds[ XY(x, y)]  = CRGB::Blue;
    }
  }
  for ( byte y = mHeight / 5; y < 2 * mHeight / 5; y++) {
    for ( byte x = 0; x < mWidth; x++) {
      leds[ XY(x, y)]  = CRGB::Yellow;
    }
  }
  for ( byte y = 2 * mHeight / 5; y < 3 * mHeight / 5; y++) {
    for ( byte x = 0; x < mWidth; x++) {
      leds[ XY(x, y)]  = CRGB::Red;
    }
  }
  for ( byte y = 3 * mHeight / 5; y < 4 * mHeight / 5; y++) {
    for ( byte x = 0; x < mWidth; x++) {
      leds[ XY(x, y)]  = CRGB::White;
    }
  }
  for ( byte y = 4 * mHeight / 5; y < 5 * mHeight / 5; y++) {
    for ( byte x = 0; x < mWidth; x++) {
      leds[ XY(x, y)]  = CRGB::OrangeRed;
    }
  }
  FastLED.show();
}
void flag2(int reps) {
  for ( int x = 0; x < reps; x++) {
    for (int a = 0; a <= 5 * mWidth; a += mWidth) {
      flagInner(a);
      clearDown();
    }
    for (int a = 5 * mWidth; a >= 0; a -= mWidth) {
      flagInner(a);
      clearUp();
    }
  }
}
void flagInner(int a) {
  for ( byte y = 0; y < mHeight * 4 / 25; y++) {
    for ( byte x = 0; x < mWidth; x++) {
      leds[ XY(x, y) + a]  = CRGB::Blue;
    }
  }
  for ( byte y = mHeight * 4 / 25; y < 2 * mHeight * 4 / 25; y++) {
    for ( byte x = 0; x < mWidth; x++) {
      leds[ XY(x, y) + a]  = CRGB::Yellow;
    }
  }
  for ( byte y = 2 * mHeight * 4 / 25; y < 3 * mHeight * 4 / 25; y++) {
    for ( byte x = 0; x < mWidth; x++) {
      leds[ XY(x, y) + a]  = CRGB::Red;
    }
  }
  for ( byte y = 3 * mHeight * 4 / 25; y < 4 * mHeight * 4 / 25; y++) {
    for ( byte x = 0; x < mWidth; x++) {
      leds[ XY(x, y) + a]  = CRGB::White;
    }
  }
  for ( byte y = 4 * mHeight * 4 / 25; y < 5 * mHeight * 4 / 25; y++) {
    for ( byte x = 0; x < mWidth; x++) {
      leds[ XY(x, y) + a]  = CRGB::OrangeRed;
    }
  }
  FastLED.show();
  delay(100);
  //clear();
}
void flag3(int reps) {
  for ( int x = 0; x < reps; x++) {
    flag3_1();
    delay(300);
    clearSide();
    flag3_2();
    delay(300);
    clearSide();
  }
}
void flag3_1() {
  for ( byte y = 0; y < mHeight / 5; y++) {
    for ( byte x = 0; x < mWidth - 1; x++) {
      leds[ XY(x, y)]  = CRGB::Blue;
    }
  }
  for ( byte y = mHeight / 5; y < 2 * mHeight / 5; y++) {
    for ( byte x = 1; x < mWidth; x++) {
      leds[ XY(x, y)]  = CRGB::Yellow;
    }
  }
  for ( byte y = 2 * mHeight / 5; y < 3 * mHeight / 5; y++) {
    for ( byte x = 0; x < mWidth - 1; x++) {
      leds[ XY(x, y)]  = CRGB::Red;
    }
  }
  for ( byte y = 3 * mHeight / 5; y < 4 * mHeight / 5; y++) {
    for ( byte x = 1; x < mWidth; x++) {
      leds[ XY(x, y)]  = CRGB::White;
    }
  }
  for ( byte y = 4 * mHeight / 5; y < 5 * mHeight / 5; y++) {
    for ( byte x = 0; x < mWidth - 1; x++) {
      leds[ XY(x, y)]  = CRGB::OrangeRed;
    }
  }
  FastLED.show();
}
void flag3_2() {
  for ( byte y = 0; y < mHeight / 5; y++) {
    for ( byte x = 1; x < mWidth; x++) {
      leds[ XY(x, y)]  = CRGB::Blue;
    }
  }
  for ( byte y = mHeight / 5; y < 2 * mHeight / 5; y++) {
    for ( byte x = 0; x < mWidth - 1; x++) {
      leds[ XY(x, y)]  = CRGB::Yellow;
    }
  }
  for ( byte y = 2 * mHeight / 5; y < 3 * mHeight / 5; y++) {
    for ( byte x = 1; x < mWidth; x++) {
      leds[ XY(x, y)]  = CRGB::Red;
    }
  }
  for ( byte y = 3 * mHeight / 5; y < 4 * mHeight / 5; y++) {
    for ( byte x = 0; x < mWidth - 1; x++) {
      leds[ XY(x, y)]  = CRGB::White;
    }
  }
  for ( byte y = 4 * mHeight / 5; y < 5 * mHeight / 5; y++) {
    for ( byte x = 1; x < mWidth; x++) {
      leds[ XY(x, y)]  = CRGB::OrangeRed;
    }
  }
  FastLED.show();
}
void lineKN(int reps) {
  for ( int x = 0; x < reps; x++) {
    for ( byte y = 0; y < mHeight ; y++) {
      for ( byte x = 0; x < mWidth; x++) {
        leds[ XY(x, y)]  = CRGB::Blue;
      }
      FastLED.show();
      delay(40);
      //clearAll();
    }
    for ( int x = 0; x < reps; x++) {
      for ( byte y = 0; y < mHeight ; y++) {
        for ( byte x = 0; x < mWidth; x++) {
          leds[ XY(x, y)]  = CRGB::Magenta;
        }
        FastLED.show();
        delay(40);
        //clearAll();
      }
    }
    for ( int x = 0; x < reps; x++) {
      for ( byte y = 0; y < mHeight ; y++) {
        for ( byte x = 0; x < mWidth; x++) {
          leds[ XY(x, y)]  = CRGB::Green;
        }
        FastLED.show();
        delay(40);
        //clearAll();
      }
    }
    for ( int x = 0; x < reps; x++) {
      for ( byte y = 0; y < mHeight ; y++) {
        for ( byte x = 0; x < mWidth; x++) {
          leds[ XY(x, y)]  = CRGB::DarkRed;
        }
        FastLED.show();
        delay(40);
        //clearAll();
      }
    }
    for ( int x = 0; x < reps; x++) {
      for ( byte y = 0; y < mHeight ; y++) {
        for ( byte x = 0; x < mWidth; x++) {
          leds[ XY(x, y)]  = CRGB::DarkTurquoise;
        }
        FastLED.show();
        delay(40);
        //clearAll();
      }
    }
  }
}
void fullFlag(int reps) {
  for ( int x = 0; x < reps; x++) {
    for ( byte y = 5 * mHeight * 4 / 25; y <  mHeight - 1 ; y++) {
      for ( byte x = 0; x < mWidth / 5; x++) {
        leds[ XY(x, y)]  = CRGB::Blue;
      }
    }
    for ( byte y = 5 * mHeight * 4 / 25; y <  mHeight - 1 ; y++) {
      for ( byte x = mWidth / 5; x < 2 * mWidth / 5; x++) {
        leds[ XY(x, y)]  = CRGB::Yellow;
      }
    }
    for ( byte y = 5 * mHeight * 4 / 25; y <  mHeight - 1 ; y++) {
      for ( byte x = 2 * mWidth / 5; x < 3 * mWidth / 5; x++) {
        leds[ XY(x, y)]  = CRGB::Red;
      }
    }
    for ( byte y = 5 * mHeight * 4 / 25; y <  mHeight - 1 ; y++) {
      for ( byte x = 3 * mWidth / 5; x < 4 * mWidth / 5; x++) {
        leds[ XY(x, y)]  = CRGB::White;
      }
    }
    for ( byte y = 5 * mHeight * 4 / 25; y <  mHeight - 1 ; y++) {
      for ( byte x = 4 * mWidth / 5; x < 5 * mWidth / 5; x++) {
        leds[ XY(x, y)]  = CRGB::OrangeRed;
      }
    }
    FastLED.show();
    fullFlagInner(0);
    clearDown();
    for ( byte y = 5 * mHeight * 4 / 25 + 1; y <  mHeight ; y++) {
      for ( byte x = 0; x < mWidth / 5; x++) {
        leds[ XY(x, y)]  = CRGB::Blue;
      }
    }
    for ( byte y = 5 * mHeight * 4 / 25 + 1; y <  mHeight ; y++) {
      for ( byte x = mWidth / 5; x < 2 * mWidth / 5; x++) {
        leds[ XY(x, y)]  = CRGB::Yellow;
      }
    }
    for ( byte y = 5 * mHeight * 4 / 25 + 1; y <  mHeight ; y++) {
      for ( byte x = 2 * mWidth / 5; x < 3 * mWidth / 5; x++) {
        leds[ XY(x, y)]  = CRGB::Red;
      }
    }
    for ( byte y = 5 * mHeight * 4 / 25 + 1; y <  mHeight ; y++) {
      for ( byte x = 3 * mWidth / 5; x < 4 * mWidth / 5; x++) {
        leds[ XY(x, y)]  = CRGB::White;
      }
    }
    for ( byte y = 5 * mHeight * 4 / 25 + 1; y <  mHeight ; y++) {
      for ( byte x = 4 * mWidth / 5; x < 5 * mWidth / 5; x++) {
        leds[ XY(x, y)]  = CRGB::OrangeRed;
      }
    }
    FastLED.show();
    fullFlagInner(10);
    clearUp();
  }
}
void fullFlagInner(int a) {
  for ( byte y = 0; y < mHeight * 4 / 25; y++) {
    for ( byte x = 0; x < mWidth; x++) {
      leds[ XY(x, y) + a]  = CRGB::Blue;
    }
  }
  for ( byte y = mHeight * 4 / 25; y < 2 * mHeight * 4 / 25; y++) {
    for ( byte x = 0; x < mWidth; x++) {
      leds[ XY(x, y) + a]  = CRGB::Yellow;
    }
  }
  for ( byte y = 2 * mHeight * 4 / 25; y < 3 * mHeight * 4 / 25; y++) {
    for ( byte x = 0; x < mWidth; x++) {
      leds[ XY(x, y) + a]  = CRGB::Red;
    }
  }
  for ( byte y = 3 * mHeight * 4 / 25; y < 4 * mHeight * 4 / 25; y++) {
    for ( byte x = 0; x < mWidth; x++) {
      leds[ XY(x, y) + a]  = CRGB::White;
    }
  }
  for ( byte y = 4 * mHeight * 4 / 25; y < 5 * mHeight * 4 / 25; y++) {
    for ( byte x = 0; x < mWidth; x++) {
      leds[ XY(x, y) + a]  = CRGB::OrangeRed;
    }
  }
  FastLED.show();
  delay(400);
}
///*********************************************************
void P_flag() {
  int TIME_1 = 8;
  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CRGB::OrangeRed;
    FastLED.show();
    delay(TIME_1);
  }
  for (int i = 0; i < 4 * NUM_LEDS / 5; i++) {
    leds[i] = CRGB::White;
    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::Gold;
    FastLED.show();
    delay(2*TIME_1);
  }
  for (int i = 0; i < NUM_LEDS / 5; i++) {
    leds[i] = CRGB::Blue;
    FastLED.show();
    delay(3*TIME_1);
  }
  delay(4000);
  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CRGB::Black;
    FastLED.show();
    delay(0);
  }
}
void P_2() {
  for (int i = 31; i < NUM_LEDS; i++) {
    leds[i] = CRGB::Red;
    leds[i - 1] = CRGB::Red;
    leds[i - 30] = CRGB::Blue;
    FastLED.show();
    delay(10);
  }
  for (int i = NUM_LEDS; i >= 30; i--) {
    leds[i-30] = CRGB::Purple;
    leds[i] = CRGB::White;
    delay(10);
    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);
}

9 thoughts on “Pixel LED රටා බෞද්ධ කොඩිය – වෙසක් සැරසිලි 5

  1. Amazing lessons and excelent precentation skill. wishing you are very successful and bright future.

  2. Actually I copied your code. I really don’t know a lot about Arduino. I am still learning. So these video are very helpful for my learning. Great work.

  3. Nisal අයිියේ ඔයා Bluetooth කැමරාවක් හදලා ඒකට code ලියන Video එකක් දාන්නකෝ. please!😂 please !😂please!😂 please! 😂please!😂 please!😂 please!😂 please!😂 please!😂😄😉😎😆😃😁😀🤣😅😪😯😥😫

Leave a Reply

Your email address will not be published. Required fields are marked *