সুচিপত্র:

ডট লাইট প্যাটার্ন: Ste টি ধাপ
ডট লাইট প্যাটার্ন: Ste টি ধাপ

ভিডিও: ডট লাইট প্যাটার্ন: Ste টি ধাপ

ভিডিও: ডট লাইট প্যাটার্ন: Ste টি ধাপ
ভিডিও: ফেসবুকে সমস্যা হওয়ার আগে এই Settings OFF করুন। Facebook important settings | Tech Bangla Help 2024, নভেম্বর
Anonim
Image
Image
ডট লাইট প্যাটার্ন
ডট লাইট প্যাটার্ন
ডট লাইট প্যাটার্ন
ডট লাইট প্যাটার্ন

আমি "আমি কি নিজের হাতে আলো নিয়ন্ত্রণ করতে পারি এবং নিজের ইচ্ছা প্রকাশ করতে পারি?"

এটি একটি 'ডট লাইট প্যাটার্ন' যা আপনাকে আপনার নিজের রং তৈরি করতে, সেই রং দিয়ে আপনার নিজস্ব প্যাটার্ন ডিজাইন করতে এবং বিভিন্ন অ্যানিমেশন প্রভাব অনুভব করতে দেয়।

ধাপ 1: উপকরণ

উপকরণ
উপকরণ
উপকরণ
উপকরণ
উপকরণ
উপকরণ
উপকরণ
উপকরণ
  1. Arduino UNO x 13
  2. WS2901 বা WS2811 পিক্সেল LED স্ট্রিপ (130 LEDS)
  3. বোতাম সুইচ x 1
  4. স্ন্যাপ সুইচ x 65
  5. Potentionmeter x 65
  6. রেনবো ক্যাবল
  7. পাওয়ার যথেষ্ট এসএমপিএস
  8. কন্ডাক্টর ক্যাবল
  9. এক্রাইলিক স্বচ্ছ গোলাকার বার (30 মিমি ব্যাস)
  10. কালো রঙের এক্রাইলিক বোর্ড (5T) (500mm*790mm) x 2, (500mm*35mm) x 2, (790mm*35mm) x 2

ধাপ 2: নির্মাণ পরিকল্পনা

নির্মাণ পরিকল্পনা
নির্মাণ পরিকল্পনা
নির্মাণ পরিকল্পনা
নির্মাণ পরিকল্পনা
নির্মাণ পরিকল্পনা
নির্মাণ পরিকল্পনা
নির্মাণ পরিকল্পনা
নির্মাণ পরিকল্পনা

ধাপ 3: হার্ডওয়্যার: সার্কিট ডিজাইন

হার্ডওয়্যার: সার্কিট ডিজাইন
হার্ডওয়্যার: সার্কিট ডিজাইন
হার্ডওয়্যার: সার্কিট ডিজাইন
হার্ডওয়্যার: সার্কিট ডিজাইন
হার্ডওয়্যার: সার্কিট ডিজাইন
হার্ডওয়্যার: সার্কিট ডিজাইন
  1. উপরের কাঠামোর মতো এক্রাইলিক প্লেট কেটে নিন। (ধাপ 2 দেখুন)

  2. এক টুকরো নিও-পিক্সেল LED পটেনশনমিটার গর্তের উপরে এবং নীচে রাখা হয় এবং মোট 65 জোড়া নিও-পিক্সেল LEDs সংযুক্ত থাকে।
  3. এক জোড়া আরডুইনো পিন গঠনের জন্য একজোড়া নিও-পিক্সেল এলইডি একসঙ্গে তারযুক্ত।
  4. পটেনশনমিটার গর্তে 65 পটেনশনমিটার ফিট করুন। (এটি একটি নিও-পিক্সেলেটেড পৃষ্ঠের বিপরীত দিকে রাখুন।)
  5. সুইচ ছিদ্র মেলে 65 স্ন্যাপ সুইচ সংযুক্ত করুন।
  6. মোট তেরোটি আরডুইনো ইউএনও প্রতিটি তেরোটি জোনের সাথে সংযুক্ত করা হয়েছে যাতে 65 টি টুকরো হার্ডওয়্যারের পাঁচটি টুকরো একটি আরডুইনো ইউএনওতে বাঁধা যায়।
  7. সংযুক্ত ছবিতে যেমন দেখানো হয়েছে, তারের সাহায্যে আরডুইনো ইউএনও-র পিনগুলিতে পটেনশনমিটার, স্ন্যাপ সুইচ এবং নিও-পিক্সেল এলইডি সংযুক্ত করুন। (ধাপ 2 দেখুন)
  8. বেশ কয়েকটি Arduino UNO- এর GND এবং 5V পিনগুলি কেবল তারের সাথে সংগৃহীত হয়, তারপর বাহ্যিক শক্তির সাথে সংযুক্ত। (ধাপ 2 দেখুন)
  9. বায়ুর চাপে ধুলো সরান।

ধাপ 4: হার্ডওয়্যার: এক্রাইলিক কাটিং

হার্ডওয়্যার: এক্রাইলিক কাটিং
হার্ডওয়্যার: এক্রাইলিক কাটিং
হার্ডওয়্যার: এক্রাইলিক কাটিং
হার্ডওয়্যার: এক্রাইলিক কাটিং
হার্ডওয়্যার: এক্রাইলিক কাটিং
হার্ডওয়্যার: এক্রাইলিক কাটিং
  1. এক্রাইলিক রড 50 মিমি দৈর্ঘ্যে কাটা।

  2. অ্যাক্রিলিক রডের একপাশে পটেনশনমিটারের নিয়ন্ত্রক অংশের সাথে মিল করার জন্য আকার এবং গভীরতায় ড্রিল করা হয়।
  3. এক্রাইলিক রডটি ক্লিয়ারেন্সের জন্য গর্তের চেয়ে কিছুটা প্রশস্ত করা হয় যা পোটেনশনমিটারে ভালভাবে ফিট করতে পারে।
  4. অন্য দিকটি একটু স্যান্ডপেপার দেয় যাতে আলো সুন্দরভাবে প্রেরণ করা যায়।

ধাপ 5: Arduino প্রোগ্রামিং কোড

www.kasperkamperman.com/blog/arduino/ardui…

'hsb থেকে rgb' কোড 를 참고 한 code

#অন্তর্ভুক্ত

// 'adafruit_neopixel' 헤더 파일 라는 외부 라이브러리 를

// 네오 픽셀 연결 핀 번호 선언

#পিন 1 ডিফাইন করুন 2 পিন 2 ডিফাইন করুন

#সংজ্ঞায়িত করুন NUMPIXELS 2 // 픽셀 픽셀 LED

#সংজ্ঞায়িত করুন NUM_LIGHTS 5 // 모듈 모듈 갯수 (네오 픽셀 오브젝트 갯수)

// 네오 픽셀 오브젝트 অ্যারে

Adafruit_NeoPixel পিক্সেল = {Adafruit_NeoPixel (NUMPIXELS, PIN1, NEO_GRB + + NEO_KHZ800), Adafruit_NeoPixel (NUMPIXELS, পিন 2, NEO_GRB + + NEO_KHZ800), Adafruit_NeoPixel (NUMPIXELS, PIN3, NEO_GRB + + NEO_KHZ800), Adafruit_NeoPixel (NUMPIXELS, PIN4, NEO_GRB + + NEO_KHZ800), Adafruit_NeoPixel (NUMPIXELS, PIN5, NEO_GRB + NEO_KHZ800)}; //// 네오 픽셀 을 사용 위해 위해 객체 를 생성। // 첫번째 인자 값 은 네오 픽셀 의 LED 의 개수 // 두번째 인자 값 은 픽셀 이 이 아두 이노 번호 번호 // 세번째 인자 바뀌는 은 픽셀 의 바뀌는

//////////////////////////////////////////////////////////////

////// HSV 를 RGB 로 변환 하는 함수 getRGB () 를 위한 변수 와 함수

const বাইট dim_curve = {

0, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 20, 20, 20, 21, 21, 22, 22, 22, 23, 23, 24, 24, 25, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 32, 32, 33, 33, 34, 35, 35, 36, 36, 37, 38, 38, 39, 40, 40, 41, 42, 43, 43, 44, 45, 46, 47, 48, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69, 70, 71, 73, 74, 75, 76, 78, 79, 81, 82, 83, 85, 86, 88, 90, 91, 93, 94, 96, 98, 99, 101, 103, 105, 107, 109, 110, 112, 114, 116, 118, 121, 123, 125, 127, 129, 132, 134, 136, 139, 141, 144, 146, 149, 151, 154, 157, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, 190, 193, 196, 200, 203, 207, 211, 214, 218, 222, 226, 230, 234, 238, 242, 248, 255, }; //

অকার্যকর getRGB (int hue, int sat, int val, int colours [5] [3], int index) {

val = dim_curve [val]; sat = 255 - dim_curve [255 - sat];

// 색조, 채도 및 밝기 (HSB /HSV) 를 RGB 로

// dim_curve 는 밝기 값 채도 채도 (반전) 에서만 사용। // 이것은 가장 자연스럽게 보입니다।

int r;

int g; int খ; int বেস;

যদি (sat == 0) {

রং [সূচক] [0] = ভ্যাল; রং [সূচক] [1] = ভ্যাল; রং [সূচক] [2] = ভ্যাল; } অন্য {

বেস = ((255 - sat) * val) >> 8;

সুইচ (রঙ / 60) {

কেস 0: আর = ভ্যাল; g = (((val - base) * hue) / 60) + base; b = বেস; বিরতি;

মামলা 1:

r = (((val - base) * (60 - (hue % 60))) / 60) + বেস; g = val; b = বেস; বিরতি;

কেস 2:

r = বেস; g = val; b = (((val - base) * (hue % 60)) / 60) + base; বিরতি;

কেস 3:

r = বেস; g = (((val - base) * (60 - (hue % 60))) / 60) + বেস; b = ভাল; বিরতি;

কেস 4:

r = (((val - base) * (hue % 60)) / 60) + base; g = বেস; b = ভাল; বিরতি;

কেস 5:

r = ভাল; g = বেস; b = (((val - base) * (60 - (hue % 60))) / 60) + বেস; বিরতি; }

রং [সূচক] [0] = আর;

রং [সূচক] [1] = ছ; রং [সূচক] [2] = বি; }

}

int rgb_colors [NUM_LIGHTS] [3]; // 네오 픽셀 오브젝트 갯수 마다 rgb রঙ

ইন্ট হিউ [NUM_LIGHTS]; // 네오 픽셀 오브젝트 갯수 ue hue 선언 int sat [NUM_LIGHTS]; // 네오 픽셀 픽셀 갯수 마다 명도 선언 int brignt [NUM_LIGHTS]; // 네오 픽셀 오브젝트 갯수 마다 밝기 서언

// 일반 변수 선언

int startSwitch = {8, 9, 10, 11, 12}; // চালু/বন্ধ 버튼 핀 번호 বুলিয়ান স্টার্টস্টেট = {মিথ্যা, মিথ্যা, মিথ্যা, মিথ্যা, মিথ্যা}; // চালু/বন্ধ

const int colorPin = {A0, A1, A2, A3, A4}; // 가변 저항 핀 번호

int colorVal = {0, 0, 0, 0, 0}; // 가변 저항 초기 값

int animationButton = 7; // 애니메이션 모드 변환 버튼 핀 번호

/////////////////////////////////////////////////

// 애니메이션 모든 변환 을 위한 위한 디 디 바운싱 선언 // 디 바운싱? Button 시간 내 많은 이벤트 이벤트 button button button button button button button button button button button button button button int buttonState; // 입력 핀 으로부터 의 현재 현재 last int lastButtonState = HIGH; // 이전 의 판독 판독 은 켜진 로 ign স্বাক্ষরবিহীন দীর্ঘ lastDebounceTime = 0; // 출력 핀 이 마지막 으로 으로 전환 시간 은 0 으로 স্বাক্ষরবিহীন দীর্ঘ debounceDelay = 50; // 디 바운싱 설정 설정; 출력 이 깜빡 이면 증가 한다 int মোড = 0; // 애니메이션 모드 변수

int B_Interval [5]; // 블 링킹 을 위한 모듈 모듈 랜덤 랜덤

int B_Min = 100; // 블 링킹 최단 속도; int B_Max = 500; // 블 링킹 최장 속도; int R_Interval = 50; // 레인보우 애니메이션 속도 변수 D D_Interval = 10; // 디밍 속도 변수

বুলিয়ান বি_স্টেট [5]; // 블 링킹 을 위한 위한 모듈 모듈 상태 상태

///////////////////////////////////////////////////////

// 멀티 테스 킹 애니메이션 애니메이션 위한 위한 변수 변수

স্বাক্ষরবিহীন দীর্ঘ বর্তমান মিলিস; // 현재 시간 변수

স্বাক্ষরবিহীন দীর্ঘ B_previousMillis [5]; // 각 모듈 의 블 링킹 타이머 স্বাক্ষরবিহীন দীর্ঘ DR_Millis [5]; // 각 모듈 의 디밍 랜덤 예비 (예비) স্বাক্ষরবিহীন দীর্ঘ R_previousMillis; // 레인보우 타이머 স্বাক্ষরবিহীন দীর্ঘ D_previousMillis; // 디밍

বুলিয়ান ফার্স্ট রেইনবো = সত্য; // 레인보우 색상 초기화 상태 변수

int RainbowSpeed; // 레인보우 변환 변수

int উজ্জ্বল = 100; // 디밍 초기 값 int BrightnessFactor = 1; // 디밍 증감 값 //////////////////////////////////////////////// ////////////////////////////////////////

অকার্যকর সেটআপ() {

জন্য (int i = 0; i <NUM_LIGHTS; i ++) {পিক্সেল .begin (); // 네오 픽셀 초기화 초기화}

// 버튼 인풋 설정

জন্য (int i = 0; i <NUM_LIGHTS; i ++) {pinMode (StartSwitch , INPUT_PULLUP); // চালু/বন্ধ pin 설정 pin} pinMode (animationButton, INPUT_PULLUP); // 애니메이션 버튼 인풋 설정

জন্য (int i = 0; i <NUM_LIGHTS; i ++) {B_Interval = int (random (B_Min, B_Max)); // 모듈 별 블 링킹 랜덤 속도 (인터발) 생성 생성}

Serial.begin (9600); // 통신

}

অকার্যকর লুপ () {

মোড = CheckAnimMode (); // 모드 에 애니메이션 체크 모드 모드 함수 넣는다

// 버튼 과 가변 저항 값 을 각각 읽어 읽어।

জন্য (int i = 0; i <NUM_LIGHTS; i ++) {startState =! digitalRead (StartSwitch ); // চালু/বন্ধ করুন 을 colorVal = analogRead (colorPin ); // 가변 저항 에서 읽은 읽은 값 가변 가변 저항 초기 값 넣는다}

সুইচ (মোড) {// 애니메이션 함수 스위치

কেস 0: অন (); // on 실행 실행 break; // 조건문 에서 빠져 나가라

মামলা 1:

রামধনু (); // রামধনু 실행 실행 বিরতি;

কেস 2:

dimming (); // dimming 함수 실행 বিরতি;

কেস 3:

ঝলকানি (); // ঝলকানি 함수 실행 বিরতি; }

জন্য (int i = 0; i <NUM_LIGHTS; i ++) {পিক্সেল .show (); // 네오 픽셀 오브젝트 배열 켜라}

}

/////////////////////////////////////////////////////////////

int CheckAnimMode () {

// 애니메이션 선택 버튼 을 을 모드 모드 결정 결정।

////////////////////////////////////////////////////// /// currentMillis = মিলিস (); // 시간 측정 int reading = digitalRead (animationButton); যদি (পড়া! = lastButtonState) {// 입력 핀 으로부터 이전 의 비교 비교 비교 비교 비교 lastDebounceTime = millis (); // 현재 시간 을 출력 출력 핀 마지막 마지막 으로 전환 된 시간}

যদি ((currentMillis - lastDebounceTime)> debounceDelay) {

যদি (পড়া! = buttonState) {// 입력 핀 으로부터 으로부터 받은 현재 값

buttonState = পড়া; // 판독 값 을 buttonState 에

যদি (buttonState == LOW) {// 버튼 상태 가 꺼져

মোড ++; // 버튼 모드 1 씩 증가 if (MODE> 3) {MODE = 0; প্রথম রেনবো = সত্য; // 레인보우 색상 초기화 상태 ight BrightnessFactor = 1; // 디밍 증감 값 উজ্জ্বল = 15; // 밝기 는 15}}}}

lastButtonState = পড়া; // 판독 값 을 이전 이전 버튼 버튼 에 에

মোড ফেরত; 하고 를 종료 하고 মোড 함수 로 값 을 리턴 하라}

////////////////////////////////////////////////////////////////////

// অ্যানিমেশন মোড ফাংশন

//চালু

অকার্যকর () {Serial.println ("on"); // 시리얼 모니터 을 on 을 on for (int i = 0; i <NUM_LIGHTS; i ++) {color_set (i, colorVal ); // 가변 저항 값 에 따라 따라 셋팅}}}

// রেইনবো

অকার্যকর রামধনু () {Serial.println ("বৃষ্টি"); // 시리얼 모니터 에 বৃষ্টি 을 써라 যদি (firstRainbow) {RainbowSpeed = 0; // 속도 속도 초기화 firstRainbow = মিথ্যা; // 레인보우 색상 초기화 상태 꺼짐} যদি (মিলিস () - R_previousMillis> R_Interval) {// 흐른 시간 값 이 레인보우 인터벌 값 크면 _ R_previousMillis = currentMillis; // 현재 시간 을 이전 이전 라 에 라 라 b RainbowSpeed += 10; // 레인보우 변환 변수 에 10 을 더해라}

জন্য (int i = 0; i <NUM_LIGHTS; i ++) {color_set (i, (colorVal +RainbowSpeed) % 1023); // 레인보우 컬러 셋팅}

}

// ডিমিং

অকার্যকর dimming () {Serial.println ("dimm"); // 시리얼 모니터 에 dimm 을 써라 Serial.println (উজ্জ্বল); // 시리얼 모니터 ight উজ্জ্বল 를 써라 if (currentMillis - D_previousMillis> D_Interval) {// 흐른 시간 값 이 디밍 인터벌 값 크면 _ D_previousMillis = currentMillis; // 현재 시간 을 이전 이전 에 에 ight Bright += BrightnessFactor; // 밝기 에 디밍 증감 값 1 씩 올려라} যদি (উজ্জ্বল 254) {BrightnessFactor = -1 * BrightnessFactor; } উজ্জ্বল = সীমাবদ্ধ (উজ্জ্বল, 99, 254); // 변수 밝기 값 을 최소값 99 ~ 값 254 사이 의 의 으로 으로

জন্য (int i = 0; i <NUM_LIGHTS; i ++) {dim_color_set (i, Bright); // 디밍 컬러 셋팅}}

// ঝলকানি

অকার্যকর জ্বলজ্বলে () {Serial.println ("blink"); // 시리얼 모니터 에 পলক 를

জন্য (int i = 0; i B_Interval ) {// 흐른 시간 값 이 블링크 인터벌 인터벌 값 보다

B_previousMillis = currentMillis; // 현재 시간 을 이전 의 의 블링크 에 넣어 _ B_state =! B_state ; // 각 모듈 의 블 블 상태 변수 의 값 의 반대 을}}}} জন্য (int i = 0; i <NUM_LIGHTS; i ++) {if (B_state ) {// 모듈 의 블 링킹 가 가 읽 히면 color_set (i, colorVal ); // 가변 저항 값 에 따라 따라 셋팅} অন্য {noColor_set (i); // 읽히지 않으면 컬러 셋팅 셋팅 않음}}}

}

////////////////////////////////////////////////////////////////////////////////////////

// মূল ফাংশন

// রঙ সেট

অকার্যকর color_set (int index, int colorSenser) {

যদি (startState [index]) {hue [index] = map (colorSenser, 0, 1023, 0, 359); // 0 ~ 1023 값 을 0 ~ 359 값 으로 매핑 color color color color color color color color color color color color color color color color color color color color জন্য (int i = 0; i <NUMPIXELS; i ++) {pixel [index].setPixelColor (i, pixels [index]. Color (rgb_colors [index] [0], rgb_colors [index] [1], rgb_colors [index] [2])); } // 픽셀 컬러 셋팅 을 rgb_colors 의 r, g, b 으로 else} অন্যথায় noColor_set (index); // 컬러 셋팅 않음 않음}

////// noColor সেট

void noColor_set (int index) {// 컬러 셋팅 하지 않는 함수

জন্য (int i = 0; i <NUMPIXELS; i ++) {pixel [index].setPixelColor (i, pixels [index]. Color (0, 0, 0)); } // 픽셀 컬러 세팅 을 0, 0, 0 으로 설정}

//// dimColor সেট

void dim_color_set (int index, int BC) {// 디밍 컬러 셋팅 함수

যদি (startState [index]) {hue [index] = map (colorVal [index], 0, 1023, 0, 359); // 0 ~ 1023 값 을 0 ~ 359 값 으로 매핑 color color color color color color color color color color color color color color color color color color color জন্য (int i = 0; i <NUMPIXELS; i ++) {pixel [index].setPixelColor (i, pixels [index]. Color (rgb_colors [index] [0], rgb_colors [index] [1], rgb_colors [index] [2])); } /// 픽셀 컬러 셋팅 을 rgb_colors 의 r, g, b 으로 else} অন্যথায় noColor_set (index); // 컬러 셋팅 하지 않음}

ধাপ 6: একটি সমাপ্ত চেহারা

প্রস্তাবিত: