সুচিপত্র:

স্পার্কলিং ম্যাট্রিক্স দিয়ে আপনার ভ্যালেন্টাইনকে আলোকিত করুন: 5 টি ধাপ
স্পার্কলিং ম্যাট্রিক্স দিয়ে আপনার ভ্যালেন্টাইনকে আলোকিত করুন: 5 টি ধাপ

ভিডিও: স্পার্কলিং ম্যাট্রিক্স দিয়ে আপনার ভ্যালেন্টাইনকে আলোকিত করুন: 5 টি ধাপ

ভিডিও: স্পার্কলিং ম্যাট্রিক্স দিয়ে আপনার ভ্যালেন্টাইনকে আলোকিত করুন: 5 টি ধাপ
ভিডিও: ইউটিউবে #SanTenChan-এ ভাজা মাশরুম সহ গ্রিলড ফিললেট হোমমেড গ্যাস্ট্রোনমি 2024, নভেম্বর
Anonim
স্পার্কলিং ম্যাট্রিক্স দিয়ে আপনার ভ্যালেন্টাইনকে আলোকিত করুন
স্পার্কলিং ম্যাট্রিক্স দিয়ে আপনার ভ্যালেন্টাইনকে আলোকিত করুন

ভালোবাসা দিবস আপনার জন্য প্রেমের বার্তা পাঠানোর সুযোগ। কেন আপনার অনুভূতি প্রকাশ করতে সস্তা উপাদান দিয়ে একটি মজার LED মুখ তৈরি করবেন না!

ধাপ 1: এই প্রকল্পে ব্যবহৃত জিনিসগুলি

হার্ডওয়্যার উপাদান

  • Seeeduino V4.2
  • বেস শিল্ড
  • গ্রোভ - লাল LED ম্যাট্রিক্স w/ড্রাইভার
  • গ্রোভ - অঙ্গভঙ্গি (PAJ7620U2

সফটওয়্যার অ্যাপ এবং অনলাইন সেবা

Arduino IDE

ধাপ 2: গল্প

Image
Image

ধাপ 3: হার্ডওয়্যার সংযোগ

ছবি
ছবি

এই প্রকল্পে, আমরা একটি ইনপুট হিসাবে অঙ্গভঙ্গি সেন্সর ব্যবহার করি এবং লাল LED ম্যাট্রিক্স খাওয়ানোর জন্য LED ম্যাট্রিক্স ড্রাইভারকে প্রতিক্রিয়া জানাই।

আপনাকে Grove - Gesture and the Grove - Red LED Matrix w/Driver কে I^2^C পোর্টে বেস ieldালের সাথে সংযুক্ত করতে হবে যা Seeeduino- এ প্লাগ করা আছে। তারপর একটি USB তারের মাধ্যমে পিসি থেকে Seeeduino সংযোগ করুন।

ধাপ 4: সফটওয়্যার প্রোগ্রামিং

এই প্রকল্পের পরিকল্পনা হল স্থির ইমোজি (কান্নাকাটি মুখ এবং অপেক্ষা মুখ) প্রদর্শন করা যখন কোন বাম বা ডান অঙ্গভঙ্গি পড়া হয়নি।

বাম বা ডান অঙ্গভঙ্গি পড়ার সময় বাম বা ডান অঙ্গভঙ্গি দ্বারা নিয়ন্ত্রিত চোখের অবস্থান-পরিবর্তন ইমোজি প্রদর্শন করুন।

ছবি
ছবি

নির্দিষ্ট চোখের অবস্থানে, একটি হার্ট হার্ট LED ম্যাট্রিক্সে প্রদর্শিত হবে।

ছবি
ছবি

LED ডিসপ্লে প্যাটার্নগুলি LED ম্যাট্রিক্স এডিটর দ্বারা ডিজাইন করা হয়েছে, আপনি উপরের প্রোগ্রাম শোতে আপনার LED প্যাটার্ন পরিবর্তন বা যোগ করতে পারেন।

এই প্রকল্পের জন্য প্রস্তুত হওয়ার জন্য, Grove - Gesture, Grove - Red LED Matrix w/Driver এবং MsTimer2 লাইব্রেরিগুলি Arduino IDE তে ইনস্টল করা প্রয়োজন।

#অন্তর্ভুক্ত "Grove_LED_Matrix_Driver_HT16K33.h"

#অন্তর্ভুক্ত "MsTimer2.h" #অন্তর্ভুক্ত "paj7620.h" #অন্তর্ভুক্ত "Wire.h"

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

// ডিবাগ করার জন্য সিরিয়াল শুরু।

Serial.begin (9600); যখন (! সিরিয়াল); paj7620Init (); Wire.begin (); matrix.init (); matrix.set উজ্জ্বলতা (15); matrix.setBlinkRate (BLINK_OFF); MsTimer2:: সেট (1000, displayStatic); MsTimer2:: শুরু ();

প্রধান লুপে, আমরা শুধুমাত্র অঙ্গভঙ্গি সেন্সর, GES_RIGHT_FLAG, GES_LEFT_FLAG থেকে দুটি আউটপুট নিয়ে থাকি এবং এগুলি displayDynamic () ফাংশন নির্দেশ করতে ব্যবহৃত হয়।

ডিসপ্লে ডায়নামিক () ফাংশনটি শেষ সময়ের গতিশীল ইমোজি বর্তমান সময় থেকে প্রদর্শিত হওয়ার সময়কালের হিসাব করবে, যদি ব্যবধানটি TIMEOUT এর চেয়ে বেশি হয় তবে এটি স্ট্যাটিক ইমোজি বাজানো বন্ধ করবে এবং প্রদর্শিত গতিশীল ইমোজি সূচী সেট করতে শুরু করবে। বাম-থেকে-ডান অঙ্গভঙ্গিগুলি পড়লে, সূচকের সূচকটি 0 হয়, এবং বাম-থেকে-ডান অঙ্গভঙ্গিগুলি আবার পড়ার পর সূচকটি বাড়ানো হবে। অন্যথায়, সূচী সূচকটি DYNAMIC অ্যারের শেষ সূচক, এবং সূচকটি হ্রাস পাবে।

void displayDynamic (bool leftToRight) {

স্বাক্ষরবিহীন দীর্ঘ কারেন্টটাইম = মিলিস (); যদি (currentTime - prevTime> TIMEOUT) {dIndex = leftToRight? 0: ARRAY_LENGTH (DYNAMIC) - 1; শো স্ট্যাটিক = মিথ্যা; } // এটি সীমা অতিক্রম করতে এড়াতে ব্যবহৃত হয়। যদি (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex <= -1) {heartBeat (); dIndex = leftToRight? ARRAY_LENGTH (ডায়নামিক) - 1: 0; } prevTime = currentTime; matrixDisplay = DYNAMIC [leftToRight? dIndex ++: dIndex--]; }

TIMEOUT পেরিয়ে গেলে কোন ইঙ্গিত পড়া হয় না, স্থির ইমোজি বাজানো পুনরুদ্ধার করা হবে।

আপনার Seeeduino এ প্রোগ্রামটি আপলোড করুন, সব শেষ। খেলুন এবং একটি মজা আছে!

ধাপ 5: কোড

#অন্তর্ভুক্ত "Grove_LED_Matrix_Driver_HT16K33.h"

#অন্তর্ভুক্ত "MsTimer2। ম্যাট্রিক্স_8x8 ম্যাট্রিক্স; uint64_t matrixDisplay = 0; স্বাক্ষরবিহীন দীর্ঘ prevTime = মিলিস (); int8_t sIndex = 0; বুল শো স্ট্যাটিক = সত্য; const uint64_t স্ট্যাটিক = {0x00003c0000a54200, 0x00003c000000e700, 0x00003c004242e700}; int8_t dIndex = 0; const uint64_t DYNAMIC = {0x00003c000021e700, 0x00003c000042e700, 0x00003c000084e700}; const uint64_t HEART = {0x00183c7e7e240000, 0x00183c7effff6600, 0x183c7effffffff66, 0x00183c7effff6600}; void displayStatic (void) {if (showStatic) {matrixDisplay = STATIC [sIndex]; sIndex = (sIndex + 1) % ARRAY_LENGTH (স্ট্যাটিক); }} void heartBeat () {for (uint8_t i = 0; i TIMEOUT) {showStatic = false; prevTime = currentTime; dIndex = leftToRight? 0: ARRAY_LENGTH (DYNAMIC) - 1; } // এটি সীমানা অতিক্রম করতে ব্যবহার করা হয়। যদি (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex TIMEOUT) {showStatic = true; } matrix.writeOnePicture (matrixDisplay); matrix.display (); বিলম্ব (100); }

প্রস্তাবিত: