সুচিপত্র:
- সরবরাহ
- ধাপ 1: অ্যালগরিদম 101
- ধাপ 2: অ্যালগরিদম
- ধাপ 3: LED বার: 3D মাস্ক প্রিন্ট করুন
- ধাপ 4: LED বার বিকল্প
- ধাপ 5: LED বার ঘের
- ধাপ 6: কন্ট্রোল প্যানেল
- ধাপ 7: বোতাম জোতা
- ধাপ 8: রোটারি এনকোডার
- ধাপ 9: 7-সেগমেন্ট প্রদর্শন
- ধাপ 10: প্রধান নিয়ন্ত্রক বোর্ড
- ধাপ 11: সমাবেশ
- ধাপ 12: কোড
- ধাপ 13: কিভাবে ব্যবহার করবেন
ভিডিও: অ্যালগরিদম মেশিন: 13 টি ধাপ (ছবি সহ)
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 07:58
আমি 15 বছর ধরে কলেজ পর্যায়ে কম্পিউটার বিজ্ঞান পড়িয়ে আসছি, এবং যদিও আমার দক্ষতা প্রোগ্রামিংয়ের দিকে বেশি, তবুও আমি অনুসন্ধান এবং বাছাইয়ের জন্য স্ট্যান্ডার্ড অ্যালগরিদমগুলি জুড়ে অনেক সময় ব্যয় করি। শিক্ষার দৃষ্টিকোণ থেকে কেন্দ্রীয় বিষয় হল গণনীয় জটিলতা: একটি নির্দিষ্ট আকারের ইনপুট প্রদানের জন্য প্রতিটি অ্যালগরিদমের কতটা সময় প্রয়োজন? কিন্তু অসংখ্য সূক্ষ্মতা আছে। উদাহরণস্বরূপ, নির্দিষ্ট ইনপুট মানগুলির (আকারের বিপরীতে) উপর নির্ভর করে অ্যালগরিদমের কি আলাদা রানটাইম আছে? কোন ক্ষেত্রে আপনি অন্যের উপর একটি সাজানোর অ্যালগরিদম বেছে নেবেন? যদিও আমরা এই বিষয়গুলি বিমূর্তে আলোচনা করি, এটি সবসময় আমাকে বিরক্ত করে যে বিভিন্ন অবস্থার অধীনে বিভিন্ন অ্যালগরিদম কিভাবে কাজ করে তা দেখার কোন সহজ উপায় ছিল না।
লক্ষ্য
এই প্রকল্পের জন্য আমার সর্বাধিক লক্ষ্য ছিল শিক্ষার্থীদের অ্যালগরিদমগুলি দেখতে এবং অন্বেষণ করার জন্য একটি ইন্টারেক্টিভ ডিসপ্লে তৈরি করা। আমি নিজেকে অ্যালগরিদমগুলিতে সীমাবদ্ধ করেছি যা মানগুলির পূর্ণসংখ্যা (পূর্ণসংখ্যা) এ কাজ করে, তাই আমি অ্যারের বিষয়বস্তু কল্পনা করতে একটি ঠিকানাযোগ্য RGB LED স্ট্রিপ ব্যবহার করতে পারি। অ্যারেটিতে 100 টি উপাদান রয়েছে এবং প্রতিটি পূর্ণসংখ্যা রংধনু ক্রমে একটি রঙে ম্যাপ করা হয়েছে, যাতে অ্যারে সাজানো, আংশিকভাবে বা এলোমেলো করা হলে তা অবিলম্বে স্পষ্ট হয়। মানগুলির পাশাপাশি, আমি অ্যালগরিদমের নিয়ন্ত্রণের দিকগুলি কল্পনা করার একটি উপায় চেয়েছিলাম - উদাহরণস্বরূপ, অ্যারের কোন উপাদানগুলি বর্তমানে তুলনা করা বা অদলবদল করা হচ্ছে।
নির্দিষ্ট লক্ষ্যগুলি হল:
- অনুসন্ধান এবং সাজানোর অ্যালগরিদম বিভিন্ন প্রদান করুন
- অ্যারের মানগুলিকে এমনভাবে ভিজ্যুয়ালাইজ করুন যা অ্যালগরিদমের অগ্রগতি তুলে ধরে
- অ্যালগরিদম নিয়ন্ত্রণ ভিজ্যুয়ালাইজ করুন; বিশেষ করে, উপাদানগুলি বিবেচনা করা হচ্ছে।
- ব্যবহারকারীদের সর্বদা এলোমেলো মান তৈরি করার পরিবর্তে ইনপুট ডেটা প্যাটার্নগুলি বেছে নেওয়ার অনুমতি দিন
- ব্যবহারকারীদের গতি নিয়ন্ত্রণ করতে এবং অ্যালগরিদম বিরতিতে অনুমতি দিন
-ব্যবহারকারীদের সেরা-কেস, খারাপ-কেস, গড়-কেস আচরণ (অ্যালগরিদম-নির্দিষ্ট) জোর করার অনুমতি দিন
- অ্যালগরিদম এগিয়ে যাওয়ার মতো ধাপের সংখ্যা দেখান
ভিজ্যুয়ালাইজেশন
একটি শারীরিক নকশা দৃষ্টিকোণ থেকে এই প্রকল্পের সবচেয়ে আকর্ষণীয় অংশ হল অ্যারের দৃশ্যায়ন। আমি কীভাবে ডেটা এবং নিয়ন্ত্রণ দেখাতে হয় এবং কীভাবে ডিসপ্লে ডিভাইসটি নিজেই তৈরি করতে হয় তা নিয়ে লড়াই করেছি। আমার লক্ষ্য ছিল ডাটা মানগুলিকে রঙিন বৃত্ত হিসেবে দেখানো এবং নিয়ন্ত্রণ পয়েন্টগুলিকে রঙিন তীর হিসাবে দেখানো যা ডেটা মানগুলির দিকে নির্দেশ করে। কিছু পরীক্ষা -নিরীক্ষার পর আমি 100 RGB LEDs (WS2812) এর দুটি সমান্তরাল স্ট্রিপ সহ প্রতিটি ডিজাইনের LED এর উপর একটি বৃত্তাকার মুখোশ এবং প্রতিটি নিয়ন্ত্রণ LED এর উপর একটি ত্রিভুজাকার মুখোশ দিয়ে একটি নকশায় বসলাম। আমি 10 জোড়া চেনাশোনা এবং ত্রিভুজ দিয়ে মুখোশের একটি 3D মডেল তৈরি করেছি, এবং তারপর 3D 100 টি বৃত্ত এবং 100 টি ত্রিভুজের জন্য এই মডিউলগুলির 10 টি মুদ্রিত করেছি। আমার মুখোশের আকার এবং ব্যবধান প্রতি মিটারে 100 টি এলইডি সহ স্ট্রিপের জন্য ডিজাইন করা হয়েছে। 3D মডেলের ফাইলগুলি পরে এই বিবরণে প্রদান করা হয়।
ইলেকট্রনিক্স এবং ঘের
বাকি যন্ত্রটি ইলেকট্রনিক্স দৃষ্টিকোণ থেকে সোজা। দুটি এলইডি স্ট্রিপ ছাড়াও, একগুচ্ছ ক্ষণস্থায়ী বোতাম, একটি ঘূর্ণমান এনকোডার (গতি নিয়ন্ত্রণের জন্য) এবং একটি 7-সেগমেন্ট ডিসপ্লে (পদক্ষেপগুলি দেখানোর জন্য) রয়েছে। অনেকগুলি বোতাম এবং নিয়ন্ত্রণের সাথে আমি একটি ESP32 মাইক্রোকন্ট্রোলার ব্যবহার করতে পছন্দ করেছি কারণ এটি অনেকগুলি পিন প্রকাশ করে এবং এটি মোটামুটি শক্তিশালী। আমি তারের কৌশল উপর যেতে হবে, কিন্তু এটি বেশ মৌলিক। আপনি যদি কম পিন ব্যবহার করতে চান তবে আপনি সম্ভবত শিফট রেজিস্টার দিয়ে কিছু স্মার্ট করতে পারেন।
আপনি এই ডিভাইসের জন্য বিভিন্ন আকারে ঘের তৈরি করতে পারেন। আমি প্রাথমিকভাবে এটিকে একটি বড় আয়তক্ষেত্রাকার বোর্ড হিসাবে কল্পনা করেছি যার উপরে এলইডি স্ট্রিপ এবং মাঝখানে বোতামের একটি গ্রিড রয়েছে। আমি যে রূপটি দিয়ে শেষ করেছি তা 1960-এর মহাকাশ-যুগের প্রযুক্তির দৃষ্টিভঙ্গি দ্বারা অনুপ্রাণিত। আপনি একটি উল্লম্ব দিকের মধ্যে LED স্ট্রিপ দিয়ে এটি তৈরি করতে পারেন। অথবা এলইডি অংশটিকে অনেক বড় করে তুলুন - একটি সম্পূর্ণ দেয়াল পূরণ করুন - একটি পৃথক নিয়ন্ত্রণ প্যানেল সহ।
সফটওয়্যার
এই ডিভাইসের কোডটি GitHub এ অবাধে পাওয়া যায় এবং এটি কিভাবে কাজ করে এবং কিভাবে এটি কনফিগার করা যায় তার নথিভুক্ত করার জন্য আমি যথাসাধ্য চেষ্টা করেছি। WS2812 স্ট্রিপগুলি চালানোর জন্য আপনার একমাত্র বাহ্যিক লাইব্রেরি হল FastLED।
সরবরাহ
ইলেকট্রনিক্স
1 ESP32 উন্নয়ন বোর্ড (যেমন, 2 WS2812 বা অনুরূপ LED স্ট্রিপ, ঘনত্ব 100 LEDs প্রতি মিটার (যেমন, 1 ত্রিভুজ "শুরু" বোতাম (যেমন, 12 ক্ষণস্থায়ী বোতাম (যেমন, https://amzn.com/B01N4D4750) - বিভিন্ন আকৃতি যদি আপনি চান
1 প্যাক (20) প্রি -ওয়াইড বাটন সংযোগকারী (যেমন, 1 প্যাক জেএসটি সংযোগকারী (যেমন, 1 রোটারি এনকোডার (যেমন, ঘূর্ণমান এনকোডারের জন্য 1 নব (যেমন, 1 প্যাক ডুপন্ট সংযোগকারী (যেমন, https://amzn.com/B014YTPFT8) - এটি ক্রাইমিং টুলও পাওয়ার যোগ্য।
1 ব্যারেল জ্যাক (ক্ষমতার জন্য) (যেমন, 1 টিএম 1637 7-সেগমেন্ট সংখ্যাসূচক প্রদর্শন (যেমন, সোল্ডারিং এবং তারের গিয়ার
3D মডেল ফাইল
আপনি থিংভার্সে 10-হালকা মডিউলের একটি জোড়া জন্য 3D মডেলটি খুঁজে পেতে পারেন:
www.thingiverse.com/thing:4178181
মোট 10 টি মডিউলের জন্য আপনাকে এই মডেলটি পাঁচবার প্রিন্ট করতে হবে।
সফটওয়্যার
github.com/samguyer/AlgorithmMachine
ঘের
কাঠ, প্লেক্সিগ্লাস, স্টেইনলেস স্টিলের বোল্ট এবং স্ক্রু
বিস্তার উপাদান। আমার প্রিয় লি ফিল্টার #216 পূর্ণ সাদা বিস্তার, কিন্তু অন্যান্য বিকল্প আছে। এমনকি সাধারণ সাদা কাগজও ভালো কাজ করে।
ধাপ 1: অ্যালগরিদম 101
অনেকেই মনে করেন যে কম্পিউটার বিজ্ঞান মূলত প্রোগ্রামিং এর অধ্যয়ন। কিন্তু এই ক্ষেত্রের প্রকৃত হৃদয় এবং আত্মা হল অ্যালগরিদম: সমস্যা সমাধানের পদ্ধতিগত পদ্ধতি এবং তাদের খরচ (সাধারণত, তারা কত সময় নেয়) এর অধ্যয়ন। অ্যালান টুরিং, অ্যালোনজো চার্চ এবং এডজার ডিজকস্ট্রার মতো ক্ষেত্রের প্রধান ব্যক্তিত্বরা কম্পিউটারের আগে এই ধারণাগুলি সম্পর্কে চিন্তা করছিলেন যেমন আমরা জানি যে তাদের অস্তিত্ব ছিল।
একটি বিশেষ সমস্যা সমাধানের জন্য একটি অ্যালগরিদমের মূল বৈশিষ্ট্য হল এটি বিস্তারিত এবং সুনির্দিষ্ট, যাতে কেউ এটি কিভাবে কাজ করে তা না বুঝে সমাধান পেতে এটি ব্যবহার করতে পারে; কেবল যান্ত্রিক পদ্ধতিতে ধাপগুলি অনুসরণ করুন এবং আপনি সঠিক উত্তর পাবেন। আপনি দেখতে পারেন কিভাবে এটি প্রোগ্রামিং কম্পিউটারে সাহায্য করে, যেহেতু তাদের এই স্তরের বিস্তারিত প্রয়োজন। একটি কম্পিউটার অনুপস্থিত বিবরণ পূরণ করতে পারে না বা বিচার করতে পারে না, যেভাবে একজন ব্যক্তি পারে।
এতে কতক্ষণ সময় লাগবে?
একবার আমাদের একটি বিস্তারিত পদ্ধতি থাকলে একটি স্বাভাবিক প্রশ্ন হল উত্তর পেতে কত সময় লাগবে? আমরা সময়ের সাধারণ একক ব্যবহার করতে পারি না, কারণ এটি নির্ভর করছে কে কাজটি করছে (তুলনা করুন একজন ব্যক্তি কত দ্রুত একটি কম্পিউটারের বিপরীতে একটি সুপার কম্পিউটারের সাথে তুলনা করতে পারে)। উপরন্তু, এটা নির্ভর করে আমাদের কতটা ডেটা আছে তার উপর। স্পষ্টতই, একশোটির তালিকার চেয়ে এক মিলিয়ন ফোন নম্বরের একটি তালিকা অনুসন্ধান করতে বেশি সময় লাগে।
একটি অ্যালগরিদমের খরচ বর্ণনা করার জন্য আমরা প্রথমে পদ্ধতিতে কিছু অপারেশন বাছাই করি যা একটি "ধাপ" - সাধারণত কিছু সহজ, যেমন দুটি সংখ্যা তুলনা বা যোগ করা, যা করতে নির্দিষ্ট সময় লাগে। তারপরে আমরা একটি সূত্র নিয়ে আসি যা বর্ণনা করে যে অ্যালগরিদম কতগুলি পদক্ষেপ নেবে কিছু সংখ্যক ডেটা আইটেম দেওয়া হবে। Historicalতিহাসিক কারণে, আমরা প্রায় সবসময় একটি মূলধন N সহ ডেটা আইটেমের সংখ্যা নির্দেশ করি।
উদাহরণস্বরূপ, N ফোন নম্বরের একটি তালিকা খুঁজতে N পদক্ষেপ নেয়। তালিকাটি দুবার দেখলে 2N ধাপ লাগে। এই দুটিকেই রৈখিক সময় অ্যালগরিদম বলা হয় - মোট ধাপের সংখ্যা হল ইনপুট আকারের কিছু একাধিক। অন্যান্য অ্যালগরিদম হল চতুর্ভুজ (N বর্গ সময়) বা ঘন (N cubed) অথবা লগারিদমিক (লগ N) অথবা এর কিছু সমন্বয়। সবচেয়ে কঠিন কম্পিউটেশনাল সমস্যার কিছু সূচকীয় সময় অ্যালগরিদম (2^N) প্রয়োজন।
ঠিক আছে, তাহলে কি?
যখন ডেটা আইটেমের সংখ্যা N ছোট হয় তখন এটি বেশি গুরুত্বপূর্ণ নয়। উদাহরণস্বরূপ, N = 10 এর জন্য, 10N হল সেই নামটি N স্কোয়ার্ড। কিন্তু N = 1000 সম্পর্কে কি? অথবা N = 1000000? একটি মিলিয়ন বর্গ একটি বেশ বড় সংখ্যা। এমনকি একটি খুব দ্রুত কম্পিউটারে, একটি চতুর্ভুজ অ্যালগরিদম দীর্ঘ সময় নিতে পারে যদি ইনপুট যথেষ্ট বড় হয়। সূচকীয় অ্যালগরিদম অনেক বেশি কষ্টকর: N = 50 এর জন্য একটি সূচকীয় অ্যালগরিদম এমন একটি কম্পিউটারেও শেষ করতে দুই সপ্তাহ সময় লাগবে যেখানে প্রতিটি ধাপ মাত্র একটি ন্যানোসেকেন্ড (এক সেকেন্ডের 1 বিলিয়ন)। ওহ!
স্কেলের অন্য প্রান্তে আমাদের লগারিদমিক টাইম অ্যালগরিদম আছে, যা খুব দ্রুত। লগ টাইম হল সূচকীয় সময়ের বিপরীত: প্রদত্ত ইনপুট সাইজ N, ধাপের সংখ্যা হল সূচক 2^T = N- এর সূচক T। পদক্ষেপ, যেহেতু 2^30 = 1, 000, 000, 000. এটা কত মিষ্টি?! ??!
আপনি হয়তো ভাবছেন, লক্ষ লক্ষ বা কোটি কোটি টাকার ইনপুট মাপ কে? এটি সম্পর্কে চিন্তা করুন: ফেসবুকে কতজন ব্যবহারকারী আছে? গুগল দ্বারা কয়টি ওয়েব পেজ ইনডেক্স করা হয়? মানুষের জিনোমে কয়টি বেস পেয়ার আছে? একটি আবহাওয়া অনুকরণে কত পরিমাপ যায়?
ধাপ 2: অ্যালগরিদম
অ্যালগরিদম মেশিন বর্তমানে নিম্নলিখিত অ্যালগরিদম প্রয়োগ করে। তাদের মধ্যে দুটি হল অনুসন্ধান অ্যালগরিদম (তালিকায় একটি নির্দিষ্ট মান খুঁজুন), বাকিগুলি অ্যালগরিদম বাছাই করছে (মানগুলি ক্রম অনুসারে রাখুন)।
রৈখিক অনুসন্ধান
শুরু থেকে শুরু করে একে একে মানগুলির তালিকার মাধ্যমে অনুসন্ধান করুন। রৈখিক সময় প্রয়োজন।
বাইনারি অনুসন্ধান
একটি তালিকা বারবার অর্ধেক ভাগ করে সার্চ করুন। লগ সময় প্রয়োজন, কিন্তু এটি কাজ করার জন্য তালিকা বাছাই করা আবশ্যক।
বাবল বাছাই
ক্রমবর্ধমান নয় এমন প্রতিবেশী উপাদানগুলি বারবার বিনিময় করে একটি তালিকা সাজান। চতুর্ভুজ সময় প্রয়োজন।
সন্নিবেশ বাছাই
ইতিমধ্যে সাজানো মানগুলির তালিকায় প্রতিটি উপাদানকে তার যথাযথ স্থানে রেখে একটি তালিকা সাজান। চতুর্ভুজ সময় প্রয়োজন।
কুইকসর্ট
তালিকাকে অর্ধেকের মধ্যে বারবার ভাগ করে এবং মধ্যমা থেকে কম সব মানকে প্রথমার্ধে এবং সমস্ত মানকে মধ্যমা থেকে দ্বিতীয়ার্ধে সরিয়ে একটি তালিকা সাজান। অনুশীলনে, আমরা দক্ষতার সাথে মধ্যমা খুঁজে পাই না, তাই আমরা এলোমেলোভাবে একটি মান বাছাই করি। ফলস্বরূপ এই অ্যালগরিদম সবচেয়ে খারাপ ক্ষেত্রে চতুর্ভুজ হতে পারে, তবে সাধারণত N * logN সময় প্রয়োজন।
সাজান মার্জ
একটি অর্ধেক ভাগ করে একটি তালিকা সাজান, দুটি অর্ধেককে আলাদাভাবে বাছাই করুন (মার্জ সার্ট ব্যবহার করে), এবং তারপর মানগুলিকে একত্রিত করে একত্রিত করুন। সর্বদা N * logN সময় প্রয়োজন।
গাদা বাছাই
একটি হিপ নামে একটি ডেটা স্ট্রাকচার তৈরি করে একটি তালিকা সাজান, যা আপনাকে লগ টাইমে সবচেয়ে ছোট মান খুঁজে পেতে দেয়। সর্বদা N * logN সময় প্রয়োজন।
বিটনিক বাছাই
সাজানোর এবং quicksort একত্রীকরণের অনুরূপ, একটি তালিকা অর্ধেক ভাগ, অর্ধেক বাছাই, এবং তাদের পুনরায় সংমিশ্রণ। এই অ্যালগরিদম N * logN * logN সময় প্রয়োজন, কিন্তু সুবিধা আছে যে এটি সমান্তরাল করা সহজ।
ধাপ 3: LED বার: 3D মাস্ক প্রিন্ট করুন
এলইডি বার তৈরির প্রথম ধাপ হল মাস্কটি 3D প্রিন্ট করা যা লাইটগুলিকে তাদের আকৃতি দেয়। প্রতিটি মডিউল অ্যারের দশটি উপাদান, 10 টি মান (বৃত্ত) এবং 10 টি সূচক (ত্রিভুজ) জুড়ে দেয়, তাই আপনার মোট 10 টি মডিউল লাগবে। আমি এখানে যে STL ফাইলটি প্রদান করছি তা মডিউলের দুটি দৃষ্টান্ত রয়েছে, তাই আপনাকে পাঁচটি মুদ্রণ চক্র করতে হবে। আমার কাছে সেরা 3 ডি প্রিন্টার নেই, তাই আমাকে একটি ফাইল এবং স্যান্ডপেপার ব্যবহার করে তাদের কিছু ম্যানুয়াল ক্লিনআপ করতে হয়েছিল। সবচেয়ে গুরুত্বপূর্ণ বিষয় হল বৃত্তাকার এবং ত্রিভুজাকার গর্ত পরিষ্কার।
ফটোগুলিতে আপনি আমার পরীক্ষা সেটআপ দেখতে পাবেন: আমি দুটি LED স্ট্রিপ নিচে টেপ করেছি এবং একটি মাইক্রোকন্ট্রোলার দিয়ে একটি ব্রেডবোর্ডের সাথে সংযুক্ত করেছি। এই ধাপটি আবশ্যক নয়, কিন্তু আমি ঘেরটি একত্রিত করার আগে এটি দেখতে কেমন হবে তা দেখতে চেয়েছিলাম। আমি দুটি এলইডি স্ট্রিপে মাস্ক মডিউলগুলিকে সারিবদ্ধ করেছি এবং এলোমেলো রঙের সাথে একটি সহজ স্কেচ চালিয়েছি। বিস্তার উপাদান একটি ফালা সঙ্গে আকার এবং রং সত্যিই পপ।
ধাপ 4: LED বার বিকল্প
যখন আমি প্রথম এই প্রকল্পটি শুরু করি তখন আমি LED মাস্ক তৈরির অন্যান্য উপায় নিয়ে পরীক্ষা -নিরীক্ষা করি। যদি আপনার কাছে 3 ডি প্রিন্টার না থাকে তবে আপনি এই বিকল্পগুলির মধ্যে একটি বিবেচনা করতে পারেন। আমি সৎ হব: এই অংশগুলি তৈরি করা একটি বিশাল যন্ত্রণা।
চেনাশোনাগুলির জন্য, আমি একটি 13/32 ব্রাসের নল কিনেছি, যা প্রায় 1cm ব্যাস। আমি এটি একশো 1 সেন্টিমিটার অংশে কাটলাম এবং তারপরে সাদা রঙে স্প্রে করলাম।
ত্রিভুজগুলির জন্য, আমি একটি ডিসপোজেবল বেকিং প্যান থেকে কাটা ভারী ওজনের অ্যালুমিনিয়াম ফয়েল ব্যবহার করেছি। আমি কাঠ থেকে একটি ত্রিভুজাকার ফর্ম তৈরি করেছি, তারপর ফর্মের চারপাশে ফয়েলের সংক্ষিপ্ত স্ট্রিপগুলি মোড়ানো এবং তাদের টেপ করা। আবার, আপনি এই জিনিস এক শত প্রয়োজন হবে, তাই এটি কিছু সময় এবং ধৈর্য লাগে।
ধাপ 5: LED বার ঘের
আমার ঘেরটি মোটামুটি সহজ: পাশের জন্য কাঠের দুটি স্ট্রিপ এবং উপরের এবং নীচের জন্য প্লেক্সিগ্লাসের দুটি স্ট্রিপ। সমস্ত অংশ প্রায় 102 সেমি লম্বা (এলইডিগুলির জন্য 1 মিটার, তারের সাথে সামঞ্জস্য করার জন্য একটু অতিরিক্ত)। এলইডি স্ট্রিপগুলির জন্য জায়গা তৈরি করতে পার্শ্বগুলি 1 সেন্টিমিটারের চেয়ে কিছুটা লম্বা হওয়া উচিত। স্ট্রিপগুলি কাটার পরে আমি প্লেক্সিগ্লাসের প্রস্থ পরিমাপ করার জন্য তাদের মধ্যে 3D মুদ্রিত মুখোশের টুকরোগুলি স্যান্ডউইচ করেছি। বারটির প্রস্থ এবং দৈর্ঘ্য প্লেক্সিগ্লাসের দুটি টুকরো কাটুন। অবশেষে, মাস্কের উপর ফিট করার জন্য ডিফিউশন উপাদানের একটি স্ট্রিপ কাটুন।
বিস্তারের জন্য আমি সত্যিই লি ফিল্টার #216 (সম্পূর্ণ সাদা বিস্তার) পছন্দ করি। এটি একটি পাতলা প্লাস্টিকের চাদর যা অনেক আলো না হারিয়েও ছড়িয়ে দেয়। কিন্তু এটা দামি জিনিস। কখনও কখনও আপনি অনলাইনে বিক্রির জন্য ছোট চাদর খুঁজে পেতে পারেন, কিন্তু একটি সম্পূর্ণ রোল আপনাকে প্রায় $ 125 ফিরিয়ে দেবে। অন্য কিছু বিকল্প হল সাদা কাগজ বা অন্য কোন ধরনের সাটিন বা ফ্রস্টেড প্লাস্টিক। একটি জনপ্রিয় পছন্দ হল পাতলা প্লাস্টিকের কাটিং ম্যাট।
আপনি LED বার একত্রিত করার আগে নিশ্চিত করুন যে আপনার কাছে LED স্ট্রিপগুলিতে যথাযথ সংযোগকারী রয়েছে। অনেকগুলি স্ট্রিপ লিড প্রি-সোল্ডারের সাথে আসে, তাই আপনি সেগুলি ব্যবহার করতে পারেন।
আমি কাঠের পাশে প্লেক্সিগ্লাসের উপরের টুকরোটি স্ক্রু করে সমাবেশ শুরু করেছি (ছবি দেখুন)। তারপরে আমি এটিকে উল্টে দিলাম এবং বিস্তার স্ট্রিপটি স্থাপন করলাম, তারপরে 10 টি মুখোশের টুকরা। একবার আমি স্পেসিংয়ের সাথে খুশি হয়েছিলাম আমি কয়েকটা বিন্দু গরম আঠা দিয়ে তাদের জায়গায় পিন করেছিলাম।
এরপরে, মুখোশের উপরে দুটি এলইডি স্ট্রিপ পাশাপাশি রাখুন। নিশ্চিত করুন যে LEDs মুখোমুখি এবং নিশ্চিত করুন যে প্রতিটি LED লাইন মাস্কের সংশ্লিষ্ট গর্তের সাথে আছে। এলইডি স্ট্রিপগুলি ধরে রাখার জন্য কিছু গরম আঠালো বা টেপ যুক্ত করুন। অবশেষে, প্লেক্সিগ্লাসের পিছনের অংশে স্ক্রু করুন।
একটি পরীক্ষা প্যাটার্ন চালান। সুন্দর চাকরি! আপনি সবচেয়ে কঠিন অংশটি সম্পন্ন করেছেন!
ধাপ 6: কন্ট্রোল প্যানেল
কন্ট্রোল প্যানেল হল সেই অংশ যা সবচেয়ে সৃজনশীল স্বাধীনতা প্রদান করে। এটি কেবল LED বারের সাথে সমস্ত নিয়ন্ত্রণ এবং ইলেকট্রনিক্স রাখা প্রয়োজন। সবচেয়ে সহজ নকশা একটি আয়তক্ষেত্রাকার বোর্ড: বোতাম এবং নিয়ন্ত্রণের জন্য ড্রিল গর্ত, এবং LED বার সংযুক্ত করুন। আমি কাঠ, প্লেক্সিগ্লাস এবং অন্যান্য উপকরণগুলিকে একত্রিত করে স্টিম্পঙ্ক / রেট্রো-আধুনিক চেহারা দিতে পছন্দ করি। এই ক্ষেত্রে, আমি প্রধান অ্যালগরিদম পছন্দ বোতামগুলি ধরে রাখার জন্য ভারী দায়িত্বের প্লেক্সিগ্লাসের একটি টুকরো কাটলাম, এবং বাকী ইলেকট্রনিক্স রাখার জন্য একটি কাঠের বার। আমি তোরণ বোতামের আকারের সাথে মিল করার জন্য গর্ত ড্রিল করেছি। তারের পিছনে দেখায়, কিন্তু আমি এটা পছন্দ করি!
আমি 7-সেগমেন্ট ডিসপ্লে, রোটারি এনকোডার এবং পিছনে কিছু তারের জন্য স্থানও ড্রিল করেছি। আমি LED বারটি ধরে রাখার জন্য উপরে একটি ড্যাডো কাটলাম।
ধাপ 7: বোতাম জোতা
অনেক বোতাম তারের একটি বাস্তব ব্যথা হতে পারে। ভাগ্যক্রমে, যারা আর্কেড মেশিন তৈরি করে তারা কিছু স্ট্যান্ডার্ড সংযোগকারী নিয়ে এসেছে যা আপনি ব্যবহার করতে পারেন। প্রতিটি বোতাম সংযোগকারী তারের দুটি তার আছে, একটি ভিসিসির জন্য এবং একটি মাটির জন্য। এক প্রান্তে কোদাল সংযোজক রয়েছে যা বোতামের পিছনে সীসাগুলি মাপসই করে - "স্বাভাবিকভাবে খোলা" সীসা এবং "সাধারণ" সীসার সাথে ভিসিসি সংযুক্ত করুন। এই কনফিগারেশনে, যখন ব্যবহারকারী বোতাম টিপবে, সার্কিট সম্পন্ন হবে এবং মাইক্রোকন্ট্রোলার সংশ্লিষ্ট ইনপুট পিনে উচ্চ পড়বে।
তারের অন্য প্রান্তে একটি জেএসটি সংযোগকারী (ছোট সাদা জিনিস) রয়েছে। এই সংযোগকারীদের সম্পর্কে ভাল কি হল যে তারা শুধুমাত্র একটি উপায়ে গ্রহণের মধ্যে যায়, তাই দুর্ঘটনাক্রমে VCC এবং স্থলকে বিপরীত করার কোন উপায় নেই।
আমি যা করেছি তা হল এই সংযোগকারীদের জন্য একটু জোতা তৈরি করা। আমি প্রোটোবোর্ডের একটি টুকরোতে জেএসটি রিসেপটেকলের একটি সিরিজ সোল্ডার করি এবং তারপরে ডুপন্ট সংযোগকারীর কাছে তারগুলি চালাই যা আমি মাইক্রোকন্ট্রোলারে প্লাগ করব। লাল তারটি হল ভিসিসি লাইন, এবং এটি সমস্ত জেএসটি রিসেপটেকলের সাথে সংযোগ স্থাপন করে। নীল তারগুলি হল প্রতিটি বোতামের জন্য আলাদা।
ধাপ 8: রোটারি এনকোডার
ঘূর্ণমান এনকোডার ব্যবহারকারীকে অ্যালগরিদমের গতি নিয়ন্ত্রণ করতে দেয়। আমি একটি মডিউল ব্যবহার করি যা একটি ব্রেকআউট বোর্ড হিসাবে আসে যাতে দুটি ডেটা লাইনের (হলুদ তারের) জন্য পুল-আপ প্রতিরোধক অন্তর্ভুক্ত থাকে। এটি একটি বোতাম হিসাবেও ঘটে, কিন্তু আমি সেই বৈশিষ্ট্যটি ব্যবহার করছি না। অন্য দুটি তারের হল VCC এবং স্থল। আমি একটি সুন্দর মোটা গাঁটও পেয়েছি।
একটি পোটেন্টিওমিটারের বিপরীতে আমি একটি ঘূর্ণমান এনকোডার সম্পর্কে যা পছন্দ করি তা হ'ল এটি কেবল মাইক্রোকন্ট্রোলারে ঘূর্ণন (ঘড়ির কাঁটার বিপরীতে ঘড়ির কাঁটার দিকে) সংকেত দেয়, তাই মানটি কীভাবে ব্যাখ্যা করা যায় তা পরিবর্তন করা সহজ। উদাহরণস্বরূপ, ব্যবহারকারী যখন এটি দ্রুত ঘুরছে তখন আপনি এটিকে ত্বরণের অনুভূতি দিতে পারেন (মাউসের মতো)।
ধাপ 9: 7-সেগমেন্ট প্রদর্শন
এখানে অনেক কিছু বলার নেই। এই জিনিসগুলি সর্বত্র রয়েছে। LEDs টিএম 1637 নামে একটি চিপ দ্বারা নিয়ন্ত্রিত হয়, যা একটি সাধারণ সিরিয়াল প্রোটোকলের মাধ্যমে মাইক্রোকন্ট্রোলারের সাথে যোগাযোগ করে। আমি একটি বিদ্যমান লাইব্রেরি ব্যবহার করি যা আমাকে এটা বলতে দেয় যে আমি কোন নম্বরটি দেখাতে চাই এবং এটি বাকি কাজ করে।
পিছনে চারটি পিন রয়েছে: সিরিয়াল প্রোটোকলের জন্য ভিসিসি, গ্রাউন্ড এবং দুটি তার। আমি হেডারের একটি 4-পিন টুকরা বিক্রি করেছি, যা মাইক্রোকন্ট্রোলারের সাথে সংশ্লিষ্ট ডুপন্ট সংযোগকারীকে সংযুক্ত করে।
ধাপ 10: প্রধান নিয়ন্ত্রক বোর্ড
প্রধান নিয়ামক বোর্ডটিতে মাইক্রোকন্ট্রোলার নিজেই এবং সমস্ত সংযোগকারীকে নিয়ন্ত্রণের (বোতাম, ডিসপ্লে, এলইডি) থাকে। মাইক্রোকন্ট্রোলার হল একটি ESP32, যা অনেক কম্পিউটিং শক্তি এবং মেমরি প্রদান করে এবং প্রচুর পিন প্রকাশ করে। তারের বেশ মান, কিন্তু আমি কিছু আকর্ষণীয় বিট নির্দেশ করব।
দ্রষ্টব্য: আপনি মূল বোর্ডের ওয়্যারিং শুরু করার আগে কোডটি দেখতে পারেন (https://github.com/samguyer/AlgorithmMachine), যাতে আপনার পিন কনফিগারেশন আমার সাথে মেলে।
আমি বিদ্যুতের জন্য বোর্ডে একটি ব্যারেল জ্যাক সোল্ডার করেছি, এবং বোর্ডের পাওয়ার এবং গ্রাউন্ড রেলগুলিতে দুটি গরুর মাংসের তামার তার সংযুক্ত করেছি। কারণ হল যে LED বারটি অনেক বেশি শক্তি টানতে পারে যদি উজ্জ্বলতা বেশি থাকে, এবং আমি মাইক্রোকন্ট্রোলারে USB সংযোগকারীর মাধ্যমে সেই সমস্ত শক্তি টানতে চাই না।
বোতাম তারের সরলীকরণ করার জন্য আমি মাইক্রোকন্ট্রোলারের পুরো পাশের নিচে (দেখানো হিসাবে বোর্ডের উপরের দিকে) পুরুষ-থেকে-মহিলা ডান কোণ হেডারের একটি ফালা বিক্রি করেছি। বোতাম জোতা থেকে ডুপন্ট সংযোগকারী সরাসরি এই হেডারে প্লাগ করে।
গুরুত্বপূর্ণ: বোতামগুলির জন্য শক্তি (লাল তারের) মাইক্রোকন্ট্রোলারে 3.3V পাওয়ার লাইনের সাথে সংযুক্ত থাকতে হবে। ESP32 একটি 3.3V চিপ, তাই শুধুমাত্র 3.3V উৎস কখনোই ডেটা পিনের সাথে সংযুক্ত করা উচিত।
মাইক্রোকন্ট্রোলার 5V ইউএসবি পিন এবং গ্রাউন্ডের মাধ্যমে রেলগুলিতে (বোর্ডের নিচের দিকে) পাওয়ার টেনে আনে (বা শক্তি ঠেলে দেয়)। অন্যান্য লাল/কালো তারের সবই VCC এবং স্থল।
দুটি নীল তারগুলি হল LED স্ট্রিপগুলির জন্য ডেটা লাইন (WS2812s)।হলুদ/সবুজ জোড়া ঘূর্ণমান এনকোডারের ডেটা লাইন এবং হলুদ জোড়া 7-সেগমেন্ট ডিসপ্লের সিরিয়াল সংযোগ।
ধাপ 11: সমাবেশ
ফটোগ্রাফের এই সিরিজ চূড়ান্ত সমাবেশ এবং তারের দেখায়। আমি উপরে প্রধান কন্ট্রোলার বোর্ড সংযুক্ত করেছি।
এটিকে শক্তিশালী করার আগে আমি কোনও চেক বিস্ময় এড়াতে কিছু চেক করেছি। বিশেষ করে, আমার পিছনে কোন পাওয়ার/গ্রাউন্ড সংযোগকারী নেই এবং কোন শর্ট সার্কিট নেই তা নিশ্চিত করার জন্য। ধারাবাহিকতা পরীক্ষা করার জন্য আপনার মাল্টিমিটার সেট করুন - যখন দুটি লিডের মধ্যে বৈদ্যুতিক পথ থাকবে তখন এটি বীপ হবে। বোতামগুলিতে সাধারণ VCC লাইনের একটি সীসা সংযুক্ত করুন। তারপর একেকটি জোড়ার প্রতিটি পিনের সাথে অন্য সীসা সংযুক্ত করুন। মাল্টিমিটারটি কেবল তখনই বাজতে হবে যখন আপনি বোতাম টিপবেন। আপনি যদি অন্য কোন বীপ পান তবে এর অর্থ হল আপনার একটি বিপরীত বা শর্ট আছে। এটি চালু করুন এবং আপনি পাওয়ার চালু করার আগে এটি ঠিক করুন!
ধাপ 12: কোড
প্রথমে, আপনার Arduino IDE খুলুন এবং নিশ্চিত করুন যে আপনার FastLED লাইব্রেরি ইনস্টল আছে।
GitHub থেকে অ্যালগরিদম মেশিন কোড ডাউনলোড করুন:
github.com/samguyer/AlgorithmMachine.git
আপনি এটি সরাসরি আপনার Arduino ফোল্ডারে ক্লোন করতে পারেন, অথবা হাতে কপি করতে পারেন।
এটি আপলোড করার আগে, নিশ্চিত করুন যে পিন সেটিংস আপনার হার্ডওয়্যার কনফিগারেশনের সাথে মেলে। আমি সমস্ত পিন সেটিংস ফাইলের শীর্ষে রেখেছি।
আপলোড করুন এবং উপভোগ করুন!
ধাপ 13: কিভাবে ব্যবহার করবেন
অ্যালগরিদম মেশিনটি ব্যবহার করা সহজ এবং প্রায় যেকোনো বোতামের সমন্বয় ঠিক আছে!
প্রথমে, অ্যারের মানগুলি শুরু করতে ডেটা বোতামগুলি ব্যবহার করুন। তিনটি পছন্দ আছে: (1) এলোমেলো করা, (2) একটি এলোমেলো মান যোগ করা, এবং (3) অ্যারে বিপরীত। মনে রাখবেন যে মানগুলি স্থায়ী, তাই আপনি প্রথমে তাদের বাছাই করার মতো কাজ করতে পারেন, তারপর কিছু গোলমাল যোগ করুন, তারপর একটি ভিন্ন বাছাই বা অ্যালগরিদম অনুসন্ধান করুন।
অন্যান্য বোতামের পছন্দগুলি থেকে একটি অনুসন্ধান বা বাছাই অ্যালগরিদম চয়ন করুন। বর্তমানে, এই পছন্দ করার সময় কোন প্রতিক্রিয়া নেই (ভবিষ্যতের কাজের জন্য কিছু)। তারপরে "প্লে" বোতামটি টিপুন।
গাঁট গতি নিয়ন্ত্রণ করে। আপনি অ্যালগরিদম বিরতি এবং বিরতিতে "প্লে" আঘাত করতে পারেন।
এটি হয়ে গেলে এটি স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে। আপনি যে কোনো সময় অন্য অ্যালগরিদম বোতামটিও আঘাত করতে পারেন। মেশিনটি বর্তমান অ্যালগরিদম বন্ধ করবে এবং নতুনটিকে আরম্ভ করবে, কিন্তু আগের অ্যালগরিদম যেভাবে রেখেছিল ঠিক সেভাবেই ডেটা রাখবে।
STEM প্রতিযোগিতায় গ্র্যান্ড প্রাইজ
প্রস্তাবিত:
সেলফ ব্যালেন্সিং রোবট - পিআইডি কন্ট্রোল অ্যালগরিদম: 3 ধাপ
সেলফ ব্যালেন্সিং রোবট - পিআইডি কন্ট্রোল অ্যালগরিদম: এই প্রকল্পটি কল্পনা করা হয়েছিল কারণ আমি কন্ট্রোল অ্যালগরিদম এবং কিভাবে কার্যকরী পিআইডি লুপগুলি কার্যকরভাবে প্রয়োগ করতে হয় সে সম্পর্কে আরও জানতে আগ্রহী ছিলাম। একটি ব্লুটুথ মডিউল এখনও যোগ করা হয়নি বলে প্রকল্পটি এখনও উন্নয়নের পর্যায়ে রয়েছে যা
VHDL ব্যবহার করে কর্ডিক অ্যালগরিদম: 4 টি ধাপ
VHDL ব্যবহার করে কর্ডিক অ্যালগরিদম: ## সাইন এবং কোসাইন তরঙ্গ উৎপন্ন করার জন্য CORDIC অ্যালগরিদমের VHDL বাস্তবায়নের জন্য এটি গুগলের সর্বাধিক ক্লিক করা, জনপ্রিয় লিঙ্ক ## বর্তমানে, অনেক হার্ডওয়্যার দক্ষ অ্যালগরিদম বিদ্যমান, কিন্তু এগুলির কারণে এটি ভালভাবে পরিচিত নয় সফটওয়ারের আধিপত্য
কিভাবে ইভিএম মেশিন তৈরি করবেন ইলেকট্রনিক ভোটিং মেশিন (ইভিএম) কিভাবে তৈরি হয়: 3 টি ধাপ
কিভাবে ইভিএম মেশিন তৈরি করবেন ইলেকট্রনিক ভোটিং মেশিন (ইভিএম) কিভাবে তৈরি করা হয়: এটি কলেজ প্রকল্পের উদ্দেশ্যে ইভিএম মেশিনের প্রোটোটাইপ মোডাল। আপনি এই প্রকল্পটিকে প্রকল্প উপস্থাপনা, প্রকল্প প্রদর্শনী, মোডাল প্রেজেন্টেশন ইত্যাদি হিসাবে ব্যবহার করতে পারেন, এই প্রকল্পটি আপনাকে দ্রুত ওভারভিউ দেবে যে কিভাবে একটি ইভিএম মেশিন কাজ করে, এই প্রকল্প
HX1 -DM - আপসাইকেলড Arduino DUE চালিত DIY ড্রাম মেশিন (একটি মৃত মেশিন MK2 দিয়ে তৈরি): 4 টি ধাপ
HX1 -DM - আপসাইকেলড Arduino DUE চালিত DIY ড্রাম মেশিন (একটি মৃত মেশিন MK2 দিয়ে তৈরি): স্পেসিফিকেশন। হাইব্রিড মিডি কন্ট্রোলার / ড্রাম মেশিন: Arduino DUE চালিত! 16 ভেলোসিটি সেন্সিং প্যাড খুব কম লেটেন্সি 1 > ms 8 knobs ব্যবহারকারীকে যেকোনো Midi #CC কমান্ডের জন্য নির্ধারিত 16ch বিল্ট-ইন সিকোয়েন্সার (কম্পিউটারের প্রয়োজন নেই !!) MIDI in/out/thru functio
PID অ্যালগরিদম (STM32F4) ব্যবহার করে ডিসি মোটরের গতি নিয়ন্ত্রণ: 8 টি ধাপ (ছবি সহ)
PID অ্যালগরিদম (STM32F4) ব্যবহার করে ডিসি মোটরের গতি নিয়ন্ত্রণ: সবাইকে হ্যালো, এটি অন্য একটি প্রকল্পের সাথে তাহির উল হক। এবার এটি MC হিসাবে STM32F407। এটি মধ্য সেমিস্টার প্রকল্পের সমাপ্তি। আশা করি আপনাদের ভালো লেগেছে। এর জন্য অনেক ধারণা এবং তত্ত্বের প্রয়োজন তাই আমরা প্রথমে এর মধ্যে যাই। কম্পিউটারের আবির্ভাবের সাথে এবং