সুচিপত্র:

আলো টানুন - নিওপিক্সেল ব্যবহার করে হালকা মডিউল এবং পুল আপ সুইচ: 6 টি ধাপ (ছবি সহ)
আলো টানুন - নিওপিক্সেল ব্যবহার করে হালকা মডিউল এবং পুল আপ সুইচ: 6 টি ধাপ (ছবি সহ)

ভিডিও: আলো টানুন - নিওপিক্সেল ব্যবহার করে হালকা মডিউল এবং পুল আপ সুইচ: 6 টি ধাপ (ছবি সহ)

ভিডিও: আলো টানুন - নিওপিক্সেল ব্যবহার করে হালকা মডিউল এবং পুল আপ সুইচ: 6 টি ধাপ (ছবি সহ)
ভিডিও: হারাম সম্পর্কের ইতি টানুন!! বেগানা মেলোকের দিকে দৃষ্টিপাত করা হারাম ! সকল পর্ব শিক্ষণীয় ইসলামিক গল্প 2024, জুলাই
Anonim
Image
Image
আলো টানুন - নিওপিক্সেল ব্যবহার করে হালকা মডিউল এবং পুল আপ সুইচ
আলো টানুন - নিওপিক্সেল ব্যবহার করে হালকা মডিউল এবং পুল আপ সুইচ

লাইট মডিউলের বৈশিষ্ট্য

  • আরডুইনো উনো
  • হার্ডওয়্যার এবং ঘের ইন্টারনেট থেকে কেনা
  • নিওপিক্সেল এবং বিদ্যুৎ সরবরাহ স্কুল অফ ইনফরম্যাটিক্স অ্যান্ড প্রোডাক্ট ডিজাইন থেকে ধার করা
  • বিদ্যুৎ সরবরাহ দ্বারা নিয়ন্ত্রিত হালকা মডিউল
  • সমস্ত ফাংশন ব্যবহারকারীদের মিথস্ক্রিয়া দ্বারা নিয়ন্ত্রিত
  • নিওপিক্সেল স্ট্রিপের অ্যানিমেশন প্রকার: বৃষ্টির ধরন, ঝরনার ধরন, স্পার্ক বাজের প্রকার, পপ প্রকার, অনিয়মিত প্রকার
  • পুল আপ সুইচ নিওপিক্সেল স্ট্রিপের সাথে সংযুক্ত এবং নিওপিক্সেল স্ট্রিপ টানলে অ্যানিমেশন পরিবর্তন হয়

ধাপ 1: আমরা শুরু করার আগে

বিফোর উই বিগিন
বিফোর উই বিগিন

হ্যালো নির্দেশক এবং নির্মাতারা।

আমরা আলোর অ্যানিমেশনের মাধ্যমে বৃষ্টির আবেগ অনুভব করতে পারলে কি হবে তার পরিপ্রেক্ষিতে আমরা শুরু করেছি এবং ইন্টারেক্টিভ ডিজাইন প্রকল্প। আমি ভেবেছিলাম যে ব্যবহারকারীর সংবেদনশীলতা একটি ইন্টারফেসের মাধ্যমে সর্বাধিক করা হবে যা সরাসরি আলো টানবে।

পাছে কাজে লাগে

পদক্ষেপ 2: যন্ত্রাংশ প্রয়োজন

যন্ত্রাংশ প্রয়োজন
যন্ত্রাংশ প্রয়োজন
যন্ত্রাংশ প্রয়োজন
যন্ত্রাংশ প্রয়োজন
যন্ত্রাংশ প্রয়োজন
যন্ত্রাংশ প্রয়োজন

একটি হালকা মডিউলের উপর ভিত্তি করে

*** আমাদের বিভাগের সহায়তায় নিওপিক্সেল এবং বিদ্যুৎ সরবরাহ ব্যবহার করা হয়েছিল।

ইলেকট্রনিক্স:

  1. আরডুইনো উনো
  2. 3 রঙের তার (কালো, লাল, কোন রঙ)
  3. 3 পিন সংযোগকারী (কিনতে লিঙ্ক)
  4. পুল আপ সুইচ 1 (কিনতে লিঙ্ক)
  5. সঙ্কুচিত নল
  6. WS2812b 74 LED (Neopixel স্ট্রিপ)*2 সহ অ্যাড্রেসযোগ্য LED স্ট্রিপ
  7. বিদ্যুৎ সরবরাহ (5V 350A) 1

*** Arduino, Pull Switch এবং NeoPixels এর জন্য 50 টি সেট প্রয়োজন। ***

হার্ডওয়্যার:

  1. এক্রাইলিক বার 2t (10mm*1000mm) 1
  2. এক্রাইলিক বোর্ড 5t (60mm*60mm) 1
  3. Foemax 10t (1200mm*1800mm) 1
  4. কালো স্প্রে
  5. তারের গিট
  6. স্ট্রিং
  7. হার্ডবোর্ড
  8. গ্রিড বোর্ড

ধাপ 3: সংযোগ এবং হার্ডওয়্যার নির্মাণ

সংযোগ এবং হার্ডওয়্যার নির্মাণ
সংযোগ এবং হার্ডওয়্যার নির্মাণ
সংযোগ এবং হার্ডওয়্যার নির্মাণ
সংযোগ এবং হার্ডওয়্যার নির্মাণ
সংযোগ এবং হার্ডওয়্যার নির্মাণ
সংযোগ এবং হার্ডওয়্যার নির্মাণ

প্রথমত, আমাদের একটি একক মডিউল তৈরির জন্য এক্রাইলিক কাটিং দরকার।

  • আলোর অ্যানিমেশন অনুভব করার মাধ্যম হিসেবে, 1M এলাকা সহ 2 মিমি পুরু এক্রাইলিক বারে নিওপিক্সেল স্ট্রিপ আকারে 74 LEDs সংযুক্ত করে একটি আলোক মডিউল তৈরি করুন। আমরা দুটি ধরণের আলো মডিউল তৈরি করেছি: সাধারণ রৈখিক এবং সর্পিল।
  • রৈখিক প্রকারের জন্য, বিদ্যমান নিওপিক্সেল স্ট্রিপগুলি ধরে রাখা এবং সুরক্ষিত করা যেতে পারে, তবে সর্পিল ধরনের ম্যানুয়াল অপারেশন প্রয়োজন। 74 টি LED এর প্রত্যেকটি টুকরায় বিভক্ত, একটি সর্পিল এক্রাইলিকের সাথে সংযুক্ত এবং সীসার সাথে একত্রে আবদ্ধ।

এক্রাইলিকের সাথে নিওপিক্সেল স্ট্রিপটি সংযুক্ত করুন এবং প্রতিটি স্ট্রিপকে তাপ দ্বারা ছড়িয়ে পড়া রোধ করতে সুরক্ষিত করুন, বা একটি পাতলা মাছ ধরার লাইনের সাথে বেঁধে দিন। রৈখিক প্রকারের ক্ষেত্রে, মডিউলের শেষের দিকে টানতে হবে এমন গোলকটি নান্দনিক চেহারা ডিজাইন করার জন্য ইনস্টল করা হয়েছিল এবং আমরা একটি কালো স্প্রে দিয়ে পিং পং বলটি শেষ করেছি। তারপর তারা পিংপং বলের মধ্যে একটি ছোট গর্ত ড্রিল করে এবং এটি একটি দড়ি দিয়ে সংযুক্ত করে। পরবর্তী সবচেয়ে গুরুত্বপূর্ণ অংশ, সুইচ এবং নিওপিক্সেল, দেখানো হিসাবে সংযুক্ত। তারপর সুইচটি সিলিং সেলফে সুরক্ষিত।

সর্পিল প্রকারের ক্ষেত্রে, ঝুঁকি রয়েছে যে সর্পিল মডিউলটি সরাসরি টানতে চাপে এক্রাইলিক ভেঙে যেতে পারে, তাই পুল বিভাগ (ইনপুট) এবং মডিউল (আউটপুট) আলাদা করা হয়েছিল। সর্বাধিক আলো পড়ার জন্য, মডিউলগুলি সিলিংয়ে উল্লম্বভাবে ইনস্টল করা হয়েছিল, রৈখিক মডিউলগুলি বাতাসে স্থির করা হয়েছিল, সর্পিলগুলি সরাসরি সিলিংয়ে স্থির করা হয়েছিল। এবং আমরা পিং পং বল এবং সুইচটিকে মাছ ধরার লাইনে সংযুক্ত করেছি যাতে এটি পরিচালনা করা যায়।

উপরের অঙ্কনে দেখানো এক্রাইলিক কাটিংটি শেলফে সুইচ সুরক্ষিত করার জন্য প্রয়োজন। একটি 6cm বর্গ আকৃতির সুইচ আনুমানিক 5 মিমি পুরু, সুইচ কেন্দ্রীভূত এবং সুইচকে দৃ secure়ভাবে সুরক্ষিত করতে উভয় পাশে ছিদ্র দিয়ে একটি কেবল টাই োকানো হয়। কেন্দ্রের নিচের দিকে একটি বৃত্তাকার গর্ত সুইচের টান উন্মোচন করে, যার নিচে তিনটি তারের তার বের করে মডিউলের কেবল টার্মিনালে সংযুক্ত করা হয়। এবং একইভাবে, চার কোণে একটি গর্তের মাধ্যমে, তাক এবং এক্রাইলিক তারের বন্ধন দিয়ে সুরক্ষিত। উপরে বর্ণিত হিসাবে, রৈখিক মডিউলটি সরাসরি পুলের সাথে সংযুক্ত, তবে সর্পিল মডিউলটি পিন এবং সুইচকে আলাদাভাবে সংযুক্ত করে।

ধাপ 4: 50 টি হালকা মডিউল ব্যবহার করে তৈরি করুন

50 টি হালকা মডিউল ব্যবহার করে তৈরি করুন
50 টি হালকা মডিউল ব্যবহার করে তৈরি করুন
50 টি হালকা মডিউল ব্যবহার করে তৈরি করুন
50 টি হালকা মডিউল ব্যবহার করে তৈরি করুন
50 টি হালকা মডিউল ব্যবহার করে তৈরি করুন
50 টি হালকা মডিউল ব্যবহার করে তৈরি করুন

আমরা মোট 50 টি মডিউল মোতায়েন করে সমৃদ্ধ আলোর জন্য একটি ব্যবহারকারীর অভিজ্ঞতা তৈরি করেছি।

আমাদের একটি শেলফ ছিল যা 1, 800 মিমি প্রশস্ত এবং 1, 200 মিমি লম্বা ছিল এবং আমরা প্রতিটি সুইচ এবং মডিউল সংযুক্ত করেছি যাতে আপনি বৃষ্টি এবং বৃষ্টির পরিবেশ যা আমরা প্রাথমিকভাবে পরিকল্পনা করেছি তা অনুভব করতে পারে এবং মাল্টি-টাস্কিং সক্ষম করার জন্য আমাদের প্রতিটি মডিউল একা থাকে ।

নকশা অঙ্কনের উপর নির্ভর করে, একটি বৃত্তাকার গর্ত ফয়েম্যাক্সে ড্রিল করা হয়েছিল যাতে ইনস্টলেশনটি আড়াল করা যায় এবং নিশ্চিত করা যায় যে LED মডিউলের সংযুক্ত এলাকা দৃশ্যমান নয়। যেহেতু অ্যাক্রিলিক বোর্ড থেকে এলইডি মডিউল সংযোগের দূরত্ব যেখানে সুইচটি সংযুক্ত রয়েছে সেগুলি প্রায় 1 সেন্টিমিটার, তাই 1 সেন্টিমিটার পুরু ফয়েম্যাক্স ব্যবহার করা হয়েছিল।

মেটাল স্কয়ার ফ্রেমটি সামগ্রিক ওজন এবং ভারসাম্য বজায় রেখে স্ক্রু এবং তারের বন্ধন সহ ইনস্টলেশনটি ধরে রাখতে ব্যবহৃত হয়েছিল। যদি উন্মুক্ত সংযোগগুলির দৈর্ঘ্য নির্মাতা চেষ্টা করলে তার চেয়ে বেশি হয়, ঘন বোর্ড অকার্যকর এবং অন্যান্য কাঠামোর সুপারিশ করা হয়।

চোখের স্তরে ব্যবহারকারীর অভিজ্ঞতা সহজতর করার জন্য, সম্পূর্ণ ইনস্টলেশনটি প্রায় 2 মিটার উঁচুতে সাপোর্টে রাখা হয়েছে, কিন্তু সাবধানতা হল যে সুইচ দিয়ে এমবেডেড এলইডি মডিউল ইনস্টল করা খুব কষ্টকর, তাই সমস্ত সংযোগ সরিয়ে ফেলা উচিত। আমরা সিঁড়ি বেয়ে উপরে উঠেছি এবং মডিউলটিকে ইনস্টলেশনের সাথে সংযুক্ত করেছি।

এই পুরো প্রক্রিয়ার সবচেয়ে গুরুত্বপূর্ণ অংশটি নিশ্চিত করা যে কাজটি নিরাপদ এবং সম্পূর্ণরূপে নিরাপদ করা হয়েছে তা নিশ্চিত করার জন্য যাতে একটি নিরাপদ পরিবেশে অভিজ্ঞতা সম্ভব হয়।

মোট 10 টি আরডুইনো এবং 50 টি এলইডি মডিউল ব্যবহার করা হয়েছিল এবং আরও দক্ষ এবং বিজোড় মাল্টি-টাস্কিংয়ের জন্য প্রতি আরডুইনোতে পাঁচটি এলইডি মডিউল সংযুক্ত ছিল। বিস্তারিত জানার জন্য সংযুক্ত ব্লুপ্রিন্ট দেখুন। ডিজাইন ডায়াগ্রাম অনুযায়ী ফুল সুইচ ব্যবহার করে নিওপিক্সেল মাল্টি-টাস্কিং কোডিং নিয়ে পরবর্তী ধাপে বিস্তারিত আলোচনা করা হবে।

ধাপ 5: Arduino কোডিং এবং তারের

Arduino কোডিং এবং তারের
Arduino কোডিং এবং তারের
Arduino কোডিং এবং তারের
Arduino কোডিং এবং তারের

তারের

  • ধাপ 4 এর বিন্যাস অনুযায়ী 50 টি মডিউল সংযুক্ত ছিল।
  • মাল্টি-টাস্কিং সক্ষম করতে এবং সুস্পষ্ট সংযোগ প্রদানের জন্য প্রতিটি মডিউলকে 50 টি মডিউলের 10 সেটে বিভক্ত করা হয়েছিল।
  • উপরের সেট 1 ছবিতে দেখানো হয়েছে, পাঁচটি মডিউল একটি একক আরডুইনোতে সংযুক্ত ছিল এবং বিদ্যুৎ সরবরাহের সংযোগের জন্য নিওপিক্সেলের 5v পিনগুলি একসঙ্গে বাঁধা ছিল।
  • নিওপিক্সেলের GND এবং সুইচগুলিও একসঙ্গে বাঁধা ছিল এবং উপলব্ধির সুবিধার জন্য, সুইচগুলি পিন 2, 3, 4, 5, 6 এবং নিওপিক্সেলগুলি পিন 9, 10, 11, 12, 13 এ প্লাগ করা হয়েছিল ।
  • সুইচ এবং নিওপিক্সেল যথাক্রমে 2-9, 3-10, 4-11, 5-12, 6-13 উপায়ে সংযুক্ত ছিল।
  • এটি লক্ষ করা উচিত যে যেহেতু লাইনগুলির সংযোগগুলি জটিল এবং শর্ট সার্কিটের কারণে আগুনের ঝুঁকি রয়েছে, তাই দুর্বল অংশগুলি যাতে ভেঙে না যায় সেজন্য সঙ্কুচিত নলটি গরম করা হয়েছিল।

পুল আপ সুইচ সহ নিওপিক্সেল মাল্টি-টাস্কিং কোডিং

5 হালকা অ্যানিমেশন (বৃষ্টির ধরন, ঝরনার ধরন, স্পার্ক বাজের ধরন, পপ টাইপ, অনিয়মিত প্রকার)

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

/*사용 하고자 하는 패턴 을 추가/*/

এনাম প্যাটার্ন /*네오 픽셀 픽셀 방향 방향 설정/*/ enum direction {FORWARD, REVERSE};

/*패턴 의 클래스 를 를 함/*/

ক্লাস NeoPatterns: public Adafruit_NeoPixel { /* 패턴 을 추가 하고 업데이트 하기 위한* / public: pattern ActivePattern; /*클레스 함수 함수 패턴 의///*/ দিক নির্দেশনা;

/*변수 ব্যবধান 을 추가*/ স্বাক্ষরবিহীন দীর্ঘ ব্যবধান; /*변수 lastUpdate 를 추가*/ স্বাক্ষরবিহীন দীর্ঘ lastUpdate; /*변수 Color1, Color2 를 추가*/ uint32_t Color1, Color2; /*변수 TotalSteps 를 추가*/ uint16_t TotalSteps; /*변수 সূচক 를 추가*/ uint16_t সূচক;

/*패턴 을 완료 했을 시///*/ বাতিল (*অন -কমপ্লিট) (); /*네오 패턴 에서 네오 네오 의 갯수 핀 핀 핀 핀 타입 핀/ অনকম্পলেট = কলব্যাক; }

/*패턴 을 업데이트 하기 위한 위한 구문/*/

অকার্যকর আপডেট () { /*의 의 시간। If 태스킹 을 구현 하는*if /*ActivePattern 의 스위치 구문*/ সুইচ (ActivePattern) {/*কেস RAINBOW_CYCLE 에서는 RainbowCycleUpdate 를 실행 하라*/ case RAINBOW_CYCLE: RainbowCycleUpdate (); /*কেস RAINBOW_CYCLE 에서 나와라*/ বিরতি;

/*ক্ষেত্রে THEATER_CHASE 에서는 TheatreChaseUpdate 를 실행 하라*/

ক্ষেত্রে THEATER_CHASE: TheatreChaseUpdate (); /*ক্ষেত্রে THEATER_CHASE 에서 나와라*/ বিরতি;

/*কেস COLOR_WIPE 에서는 ColorWipeUpdate 를 실행 하라*/

কেস COLOR_WIPE: ColorWipeUpdate (); /*কেস COLOR_WIPE 에서 나와라*/ বিরতি; /*কেস স্ক্যানার 에서는 স্ক্যানার আপডেট 를 실행 하라*/ কেস স্ক্যানার: স্ক্যানার আপডেট (); /*কেস স্ক্যানার 에서 나와라*/ বিরতি;

/*কেস FADE 에서는 FadeUpdate 를 실행 하라*/

কেস FADE: FadeUpdate (); /*কেস FADE 에서 나와라*/ বিরতি;

/*কেস TWINKLE 에서는 TwinkleUpdate 를 실행 하라*/

কেস TWINKLE: TwinkleUpdate (); /*কেস TWINKLE 에서 나와라*/ বিরতি;

/*কেস স্টার 에서는 স্টার আপডেট 를 실행 하라*/

কেস স্টার: স্টার আপডেট (); /*কেস স্টার 에서 나와라*/ বিরতি;

/*কেস RAINBOWSPARKLE 에서는 RainbowsparkleUpdate 실행 실행 하라*/

কেস রেইনবোসপার্কল: রেইনবোস্পার আপডেট (); /*কেস রেইনবো স্পার্কেল 나와라 나와라*/ বিরতি; /*case METEOR 에서는 MeteorUpdate 를 실행 하라*/ case METEOR: MeteorUpdate (); /*কেস METEOR 에서 나와라*/ বিরতি;

/*কেস লাইট 에서는 লাইট আপডেট 를 실행 하라*/

কেস লাইট: লাইট আপডেট (); /*কেস লাইট 에서 나와라*/ বিরতি;

/*ক্ষেত্রে BLOSSOM lo BlossomUpdate 를 실행 하라*/

BLOSSOM কেস: BlossomUpdate (); /*ক্ষেত্রে BLOSSOM 에서 나와라*/ বিরতি; }}}

/*패턴 의 방향 을 설정 설정 구문/*/

/*সূচক 를 증가 시키고 초기화 하는 함수*/

অকার্যকর বর্ধিতকরণ /*만약 인덱스 가 전체 네오 픽셀 구동 구동 갯수 면 면 으로 으로 으로 으로///// /*패턴 을 완료 시키는 함수*/ যদি (OnComplete! = NULL) {OnComplete (); }}}

/*만약 정방향 정방향 아니면 인덱스///*/ অন্যথায় { -ইন্ডেক্স; /*만약 인덱스 가 가 전체 네오 구동 갯수 에서 에서 에서/// 에서 에서 1 을 빼라*/ যদি (সূচী <= 0) {সূচক = মোট পদক্ষেপ - 1; /*패턴 을 완료 시키는 함수*/ যদি (OnComplete! = NULL) {OnComplete (); }}}}

/*반대 방향 으로 움직이게 움직이게 함수/*/

অকার্যকর বিপরীত () { /*애니메이션 함수 verse বিপরীত 를 썼을 시, 만약 방향 이 정방향 이면* / যদি (দিকনির্দেশ == এগিয়ে) { /*방향 은 그 와; সূচক = মোট ধাপ - 1; } /*그 외의 방향 이 이 이면 를 으로 으로 으로 / / / / / / সূচক = 0; }}

/*을 설정 하는 하는 들*

*রেইনবো সাইকেল 의 시간 과 방향 을/*/

অকার্যকর রেইনবো সাইকেল (uint8_t ব্যবধান, দিকনির্দেশ dir = FORWARD) { /*실행 되는 패턴 은 RainbowCycle 임* / ActivePattern = RAINBOW_CYCLE; /*시간 은 অকার্যকর RainbowCycle () 안에 입력 되는 ব্যবধান 과 같음*/ ব্যবধান = ব্যবধান; /*총 구동 갯수 는 255 임*/ মোট পদক্ষেপ = 255; /*는 는 0 으로 설정 함*/ সূচক = 0; /*은 은 অকার্যকর RainbowCycle () 안에 입력 되는 dir = FORWARD 과 같음*/ Direction = dir; }

/*রেনবো সাইকেল 를 업데이트 했을 경우*/

অকার্যকর RainbowCycleUpdate () { /*변수 i 가 네오 픽셀 보다 보다 으면 를 i 를 증가 시켜라* /for (int i = 0; i <numPixels (); i ++) { /*변수 i 가 증가 함 동시에 RGB 의 P 로 변화 하면서 작동 해라 * / setPixelColor (i, Wheel (((i * 256 / numPixels ()) + Index) & 255)); } / *애니메이션 을 보여주는 함수 * / শো (); বৃদ্ধি(); }

/*থিয়েটার চেস 의 컬러 와 시간 방향 을 입력*/

অকার্যকর থিয়েটারচেস (uint32_t color1, uint32_t color2, uint8_t interval, direction dir = FORWARD) { /*실행 되는 패턴 TH RTHEATER_CHASE* / ActivePattern = THEATER_CHASE; /*시간 은 void TheatreChase () 안에 입력 되는 ব্যবধান 과 같음*/ ব্যবধান = ব্যবধান; /*총 구동 갯수 는 numPixels 갯수 임*/ TotalSteps = numPixels (); /*컬러 1, 2 를 설정*/ Color1 = color1; রঙ 2 = রঙ 2; /*는 는 0 으로 설정 함*/ সূচক = 0; /*방향 은 void TheatreChase () 입력 입력 되는 dir = FORWARD 과 같음*/ Direction = dir; }

/*থিয়েটার চেস 를 업데이트 했을 경우*/

void TheatreChaseUpdate () { /*변수 i 가 네오 픽셀 보다 작 으면 i 를 증가 시켜라* /for (int i = 0; i <numPixels (); i ++) { /*만약 변수 i 에 인덱스 를 으로 3 으로 것이 0 과 같다 면 i 를 Color 변환 변환 시켜라*/ if ((i + index) % 3 == 0) {setPixelColor (i, Color1); } /*않다면 않다면 i 를 রঙ 로 변환 시켜라* / অন্যথায় {setPixelColor (i, Color2); }} / *애니메이션 을 보여주는 함수 * / শো (); বৃদ্ধি(); }

/*ColorWipe 의 컬러 와 시간 방향 을 입력*/

অকার্যকর ColorWipe (uint32_t color, uint8_t interval, direction dir = FORWARD) { /*실행 되는 패턴 은 COLOR_WIPE* / ActivePattern = COLOR_WIPE; /*시간 은 অকার্যকর ColorWipe () 안에 입력 되는 ব্যবধান 과 같음*/ অন্তর = ব্যবধান; /*총 구동 갯수 는 numPixels 갯수 임*/ TotalSteps = numPixels (); /*컬러 1 을 설정*/ Color1 = রঙ; /*는 는 0 으로 설정 함*/ সূচক = 0; /*방향 은 void ColorWipe () 안에 입력 되는 dir = FORWARD 과 같음*/ Direction = dir; }

/*ColorWipeUpdate 를 업데이트 했을 경우*/

অকার্যকর ColorWipeUpdate () { /*index 컬러 컬러 1 로 변환 시켜라* / setPixelColor (সূচক, Color1); / *애니메이션 을 보여주는 함수 */ শো (); বৃদ্ধি(); }

/*স্ক্যানার 의 컬러 와 시간 을 입력*/

অকার্যকর স্ক্যানার (uint32_t color1, uint8_t ব্যবধান) { /*실행 되는 패턴 은 SCANNER* / ActivePattern = SCANNER; /*시간 은 অকার্যকর স্ক্যানার () 안에 입력 되는 ব্যবধান 과 같음*/ অন্তর = ব্যবধান; /*구동 갯수 는 총 갯수 에서 1 을 빼고 2 를 곱 해라*/ TotalSteps = (numPixels () - 1)*2; /*컬러 1 을 설정*/ রঙ 1 = রঙ 1; /*는 는 0 으로 설정 함*/ সূচক = 0; }

/*স্ক্যানার আপডেট 를 업데이트 했을 경우*/

void ScannerUpdate () { /*변수 i 는 영 이고 총 보다 작을 를 i 를 증가 시켜라* /for (int i = 0; i <numPixels (); i ++) { /*만약 변수 i 가 인덱스 같다 면 i 를 color1 로 변환 시켜라*/ if (i == Index) {setPixelColor (i, Color1); } / *그렇지 않다면 변수 i 를 전체 구동 갯수 갯수 에서 를 같다 / * / অন্যথায় (i == TotalSteps - Index) {setPixelColor (i, Color1); } / *밖에는 밖에는 i 를 디밍 시켜라 i 의 값 만큼 * / অন্য {setPixelColor (i, DimColor (getPixelColor (i))); }} / *애니메이션 을 보여주는 함수 * / শো (); বৃদ্ধি(); }

/*স্ক্যানার 의 컬러 1, 2 와 스텝, 시간, 방향 을 입력*/

অকার্যকর বিবর্ণ (uint32_t color1, uint32_t color2, uint16_t step, uint8_t interval, direction dir = FORWARD) { /*실행 되는 패턴 AD FADE* / ActivePattern = FADE; /*시간 은 void Fade () 안에 입력 되는 ব্যবধান 과 같음*/ ব্যবধান = ব্যবধান; /*구동 갯수 는 스텝 값임*/ TotalSteps = ধাপ; /*컬러 1, 2 를 설정*/ Color1 = color1; রঙ 2 = রঙ 2; /*는 는 0 으로 설정 함*/ সূচক = 0; /*방향 은 void Fade () 안에 입력 되는 dir = FORWARD 과 같음*/ Direction = dir;))) / মোট পদক্ষেপ; / * 변수 সবুজ 값 은 다음 과 같음 * / uint8_t সবুজ = ((সবুজ (রঙ 1) * (মোট ধাপ - সূচক)) + (সবুজ (রঙ 2) * সূচক)) / মোট পদক্ষেপ; / * 변수 নীল 값 은 다음 과 같음 * / uint8_t নীল = ((নীল (রঙ 1) * (মোট ধাপ - সূচক)) + (নীল (রঙ 2) * সূচক)) / মোট পদক্ষেপ; /*의 의 লাল, সবুজ, নীল 값 으로 컬러 를 셋팅 함*/ কালারসেট (রঙ (লাল, সবুজ, নীল)); / *애니메이션 을 보여주는 함수 */ শো (); বৃদ্ধি(); }

/*모든 네오 픽셀 을 을 구문/*/

অকার্যকর alloff () { /*네오 네오 픽셀 갯수 는 74 개 이며* / int NPIXEL = 74; /*변수 i 가 증가 하며 모든 네오 픽셀 컬러 값 으로 으로 으로/*/ for (int i = 0; i <NPIXEL; i ++) {setPixelColor (i, 0, 0, 0); }}

/*টুইঙ্কল 컬러 컬러 1 와 시간 을 입력*/

অকার্যকর টুইঙ্কল (uint32_t color1, uint8_t ব্যবধান) { /*실행 되는 패턴 은 TWINKLE* / ActivePattern = TWINKLE; /*은 은 অকার্যকর টুইঙ্কল () 안에 입력 되는 ব্যবধান 과 같음*/ অন্তর = ব্যবধান; /*컬러 1 를 설정*/ রঙ 1 = রঙ 1; /*총 구동 갯수 는 numPixels 갯수 임*/ TotalSteps = numPixels (); সূচক = 0; }

/*টুইঙ্কল আপডেট 를 업데이트 했을 경우*/

অকার্যকর TwinkleUpdate () { /*모든 네오 픽셀 의 를 0 으로* / setAll (0, 0, 0); /*변수 পিক্সেল 은 এলোমেলো 74*/ int পিক্সেল = এলোমেলো (74); /*এলোমেলো 74 개 에서 2 로나 눈 수 를 랜덤/*/setPixelColor (Pixel/2, 50, 100, 255); setPixelColor (Pixel, 250, 255, 250); setPixelColor (Pixel/2, 200, 250, 255); setPixelColor (Pixel, 255, 255, 255); setPixelColor (Pixel, 250, 230, 250); setPixelColor (Pixel/2, 150, 200, 255); / *애니메이션 을 보여주는 함수 */ শো (); / *랜덤 하게 끄는 함수 */ setPixelColor (পিক্সেল, 0, 0, 0); / *애니메이션 을 보여주는 함수 */ শো (); বৃদ্ধি(); }

/*স্টার 의 컬러 1 값 을 입력*/

অকার্যকর তারকা (uint32_t color1) { /*실행 되는 패턴 AR STAR* / ActivePattern = STAR; /*시간 은 অকার্যকর তারকা () 안에 되는 되는 ব্যবধান 과 같음*/ অন্তর = ব্যবধান; /*총 구동 갯수 는 numPixels 갯수 임*/ TotalSteps = numPixels (); /*컬러 1 을 설정*/ রঙ 1 = রঙ 1; সূচক = 0; }

/*স্টার আপডেট 를 업데이트 했을 경우*/

অকার্যকর StarUpdate () { /*인덱스 와 컬러 를 셋팅* / setPixelColor (সূচক, Color1); দেখান (); /*변수 i 가 0 이고 구동 갯수 보다 작 으면 i 를 감소 시킴 = 한칸 씩 이동 하는 애니메이션*/ for (int i = 0; i <numPixels (); i--) {setPixelColor (i, Color (0, 0, 0)); } / *애니메이션 을 보여주는 함수 * / বৃদ্ধি (); }

/*Rainbowsparkle 의 시간 과 방향 을/*/

অকার্যকর রেনবোস্পার্কল (uint8_t ব্যবধান, দিক নির্দেশ = ফরওয়ার্ড) { /*실행 되는 패턴 은 RAINBOWSPARKLE* / ActivePattern = RAINBOWSPARKLE; /*시간 은 অকার্যকর Rainbowsparkle () 안에 입력 되는 ব্যবধান 과 같음*/ ব্যবধান = ব্যবধান; /*총 구동 갯수 는 numPixels 갯수 임*/ TotalSteps = numPixels (); সূচক = 0; /*방향 은 অকার্যকর Rainbowsparkle () 안에 입력 되는 দিকনির্দেশ 과 같음*/ দিক = dir; }

/*Rainbowsparkle আপডেট 를 업데이트 했을 경우*/

অকার্যকর RainbowsparkleUpdate () { /*변수 i 가 0 이고 구동 갯수 보다 작 으면 i 값 을 증가 하는데* /for (int i = 0; i <numPixels (); i ++) { /*변수 i 가 0 이고 구동 갯수 작 으면 i 값 을 증가*if setPixelColor (i, c); } অন্য {setPixelColor (i, random (255)); }} / *애니메이션 을 보여주는 함수 * / শো (); বৃদ্ধি(); } /*উল্কা 의 시간 과 방향 입력 입력* / অকার্যকর উল্কা (uint32_t color1) { /*실행 되는 패턴 ET METEOR* / ActivePattern = METEOR; /*시간 설정*/ অন্তর = ব্যবধান; / *총 구동 갯수 는 numPixels 에서 에서 1 일뺀 후, *2 를 한 같음 같음 */ TotalSteps = (numPixels ()-1) *2; /*컬러 1 을 설정*/ রঙ 1 = রঙ 1; সূচক = 0; }

/*উল্কা আপডেট 를 업데이트 했을 경우*/

অকার্যকর MeteorUpdate () {for (int i = 0; i <numPixels (); i ++) {if (i == Index) {setPixelColor (i, 100, random (255), 255); } অন্য {setPixelColor (i, DimColor (getPixelColor (i))); }} / *애니메이션 을 보여주는 함수 * / শো (); বৃদ্ধি(); }

/*আলো 의 시간 과 방향 을 입력*/

অকার্যকর আলো (uint32_t color1) { /*실행 되는 패턴 IG LIGHT* / ActivePattern = LIGHT; /*시간 설정*/ অন্তর = ব্যবধান; / *총 구동 갯수 는 numPixels 에서 에서 1 일뺀 *, *2 를 한 것과 같음 */ TotalSteps = (numPixels ()-1) *2; /*컬러 1 을 설정*/ রঙ 1 = রঙ 1; সূচক = 0; }

/*লাইট আপডেট 를 업데이트 했을 경우*/

void LightUpdate () {for (int i = 0; i <numPixels (); i ++) {if (i == TotalSteps - Index) {setPixelColor (i, 150, random (200), 40); } অন্য {setPixelColor (i, DimColor (getPixelColor (i))); }} / *애니메이션 을 보여주는 함수 * / শো (); বৃদ্ধি(); }

/*পুষ্প 의 시간 과 방향 을 입력*/

অকার্যকর ব্লসম (uint32_t color1) { /*실행 되는 패턴 L BLOSSOM* / ActivePattern = BLOSSOM; /*시간 설정*/ অন্তর = ব্যবধান; / *총 구동 갯수 는 numPixels 에서 에서 1 일뺀 후, *2 를 한 같음 같음 */ TotalSteps = (numPixels ()-1) *2; /*컬러 1 을 설정*/ রঙ 1 = রঙ 1; সূচক = 0; }

/*ব্লসম আপডেট 를 업데이트 했을 경우*/

void BlossomUpdate () {for (int i = 0; i <numPixels (); i ++) {if (i == TotalSteps - Index) {setPixelColor (i, 255, random (255), 100); } অন্য {setPixelColor (i, DimColor (getPixelColor (i))); }} / *애니메이션 을 보여주는 함수 * / শো (); বৃদ্ধি(); }

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

/ *네오 픽셀 의 의 는 위치 와 색 을///, সবুজ, নীল); } দেখান (); }

/*네오 픽셀 의 디밍, 밝기 를 조절 하는 함수*/

uint32_t DimColor (uint32_t কালার) {// Shift R, G এবং B কম্পোনেন্ট এক ডানে uint32_t dimColor = Color (Red (color) >> 1, Green (color) >> 1, blue (color) >> 1); প্রত্যাবর্তন dimColor; }

/*모든 네오 픽셀 의 칼라 를/*/

void ColorSet (uint32_t color) {for (int i = 0; i <numPixels (); i ++) {setPixelColor (i, color); } দেখান (); }

/*레드 값 을 불러 옴*/

uint8_t লাল (uint32_t রঙ) {রিটার্ন (রঙ >> 16) & 0xFF; } /*그린 값 을 불러 옴* / uint8_t সবুজ (uint32_t রঙ) {রিটার্ন (রঙ >> 8) & 0xFF; } /*블루 값 을 불러 옴* / uint8_t নীল (uint32_t রঙ) {রিটার্ন কালার & 0xFF; }

/*রামধনু 컬러 를 불러 옴*/

uint32_t চাকা (বাইট WheelPos) {WheelPos = 255 - WheelPos; যদি (WheelPos <85) {রিটার্ন কালার (255 - WheelPos * 3, 0, WheelPos * 3); } অন্যথায় যদি (WheelPos <170) {WheelPos -= 85; রিটার্ন কালার (0, হুইলপস * 3, 255 - হুইলপস * 3); } অন্য {হুইলপস -= 170; রিটার্ন কালার (WheelPos * 3, 255 - WheelPos * 3, 0); }}};

/*স্ট্রিপ 을 불러 오기 위한 함수 /*사용 하는 스트립 별로 모두 지정 / /* /

অকার্যকর strip1Complete (); অকার্যকর strip2Complete (); অকার্যকর strip3Complete (); অকার্যকর strip4Complete (); অকার্যকর strip5Complete ();

/*네오 픽셀 의 갯수 설정*/

#সংজ্ঞায়িত NUMPIXELS 74 /*사용 하는 버튼 의 갯수 설정* / / NEO_GRB + NEO_KHZ800, & strip1Complete); NeoPatterns strip2 (74, 9, NEO_GRB + NEO_KHZ800, & strip2Complete); NeoPatterns strip3 (74, 10, NEO_GRB + NEO_KHZ800, & strip3Complete); NeoPatterns strip4 (74, 11, NEO_GRB + NEO_KHZ800, & strip4Complete); NeoPatterns strip5 (74, 12, NEO_GRB + NEO_KHZ800, & strip5Complete); /*배열 을 사용한 사용한 버튼 핀 설정*/ const int buttonPin [B_NUM] = {2, 3, 4, 5, 6}; /*배열 을 을 사용 하여 버튼 를 를/*/ int buttonState [B_NUM]; /*2 번핀 부터 6 번핀 까지 상태 는 OW OW LOW 임*/ int lastButtonState [B_NUM] = {LOW, LOW, LOW, LOW, LOW}; /*2 번핀 부터 6 번핀 까지 버튼 카운터 를 초기화/*/ int buttonCounter [B_NUM] = {0, 0, 0, 0, 0}; /*2 번핀 부터 6 번핀 까지 최대 버튼 카운터 는 5 임*/ int buttonCounterMax = 5; /*모든 버튼 버튼 핀 을 일수 있도록 있도록/*/ int reading [B_NUM]; স্বাক্ষরবিহীন দীর্ঘ lastDebounceTime [B_NUM] = {0, 0, 0, 0, 0}; /*모든 버튼 핀 을 읽는 은 은 은 বিলম্ব 50 과*

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

*****G G G G G G G; } Serial.begin (9600); /*스트립 1 ~ 5 를 셋팅*/ strip1.begin (); strip2.begin (); strip3.begin (); strip4.begin (); strip5.begin ();

//strip1. TheaterChase(strip1. Color(255, 0, 255), strip1. Color (255, 50, 0), 20, FORWARD);

}

/*버튼 카운터 변수 값 은 5 임*/

int কাউন্টার = 5; void loop () { /*버튼 수 보다 i 가 작 으면 i 를 증가 시키고* / for (int i = 0; i debounceDelay) {যদি (পড়া ! = buttonState ) {buttonState = পড়া [আমি]; buttonCounter ++; /*버튼 카운팅 이 위에서 설정 한 한 Max 값 5 를 넘으면 0 으로 시켜라*।*/ If (buttonCounter > buttonCounterMax) buttonCounter = 0; }} lastButtonState = পড়া ; } /*모든 스트립 을 업데이트*।* / স্ট্রিপ 1. আপডেট (); strip2. আপডেট (); strip3. আপডেট (); strip4. আপডেট (); স্ট্রিপ 5. আপডেট ();

///// SWITCH_2 //////////////////////////////////////////////// ///////////////////////////////////////////////////// ////////////////////////////////////////////

/*버튼 배열 의 0 번째। 2 번핀 에 연결된 연결된 을 을/ 애니메이션/////*/ সুইচ (buttonCounter [0]) {

/*첫번째 버튼 을 활동 활동 구동 구동 애니메이션/*/

কেস 0: strip1. ActivePattern = BLOSSOM; /*해당 애니메이션 의 시간 을 설정*/ স্ট্রিপ 1. অন্তর = 20; /*구동 되는 네오 픽셀 픽셀 갯수 를 설정*/ strip1. TotalSteps = strip1.numPixels (); বিরতি; /*두번째 버튼 을 활동 시키면 구동 되는/*/ ক্ষেত্রে 1: strip1. ActivePattern = RAINBOWSPARKLE; ফালা 1. অন্তর = 50; strip1. TotalSteps = strip1.numPixels (); বিরতি; /*세번째 버튼 버튼 활동 시키면///*/ ক্ষেত্রে 2: strip1. ActivePattern = SCANNER; ফালা 1. অন্তর = 10; strip1. TotalSteps = (strip1.numPixels () - 1) * 2; বিরতি; /*네번째 버튼 을 활동 시키면 구동 되는 애니메이션*/ কেস 3: স্ট্রিপ 1. ActivePattern = TWINKLE; স্ট্রিপ 1. ব্যবধান = 1; strip1. TotalSteps = strip1.numPixels (); বিরতি; ***///// ফালা 1. অন্তর = 10; strip1. TotalSteps = strip1.numPixels (); বিরতি; } সিরিয়াল.প্রিন্ট (buttonCounter [0]); সিরিয়াল.প্রিন্ট (","); Serial.println (buttonCounter [1]);

///// SWITCH_3 //////////////////////////////////////////////// ////////////////////////////////////////////////////// ////////////////////////////////////////////

সুইচ (buttonCounter [1]) {case 0: strip2. ActivePattern = STAR; ফালা 2. অন্তর = 50; strip2. TotalSteps = strip2.numPixels (); বিরতি; কেস 1: strip2. ActivePattern = RAINBOWSPARKLE; ফালা 2. ব্যবধান = 100; strip2. TotalSteps = strip2.numPixels (); বিরতি; কেস 2: strip2. ActivePattern = SCANNER; ফালা 2. ব্যবধান = 20; strip2. TotalSteps = (strip2.numPixels () - 1) * 2; বিরতি; কেস 3: strip2. ActivePattern = TWINKLE; ফালা 2. অন্তর = 5; strip2. TotalSteps = strip2.numPixels (); বিরতি; কেস 4: strip2. ActivePattern = METEOR; ফালা 2. ব্যবধান = 40; strip2. TotalSteps = strip2.numPixels (); বিরতি; } সিরিয়াল.প্রিন্ট (buttonCounter [0]); সিরিয়াল.প্রিন্ট (","); Serial.println (buttonCounter [1]);

///// সুইচ_4 /////////////////////////////////////////////// ////////////////////////////////////////////////////// ////////////////////////////////////////////

সুইচ (buttonCounter [2]) {case 0: strip3. ActivePattern = STAR; strip3. ব্যবধান = 50; strip3. TotalSteps = strip3.numPixels (); বিরতি; কেস 1: strip3. ActivePattern = RAINBOWSPARKLE; strip3. ব্যবধান = 100; strip3. TotalSteps = strip3.numPixels (); বিরতি; কেস 2: strip3. ActivePattern = স্ক্যানার; strip3. ব্যবধান = 20; strip3. TotalSteps = (strip3.numPixels () - 1) * 2; বিরতি; কেস 3: strip3. ActivePattern = TWINKLE; strip3. ব্যবধান = 5; strip3. TotalSteps = strip3.numPixels (); বিরতি; কেস 4: strip3. ActivePattern = METEOR; strip3. ব্যবধান = 25; strip3. TotalSteps = strip3.numPixels (); বিরতি; } সিরিয়াল.প্রিন্ট (buttonCounter [0]); সিরিয়াল.প্রিন্ট (","); Serial.println (buttonCounter [1]);

///// সুইচ_5 /////////////////////////////////////////////// ////////////////////////////////////////////////////// ////////////////////////////////////////////

সুইচ (buttonCounter [3]) {case 0: strip4. ActivePattern = STAR; strip4. ব্যবধান = 50; strip4. TotalSteps = strip4.numPixels (); বিরতি; কেস 1: strip4. ActivePattern = RAINBOWSPARKLE; strip4. Interval = 100; strip4. TotalSteps = strip4.numPixels (); বিরতি; কেস 2: strip4. ActivePattern = স্ক্যানার; strip4. ব্যবধান = 20; strip4. TotalSteps = (strip4.numPixels () - 1) * 2; বিরতি; কেস 3: strip4. ActivePattern = TWINKLE; strip4. ব্যবধান = 5; strip4. TotalSteps = strip4.numPixels (); বিরতি; কেস 4: strip4. ActivePattern = METEOR; strip4. ব্যবধান = 25; strip4. TotalSteps = strip4.numPixels (); বিরতি; } সিরিয়াল.প্রিন্ট (buttonCounter [0]); সিরিয়াল.প্রিন্ট (","); Serial.println (buttonCounter [1]);

///// সুইচ_6 ////////////////////////////////////////////// ////////////////////////////////////////////////////// ////////////////////////////////////////////

সুইচ (buttonCounter [4]) {case 0: strip5. ActivePattern = STAR; স্ট্রিপ 5. অন্তর = 50; strip5. TotalSteps = strip5.numPixels (); বিরতি; কেস 1: strip5. ActivePattern = RAINBOWSPARKLE; স্ট্রিপ 5. অন্তর = 100; strip5. TotalSteps = strip5.numPixels (); বিরতি; কেস 2: স্ট্রিপ 5. অ্যাক্টিভ প্যাটার্ন = স্ক্যানার; স্ট্রিপ 5. ব্যবধান = 20; strip5. TotalSteps = (strip5.numPixels () - 1) * 2; বিরতি; কেস 3: strip5. ActivePattern = TWINKLE; স্ট্রিপ 5. ব্যবধান = 5; strip5. TotalSteps = strip5.numPixels (); বিরতি; কেস 4: strip5. ActivePattern = METEOR; স্ট্রিপ 5. ব্যবধান = 25; strip5. TotalSteps = strip5.numPixels (); বিরতি; } সিরিয়াল.প্রিন্ট (buttonCounter [0]); সিরিয়াল.প্রিন্ট (","); Serial.println (buttonCounter [1]); }

// strip1 সমাপ্তি কলব্যাক

অকার্যকর strip1Complete () {strip1. Color1 = strip1. Wheel (এলোমেলো (255)); strip1. Color2 = strip1. Wheel (এলোমেলো (255)); স্ট্রিপ 1. ইন্ডেক্স = 0; }

// strip2 সমাপ্তি কলব্যাক

অকার্যকর strip2Complete () {strip2. Color1 = strip2. Wheel (এলোমেলো (255)); strip2. Color2 = strip2. Wheel (এলোমেলো (255)); স্ট্রিপ 2. ইনডেক্স = 0; }

// strip3 সমাপ্তি কলব্যাক

অকার্যকর strip3Complete () {strip3. Color1 = strip3. Wheel (এলোমেলো (255)); strip3. Color2 = strip3. Wheel (এলোমেলো (255)); strip3. সূচক = 0; }

// strip4 সমাপ্তি কলব্যাক

অকার্যকর strip4Complete () {strip4. Color1 = strip4. Wheel (এলোমেলো (255)); strip4. Color2 = strip4. Wheel (এলোমেলো (255)); strip4. ইন্ডেক্স = 0; }

// strip5 সমাপ্তি কলব্যাক

অকার্যকর strip5Complete () {strip5. Color1 = strip5. Wheel (এলোমেলো (255)); strip5. Color2 = strip5. Wheel (এলোমেলো (255)); স্ট্রিপ 5. ইন্ডেক্স = 0; }

ধাপ 6: ফলাফল এবং চলচ্চিত্র তৈরি

Image
Image
ফলাফল এবং চলচ্চিত্র নির্মাণ
ফলাফল এবং চলচ্চিত্র নির্মাণ

আমাদের প্রকল্পে আপনার আগ্রহের জন্য ধন্যবাদ যদিও এটি যথেষ্ট নয়।

প্রস্তাবিত: