সুচিপত্র:

অভিনব LED টুপি: 5 টি ধাপ (ছবি সহ)
অভিনব LED টুপি: 5 টি ধাপ (ছবি সহ)

ভিডিও: অভিনব LED টুপি: 5 টি ধাপ (ছবি সহ)

ভিডিও: অভিনব LED টুপি: 5 টি ধাপ (ছবি সহ)
ভিডিও: কানাডা পাঠানোর অভিনব ফাঁদ! মাত্র ৬ লাখ, টিপ সই হলেই হয়! | Canada Visa Trap | Jamuna TV 2024, নভেম্বর
Anonim
Image
Image
অভিনব LED টুপি
অভিনব LED টুপি

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

টুপি দিয়ে লক্ষ্য ছিল নিম্নলিখিত:

  1. টুপির কেন্দ্রের সামনের দিক থেকে পিছনে একটি লাইট সেট করুন, প্রতিটি পাশে একটি করে আলো
  2. সামনে থেকে পিছনে টুপি কাত করে আলোর ভ্রমণের গতি পরিবর্তন করুন
  3. টুপি ব্যান্ডটি নিচের দিকে কাত হয়ে গেলে লাইটগুলিকে বিপরীত করার অনুমতি দিন (যেমন আলোর উপর মাধ্যাকর্ষণ প্রভাব অনুকরণ করুন)
  4. টুপি বাম থেকে ডানে কাত করার উপর ভিত্তি করে রঙ পরিবর্তন করুন
  5. সংবেদনশীল শক, এবং একটি বিশেষ প্রভাব প্রদর্শন
  6. পরিধানকারী স্পিনিং অনুভব করুন, এবং একটি বিশেষ প্রভাব প্রদর্শন করুন
  7. এটি সম্পূর্ণরূপে টুপি মধ্যে আছে

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

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

আমি নিম্নলিখিত প্রধান উপাদানগুলি ব্যবহার করেছি (অ-অনুমোদিত অ্যামাজন লিঙ্ক অন্তর্ভুক্ত):

  • তেনসি এলসি মাইক্রোকন্ট্রোলার - আমি এটিকে ছোট আকারের কারণে নিয়মিত আরডুইনো থেকে বেছে নিয়েছি, এবং এটি আমার এলইডি নিয়ন্ত্রণের জন্য একটি বিশেষ সংযোগ রয়েছে, সেইসাথে শক্তিশালী লাইব্রেরি এবং কমিউনিটি সাপোর্ট।
  • Bosch BNO055 ভিত্তিক পজিশনাল সেন্সর - সৎভাবে প্রথম যেগুলোর উপর আমি ডকুমেন্টেশন পেয়েছি। অনেক কম ব্যয়বহুল বিকল্প আছে, তবে একবার আপনি যখন Bosch বের করেন তখন এটি আপনার জন্য অনেক কিছু করে যা আপনাকে অন্যথায় কোডে করতে হবে
  • WS2812 ঠিকানাযোগ্য LED স্ট্রিপ - আমি প্রতি মিটারে 144 LEDs সহ 1 মিটার দৈর্ঘ্য বেছে নিয়েছি। সেই ঘনত্ব থাকার ফলে আলোর ক্রমবর্ধমান পৃথক উপাদানগুলির পরিবর্তে এটিকে চলার মতো দেখতে সাহায্য করে।

এবং নিম্নলিখিত ছোট উপাদানগুলি:

  • একটি টুপি - একটি টুপি সঙ্গে একটি টুপি করতে হবে। এটি একটি স্থানীয় দোকান থেকে $ 6 টুপি। যদি এর পিছনে একটি সিম থাকে তবে তারের মাধ্যমে এটি পেতে সহজ হবে। যদি টুপি ব্যান্ডটি আঠালো থাকে তবে মনোযোগ দিন কারণ এটি কিছু অতিরিক্ত অসুবিধাও সৃষ্টি করবে। এটি উপরের বরাবর সেলাই করা হয়, তবে নীচের অংশটি সহজেই টেনে আনা হয়।
  • 4.7K ওহম প্রতিরোধক
  • 3x AAA ব্যাটারি কেস - 3 AAA ব্যাটারি ব্যবহার করে ইলেকট্রনিক্স যে সীমার মধ্যে চান ঠিক সেই ভোল্টেজ আউটপুট করে, যা জিনিসগুলিকে সহজ করে। AAA AA- এর চেয়ে সহজ টুপিতে ফিট করে এবং এখনও দুর্দান্ত রানটাইম আছে।
  • ছোট গেজ ওয়্যার - আমি আগের LED প্রজেক্ট থেকে কিছু শক্ত তার ব্যবহার করেছি।
  • সোল্ডারিং লোহা এবং ঝাল
  • কিছু স্প্যানডেক্স যা টুপি এবং থ্রেডের ভিতরের রঙের সাথে মেলে

প্রস্তাবিত, কিন্তু চ্ছিক:

  • ব্যাটারি তারের জন্য দ্রুত সংযোগকারী
  • হেল্পিং হ্যান্ডস টুল, এই জিনিসগুলি খুব ছোট এবং ঝালাই করা কঠিন

ধাপ 2: টুপি পরিবর্তন করুন

হাট পরিবর্তন করুন
হাট পরিবর্তন করুন
হাট পরিবর্তন করুন
হাট পরিবর্তন করুন
হাট পরিবর্তন করুন
হাট পরিবর্তন করুন
হাট পরিবর্তন করুন
হাট পরিবর্তন করুন

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

পকেটগুলি সুতার সাথে বপন করা হয়েছিল যা টুপি রঙের সাথে মিলেছিল, সমস্ত দীর্ঘ মুকুট লাইন। টুপি এবং উপকরণের শৈলীর উপর নির্ভর করে এটি এই কৌশল দিয়ে YMMV দিয়ে তৈরি।

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

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

ধাপ 3: ওয়্যার ইট আপ

ওয়্যার ইট আপ
ওয়্যার ইট আপ

Teensy বোর্ড এবং LEDs বিদ্যুতের জন্য 3.3v থেকে 5v পর্যন্ত যে কোন জায়গায় কাজ করবে। এই কারণেই আমি 3 এএএ ব্যাটারি ব্যবহার করতে বেছে নিয়েছি, 4.5v এর আউটপুট ভোল্টেজটি সেই পরিসরে সুন্দরভাবে রয়েছে, এবং আমি LEDs কে কাজ করার জন্য যেভাবে প্রোগ্রাম করেছি তার জন্য প্রচুর রানটাইম আছে। আপনি রানটাইমের 8 ঘন্টারও বেশি ভাল হতে সক্ষম হবেন।

তারের শক্তি

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

যদি আপনি কোডটি চালানোর পরিকল্পনা করছেন যা শুধুমাত্র একক সময়ে কয়েকটি LEDs চালু করে থাকে, তাহলে আপনি একটি 3.3v আউটপুট এবং GND ব্যবহার করে টিনসি থেকে LED গুলিকে শক্তি দিতে পারেন, তবে আপনি যদি খুব বেশি শক্তি টানতে চেষ্টা করেন তবে বোর্ড ক্ষতি তাই নিজেকে সবচেয়ে বেশি বিকল্প দেওয়ার জন্য সরাসরি আপনার ব্যাটারির উৎসে এলইডি লাগানো ভাল।

LEDs তারের

আমি এই প্রকল্পের জন্য টিনসি এলসি বেছে নিয়েছি কারণ এটিতে একটি পিন রয়েছে যা ঠিকানাযোগ্য এলইডিগুলিকে সংযুক্ত করা অনেক সহজ করে তোলে। বোর্ডের নীচে পিনটি বাম আয়না পিন #17 থেকে দ্বিতীয়, কিন্তু এতে 3.3v রয়েছে। এটি একটি পুল-আপ হিসাবে উল্লেখ করা হয়, এবং অন্যান্য বোর্ডগুলিতে আপনাকে সেই ভোল্টেজ সরবরাহ করার জন্য একটি প্রতিরোধকের মধ্যে তারের করতে হবে। টিনসি এলসির ক্ষেত্রে আপনি কেবল সেই পিন থেকে সরাসরি আপনার এলইডি ডেটা তারে ওয়্যার করতে পারেন।

অবস্থান সেন্সর তারের

উপলব্ধ কিছু BNO055 বোর্ড ভোল্টেজের উপর অনেক বেশি কঠোর এবং শুধুমাত্র 3.3v চায়। এই কারণে, আমি TENSY তে ডেডিকেটেড 3.3v আউটপুট থেকে BNO055 বোর্ডে ভিনকে ওয়্যার্ড করেছি, যা ডানদিকে 3 য় পিন। তারপর আপনি BNO055 এর GND কে Teensy- এর যেকোন GND- এর সাথে সংযুক্ত করতে পারেন।

BNO055 পজিশন সেন্সর টিনসির সাথে কথা বলার জন্য I2c ব্যবহার করে। I2c এর জন্য পুল-আপের প্রয়োজন, তাই আমি Teensy তে 3.3v আউটপুট থেকে 18 এবং 19 পিনে 4.7K ওহম প্রতিরোধক দুটি তারযুক্ত করেছি। তারপর আমি BNO055 বোর্ডে এসসিএল পিনে 19 এবং SDA পিনে 18 টি পিন দিয়েছিলাম।

তারের টিপস/কৌশল

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

কঠিন তারের সাথে কাজ করা আরও কঠিন হতে পারে কারণ এটি কীভাবে বাঁকানো থাকতে চায়। তবে এই প্রকল্পের জন্য এটি একটি সুবিধা ছিল। আমি আমার তারগুলিকে এমনভাবে কেটেছি এবং আকৃতি দিয়েছি যাতে টুইকিং এবং প্রোগ্রামিংয়ের জন্য টুপি থেকে ইলেকট্রনিক্স ertedোকানো এবং সরানোর সাথে সাথে পজিশনাল সেন্সরের ওরিয়েন্টেশন সামঞ্জস্যপূর্ণ হবে।

ধাপ 4: প্রোগ্রামিং

এখন সবকিছু একত্রিত হলে আপনার একটি Arduino সামঞ্জস্যপূর্ণ প্রোগ্রামিং টুল প্রয়োজন হবে। আমি প্রকৃত Arduino IDE ব্যবহার করেছি (লিনাক্স, ম্যাক এবং পিসির সাথে কাজ করে)। Teensyduino সফটওয়্যারটি Teensy বোর্ডের সাথে ইন্টারফেসের জন্যও প্রয়োজন হবে। এই প্রকল্পটি এলইডিগুলির রঙ এবং অবস্থান প্রোগ্রামিং করতে FastLED লাইব্রেরি ব্যবহার করে।

ক্যালিব্রেটিং

BNO055 এর জন্য Kris Winer এর চমৎকার GitHub সংগ্রহস্থলে যান এবং তার BNO_055_Nano_Basic_AHRS_t3.ino স্কেচ ডাউনলোড করুন। সিরিয়াল মনিটর চালানোর সাথে কোডটি ইনস্টল করুন এবং এটি আপনাকে বলবে যে BNO055 বোর্ড সঠিকভাবে অনলাইনে আসে এবং তার স্ব -পরীক্ষাগুলি পাস করে। এটি আপনাকে BNO055 কে ক্যালিব্রেট করার মাধ্যমেও চলবে, যা আপনাকে পরবর্তীতে আরো ধারাবাহিক ফলাফল দেবে।

অভিনব LED স্কেচ দিয়ে শুরু করা

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

লাইন 24: #ডিফাইন NUM_LEDS 89 - এটিকে আপনার LED স্ট্রিপে থাকা LEDs এর প্রকৃত সংখ্যায় পরিবর্তন করুন

লাইন 28: #সেরিয়াল_ডেবগ মিথ্যা সংজ্ঞায়িত করুন - আপনি সম্ভবত এটি সত্য করতে চান, যাতে আপনি সিরিয়াল মনিটরে আউটপুট দেখতে পারেন

অবস্থান সনাক্তকরণ কোড

অবস্থান সনাক্তকরণ এবং আপনার বেশিরভাগ টুইকিং লাইন 742 থেকে শুরু হয়, এবং 802 এর মধ্য দিয়ে যায়। আমরা পজিশন সেন্সর থেকে পিচ, রোল এবং ইয়াও ডেটা পাই এবং মান নির্ধারণ করতে এটি ব্যবহার করি। আপনার ইলেকট্রনিক্স কিভাবে মাউন্ট করা হয় তার উপর নির্ভর করে আপনাকে এগুলি পরিবর্তন করতে হতে পারে। যদি আপনি টুপিটির উপরের দিকে চিপ দিয়ে পজিশন সেন্সর মাউন্ট করেন এবং বোর্ডে মুদ্রিত X এর পাশের তীরটি টুপিটির সামনের দিকে নির্দেশ করে আপনাকে নিম্নলিখিতগুলি দেখতে হবে:

  • পিচ মাথা নাড়ছে
  • রোল আপনার মাথা কাত করছে, যেমন আপনার কান আপনার কাঁধে স্পর্শ করুন
  • ইয়া কোন দিক। আপনি মুখোমুখি (উত্তর, পশ্চিম, ইত্যাদি)

যদি আপনার বোর্ডটি অন্য কোন ওরিয়েন্টেশনে মাউন্ট করা থাকে তাহলে আপনি তাদের পছন্দমত আচরণ করার জন্য তাদের পিচ/রোল/ইয়াও সোয়াপ করতে হবে।

রোল সেটিংস সামঞ্জস্য করতে আপনি নিম্নলিখিত #সংজ্ঞায়িত মান পরিবর্তন করতে পারেন:

  • ROLLOFFSET: আপনার টুপি স্থিতিশীল এবং যতটা কেন্দ্রীভূত হতে পারে, যদি রোল 0 না হয়, তাহলে পার্থক্য দ্বারা এটি পরিবর্তন করুন। I.e. যদি আপনি -20 এ রোল দেখছেন যখন আপনার টুপি কেন্দ্রীভূত হয়, তাহলে এই 20 টি করুন।
  • রোলম্যাক্স: রোল পরিমাপের জন্য ব্যবহারের সর্বোচ্চ মান। টুপি পরা এবং আপনার ডান কানকে আপনার ডান কাঁধের দিকে সরিয়ে নেওয়া সবচেয়ে সহজ। সিরিয়াল মনিটর ব্যবহার করার সময় আপনার এটি করার জন্য একটি দীর্ঘ USB তারের প্রয়োজন হবে।
  • রোলমিন: রোল পরিমাপের জন্য ব্যবহার করার জন্য সর্বনিম্ন মান, যখন আপনি আপনার মাথা বাঁকান

একইভাবে, পিচের জন্য:

  • MAXPITCH - সর্বাধিক মান যখন আপনি খুঁজছেন
  • MINPITCH - সর্বনিম্ন মান যখন আপনি নিচে তাকান
  • পিচ সেন্টার - পিচ মান যখন আপনি সরাসরি সামনের দিকে তাকান

যদি আপনি ফাইলের শীর্ষে SERIALDEBUG সেট করেন তবে এই মানগুলিকে টুইক করতে সাহায্য করার জন্য সিরিয়াল মনিটরে রোল/পিচ/ইয়াউ আউটপুটের বর্তমান মান দেখতে হবে।

অন্যান্য পরামিতিগুলি আপনি পরিবর্তন করতে চাইতে পারেন

  • MAX_LED_DELAY 35 - ধীরতম যে LED কণাটি নড়াচড়া করতে পারে। এটি মিলিসেকেন্ডে। এটি স্ট্রিংয়ে একটি LED থেকে অন্যটিতে যাওয়ার বিলম্ব।
  • MIN_LED_DELAY 10 - রোজা যে LED কণা নড়াচড়া করতে পারে। উপরের হিসাবে এটি মিলিসেকেন্ডে।

উপসংহার

যদি আপনি এতদূর চলে গেছেন, আপনার একটি সম্পূর্ণরূপে কার্যকরী, এবং মজা, LED টুপি থাকা উচিত! আপনি যদি এর সাথে আরও কিছু করতে চান, তাহলে পরবর্তী পৃষ্ঠায় সেটিংস পরিবর্তন এবং আপনার নিজের কাজগুলি সম্পর্কে কিছু উন্নত তথ্য রয়েছে। পাশাপাশি আমার বাকি কোডগুলি কি করছে তার কিছু ব্যাখ্যা।

ধাপ 5: উন্নত এবং ptionচ্ছিক: কোডের ভিতরে

প্রভাব এবং স্পিন সনাক্তকরণ

BNO055 এর হাই-জি সেন্সর ফাংশন ব্যবহার করে ইমপ্যাক্ট/স্পিন সনাক্তকরণ করা হয়। আপনি initBNO055 () এ নিম্নলিখিত লাইনগুলি দিয়ে এর সংবেদনশীলতা পরিবর্তন করতে পারেন:

  • লাইন #316: BNO055_ACC_HG_DURATION - ইভেন্টটি কতক্ষণ চলতে হবে
  • লাইন #317: BNO055_ACC_HG_THRESH - প্রভাব কতটা কঠিন হতে হবে
  • লাইন #319: BNO055_GYR_HR_Z_SET - ঘূর্ণন গতি থ্রেশহোল্ড
  • লাইন #320: BNO055_GYR_DUR_Z - ঘূর্ণন কতক্ষণ পর্যন্ত চলতে হবে

উভয় মান 8 বিট বাইনারি, বর্তমানে প্রভাবটি B11000000 তে সেট করা হয়েছে, যা 255 এর মধ্যে 192।

যখন একটি প্রভাব বা স্পিন সনাক্ত করা হয় BNO055 একটি মান নির্ধারণ করে যা কোডটি লুপের শুরুতে সঠিকভাবে দেখায়:

// ট্রিগার করা কোন বাধা সনাক্ত করুন, যেমন উচ্চ জি বাইট intStatus = readByte (BNO055_ADDRESS, BNO055_INT_STATUS) এর কারণে; যদি (intStatus> 8) {প্রভাব (); } অন্যথায় যদি (intStatus> 0) {spin (); }

প্রভাবের উপর আচরণ পরিবর্তন করার জন্য কোডের উপরে অকার্যকর প্রভাব () লাইনটি দেখুন, অথবা স্পিন আচরণ পরিবর্তন করতে অকার্যকর স্পিন ()।

সাহায্যকারী

আমি একটি সহজ সাহায্যকারী ফাংশন তৈরি করেছি তাদের সব বন্ধ করার জন্য এটি ব্যবহার করুন:

setAllLeds (CRGB:: কালো);

অথবা আপনি FastLED লাইব্রেরি দ্বারা স্বীকৃত যেকোনো রং বেছে নিতে পারেন:

setAllLeds (CRGB:: লাল);

একটি fadeAllLeds () ফাংশন রয়েছে যা 25%দ্বারা সমস্ত LED গুলিকে ম্লান করবে।

কণা শ্রেণী

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

/ * * LEDs এর জন্য পরিবর্তনশীল এবং পাত্রে */ CRGB এলইডি [NUM_LEDS]; স্ট্যাটিক স্বাক্ষরবিহীন int curLedDelay = MAX_LED_DELAY; স্ট্যাটিক int centerLed = NUM_LEDS / 2; স্ট্যাটিক int maxLedPos = NUM_LEDS / 2; স্ট্যাটিক বুল oddLeds = 0; স্থির বুল particleDir = 1; স্ট্যাটিক বুল speedDir = 1; স্বাক্ষরবিহীন দীর্ঘ dirCount; স্বাক্ষরবিহীন দীর্ঘ হিউকাউন্ট;

এবং সেটআপ কিছু কোড ():

যদি (NUM_LEDS % 2 == 1) {oddLeds = 1; maxLedPos = NUM_LEDS/2; } অন্য {oddLeds = 0; maxLedPos = NUM_LEDS/2 - 1; }

যদি আমাদের বিজোড় সংখ্যা থাকে, আমরা 1/2 পয়েন্টকে মধ্যম হিসাবে ব্যবহার করতে চাই, অন্যথায় আমরা 1/2 পয়েন্ট চাই - 1. এটি 10 বা 11 LEDs দিয়ে দেখা সহজ:

  • 11 LEDs: 11/2 পূর্ণসংখ্যা সহ 5 এর মূল্যায়ন করা উচিত এবং কম্পিউটারগুলি 0 থেকে গণনা করা হয়। সুতরাং 0 - 4 একটি অর্ধেক, 6 - 10 অন্য অর্ধেক এবং 5 টি তাদের মধ্যে। আমরা এই ক্ষেত্রে #5 ব্যবহার করি যেন এটি উভয়ের অংশ, যেমন এটি LEDs এর ভার্চুয়াল স্ট্রিংগুলির জন্য #1
  • 10 LEDs: 10/2 হল 5. তারপরে আমাদের অর্ধেকের জন্য 0 - 4 এবং অন্যটির জন্য 5 - 9 আছে। প্রথম ভার্চুয়াল স্ট্রিং এর জন্য #1 হবে 4 এবং দ্বিতীয় ভার্চুয়াল স্ট্রিং এর জন্য #1 হবে #5।

তারপর আমাদের কণা কোডে আমাদের সামগ্রিক অবস্থান থেকে এলইডি স্ট্রিংয়ের প্রকৃত অবস্থান পর্যন্ত কিছু গণনা করতে হবে:

যদি (oddLeds) {Pos1 = centerLed + currPos; Pos2 = centerLed - currPos; } অন্যথায় Pos2 = (centerLed -1) - currPos; }

কোডের এমন শর্তও রয়েছে যেখানে কণা দিকনির্দেশনা পরিবর্তন করতে পারে, তাই আমাদের এটিও বিবেচনায় নিতে হবে:

if (particleDir) {if ((currPos == NUM_LEDS/2) && oddLeds) {currPos = 0; } অন্যথায় যদি ((currPos == NUM_LEDS/2 - 1) && (! oddLeds)) {currPos = 0; } অন্যথায় {currPos ++; }} অন্য {যদি ((currPos == 0) && oddLeds) {currPos = centerLed; } অন্যথায় যদি ((currPos == 0) && (! oddLeds)) {currPos = centerLed - 1; } অন্য {currPos--; }}

সুতরাং আমরা কোন নির্দেশিত দিকটি (particleDir) ব্যবহার করি, পরবর্তী কোন LED জ্বলতে হবে তা গণনা করার জন্য, কিন্তু আমাদেরকেও বিবেচনা করতে হবে যে আমরা LED স্ট্রিং এর প্রকৃত প্রান্তে পৌঁছেছি কিনা, অথবা আমাদের সেন্টার পয়েন্ট, যা শেষ পর্যন্ত কাজ করে প্রতিটি ভার্চুয়াল স্ট্রিং।

একবার আমরা সেগুলি বের করতে পেরেছি, আমরা পরবর্তী আলোকে প্রয়োজনীয় হিসাবে আলোকিত করি:

if (particleDir) {if (oddLeds) {Pos1 = centerLed + currPos; Pos2 = centerLed - currPos; } অন্যথায় Pos2 = (centerLed -1) - currPos; }} অন্য {যদি (oddLeds) {Pos1 = centerLed - currPos; Pos2 = centerLed + currPos; } অন্যথায় {পোস 1 = সেন্টারএলড Pos2 = (centerLed -1) + currPos; }} leds [Pos1] = CHSV (currHue, 255, 255); leds [Pos2] = CHSV (currHue, 255, 255); FastLED.show ();}

এটাকে কি আদৌ ক্লাস বানাবো? যেমন এটি, এটি বেশ সহজবোধ্য এবং সত্যিই একটি ক্লাসে থাকার প্রয়োজন নেই। যাইহোক আমার ভবিষ্যতে পরিকল্পনা আছে যে কোডটি আপডেট করার জন্য একটি সময়ে একাধিক কণার জন্য অনুমতি দেওয়া হবে, এবং অন্যরা এগিয়ে যাওয়ার সময় কিছু বিপরীতভাবে কাজ করবে। আমি মনে করি একাধিক কণা ব্যবহার করে স্পিন সনাক্তকরণের জন্য সত্যিই কিছু দুর্দান্ত সম্ভাবনা রয়েছে।

প্রস্তাবিত: