সুচিপত্র:

ওসু! কীবোর্ড: 8 টি ধাপ (ছবি সহ)
ওসু! কীবোর্ড: 8 টি ধাপ (ছবি সহ)

ভিডিও: ওসু! কীবোর্ড: 8 টি ধাপ (ছবি সহ)

ভিডিও: ওসু! কীবোর্ড: 8 টি ধাপ (ছবি সহ)
ভিডিও: পাশা খেলিব আজ প্ররানো ভরিয়া,,,শিল্পী বাউল ইসমাইল,,, গানের কথা ওসুর বাউল ইসমাইল 2024, জুলাই
Anonim
ওসু! কীবোর্ড
ওসু! কীবোর্ড

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

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

দ্রষ্টব্য 1: এসএমডি উপাদানগুলি (ছোট ইলেকট্রনিক্স) ব্যবহার করা হয় তাই যদি আপনি এই প্রকল্পের প্রতিলিপি করেন সোল্ডারিং দক্ষতা প্রয়োজন। সম্ভবত একটি সহজ ঝাল সংস্করণ যোগ করা হবে কিন্তু এই leds ট্রাফ হোল প্যাকেজে আসে না

নোট 2: আমি কোডটি একাধিকবার আপডেট করেছি এবং এখন 3ish সংস্করণে আছি। আমি সমস্ত কোড অনলাইনে ছেড়ে দেব কিন্তু আমি আপনাকে শেষ সংস্করণটি ব্যবহার করার পরামর্শ দিচ্ছি। এটিতে বর্তমানে নেতৃত্বের কার্যকারিতা নেই তবে এটি সর্বোত্তম পারফরম্যান্স হওয়া উচিত।

ধাপ 1: উপকরণ এবং ব্যাখ্যা

উপকরণ এবং ব্যাখ্যা
উপকরণ এবং ব্যাখ্যা

আপনি কিভাবে আপনার প্রকল্পটি তৈরি করেন তার উপর নির্ভর করে আপনার বিভিন্ন উপাদানের প্রয়োজন হতে পারে, তবে এই উপাদানগুলি আমি ব্যবহার করেছি। আপনার যদি সময় থাকে এবং টাকা সংরক্ষণ করতে চান, তাহলে aliexpress ফর্ম অর্ডার করুন এবং PCB কে অর্ডার করবেন না।

1 Arduino প্রো মাইক্রো + ইউএসবি কেবল

3 Kailh BOX লাল সুইচ

3 10k প্রতিরোধক (0805 SMD)

3 100nF ক্যাপাসিটর (0805 SMD)

4 APA102 rgb LED (5050 SMD)

3 কীক্যাপ

1 প্রিন্টেড সার্কিট বোর্ড (PCB) এই প্রকল্পে প্রদান করা হয়েছে

এই প্রকল্পে 1 টি 3D মুদ্রিত কেস সরবরাহ করা হয়েছে

আমি কেন একটি Arduino প্রো মাইক্রো ব্যবহার করব?

Uno (Atmega328) এর মতো বেশিরভাগ arduino বোর্ডের USB যোগাযোগের জন্য স্থানীয় সমর্থন নেই। হ্যাঁ আপনি ইউএসবি দিয়ে খুব সহজেই তাদের প্রোগ্রাম করতে পারেন এবং আমি মনে করি এর সমাধান আছে, কিন্তু ইউএসবি যোগাযোগের ক্ষেত্রে আমি এটাকে সহজ রাখতে পছন্দ করি এবং আমি জানি না যে কার্যকারিতাগুলি প্রতিক্রিয়াশীল কিনা। ইউএসবি যোগাযোগ সম্ভব করার জন্য সেই বোর্ডগুলি একটি বহিরাগত চিপ ব্যবহার করে যেখানে আরডুইনো প্রো মাইক্রো (Atmega32U4) এটি অন্তর্নির্মিত।

সুইচগুলি

অনেক যান্ত্রিক সুইচ আছে যা আপনি ব্যবহার করতে পারেন। কাইল বা চেরি এমএক্স থেকে লিনিয়ার, স্পর্শকাতর বা ক্লিক। আপনি যা পছন্দ করেন তা চয়ন করুন। আমি কাইল সুইচ ব্যবহার করেছি কারণ সেগুলি Ailexpress এ সস্তা ছিল। আপনি যদি PCB ব্যবহার করতে চান তাহলে আপনার Kailh BOX সুইচ লাগবে। রঙ অনুভূতি নির্ধারণ করে।

ইলেকট্রনিক উপাদান

এই অধ্যায়ে তাদের সম্পর্কে ব্যাখ্যা করার জন্য খুব বেশি কিছু নেই, কিন্তু যদি আপনি PCB ব্যবহার না করেন তবে আমি সোল্ডারিং সহজতার জন্য সাধারণ গর্তের গর্তের উপাদানগুলি সুপারিশ করব। দুর্ভাগ্যবশত ব্যবহৃত এলইডি ট্রাফ হোল প্যাকেজে পাওয়া যায় না। আমি এসএমডি প্যাকেজে তার ব্যবহার করার সুপারিশ করব না যদি না আপনি আপনার সোল্ডারিং দক্ষতায় খুব আত্মবিশ্বাসী হন। এমনকি একটি পিসিবিতে SMD- র জন্য "উন্নত" সোল্ডারিং দক্ষতা সমান।

আবাসিক এলাকা

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

ধাপ 2: পরিকল্পিত

পরিকল্পিত
পরিকল্পিত

এই প্রকল্পের জন্য পরিকল্পিত বরং সহজ, কিন্তু আমি আগ্রহী এবং যারা এই বাস্তবায়ন জানেন না তাদের জন্য উপাদান ব্যাখ্যা করতে চাই।

আরডুইনোতে সংযোগ পরিবর্তন করুন

সুইচগুলি Arduino পিন 0, 2 এবং 3 এর সাথে সংযুক্ত কারণ এই পিনগুলি বাহ্যিক বাধা হিসাবে ব্যবহার করা যেতে পারে। এটি কোড বিভাগে আরও ব্যাখ্যা করা হয়েছে।

ডিবাউন্স সার্কিট

স্কিম্যাটিক এর বাম দিকে একটি সার্কিট আছে যা 3 বার কপি করা হয়। এই সার্কিটটি সুইচ ডিবাউন্স করতে ব্যবহৃত হয়। ডিবাউন্সিং কী তা জানতে আপনাকে সুইচ বাউন্সিং বুঝতে হবে এবং এটি বোঝা কঠিন নয়।

প্রথম ছবি আঁকার জন্য প্রথমে এই সিমুলেশনটি দেখুন (দ্রুত সুইচটি ক্লিক করুন এবং নীচের সংকেত দেখুন)

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

এই ডিবাউন্স সার্কিট সিগন্যালের পড়ন্ত প্রান্তকে ধীর করে দেবে। আরডুইনোতে সিগন্যাল যত দ্রুত বাউন্সিং হবে ততটা পরিবর্তন করতে পারবে না তাই এটি একটি প্রেসের মতো পড়বে। এটি পরবর্তী বাস্তব প্রেসের জন্য ধীর হয়ে পড়ার বিষয়ে চিন্তা করবেন না কারণ এটি হবে।

উন্নত:

Atmaga32U4 একটি ডিজিটাল কম পড়ে 0.2Vcc - 0.1V = 0.9 ভোল্টে। ক্যাপাসিটরের স্রাবের যে কোন সময় ভোল্টেজ হল Vcc * e^(-t/RC)। আপনি যদি আপনার সুইচে একটি ভিন্ন ডিবাউন্স সময় পরিমাপ করেন তবে আপনি আপনার প্রতিরোধক এবং ক্যাপাসিটরের মান গণনা করতে পারেন।

সূত্র ফর্ম

LEDs

আরজিবি LEDs হল APA102 এলইডি যা একটি ঘড়ি এবং ডেটা লাইন ব্যবহার করে পৃথকভাবে ঠিকানাযোগ্য। তাদের কাজ করার জন্য কোন বাহ্যিক উপাদান প্রয়োজন হয় না। অনেক এলইডির জন্য আপনার 5 ভোল্ট এবং গ্রাউন্ডের সমান্তরাল একটি ক্যাপাসিটর ব্যবহার করা উচিত কিন্তু মাত্র 4 টি এলইডি দিয়ে আপনার এটির প্রয়োজন নেই।

ধাপ 3: বোর্ড ডিজাইন

বোর্ড ডিজাইন
বোর্ড ডিজাইন

পিসিবি JLCPCB তে ডিজাইন করা হয়েছিল। আমি তাদের দ্বারা স্পন্সর নই কিন্তু সস্তা প্রোটোটাইপের জন্য তারা চমৎকার PCB তৈরি করে। 2 ডলারের জন্য আপনি একই বোর্ডের 10 টি পান, কিন্তু আমার জন্য শিপিং ছিল প্রায় 11 ডলার। যদি আপনি অনিচ্ছাকৃতভাবে আরজিবি আলো চান না এবং কেবল একটি তৈরির পরিকল্পনা করেন তবে আপনার পিসিবি ছাড়াই আপনার কীবোর্ড তৈরির বিষয়টি বিবেচনা করা উচিত।

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

পিসিবি অর্ডার করতে https://jlcpcb.com/ এ যান এবং 2 স্তরযুক্ত বিকল্পটি চয়ন করুন। এটি আপনাকে একটি গারবার ফাইল চাইবে। ".zip" ফাইলটি ডাউনলোড করুন এবং উইন্ডোতে টেনে আনুন। আপনাকে এটি আনজিপ করার দরকার নেই। সেটিংস ঠিক থাকা উচিত এবং আপনি এগিয়ে গিয়ে অর্ডারটি সম্পূর্ণ করতে পারেন।

ধাপ 4: কেস ডিজাইন এবং অ্যাসেম্বলি টিপস

কেস ডিজাইন এবং অ্যাসেম্বলি টিপস
কেস ডিজাইন এবং অ্যাসেম্বলি টিপস
কেস ডিজাইন এবং অ্যাসেম্বলি টিপস
কেস ডিজাইন এবং অ্যাসেম্বলি টিপস
কেস ডিজাইন এবং অ্যাসেম্বলি টিপস
কেস ডিজাইন এবং অ্যাসেম্বলি টিপস
কেস ডিজাইন এবং অ্যাসেম্বলি টিপস
কেস ডিজাইন এবং অ্যাসেম্বলি টিপস

নকশা

আগে মেনশন হিসাবে, আমার নকশা ত্রুটিপূর্ণ কিন্তু আপনি যদি চান তবে এটি মুদ্রণ করতে পারেন। নকশাটি ফিউশন in০ এ তৈরি করা হয়েছিল। এটি একটি ফ্রি 3D মডেলিং সফটওয়্যার এবং উদ্ভাবক এবং কঠিন কাজ থেকে আমার অভিজ্ঞতার সাথে এটি কাজ করা বেশ সহজ ছিল। মামলার কোণে বৃত্তগুলি হল প্রিন্টবেড থেকে পিলিং প্রতিরোধ করা।

আপনি যদি নিজের কেস তৈরি করেন তবে কেবল একটি জিনিস সত্যিই গুরুত্বপূর্ণ। আপনার সুইচগুলিকে দৃ placed়ভাবে স্থাপন করতে হবে এবং সরানো যাবে না। আমি বর্গক্ষেত্রের কাটআউটের ছবিগুলি মাত্রা সহ প্রদান করেছি যাতে আপনি এটি আপনার নিজের নকশার জন্য ব্যবহার করতে পারেন ধরে নিবেন যে আপনি কাইলহ বক্স সুইচ ব্যবহার করছেন।

সমাবেশ

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

1. এসএমডি উপাদানগুলি বিক্রি করুন। এগুলি হল প্রতিরোধক, ক্যাপাসিটার এবং এলইডি।

2. Arduino প্রো মাইক্রো সোল্ডার।

Sold. সোল্ডারিং এর আগে থ্রিডি প্রিন্টেড কভারপ্লেটে sw টি সুইচ রাখুন। সুইচগুলি সোল্ডার করার পরে কভারপ্লেটটি সরানো যাবে না। সুইচগুলি নষ্ট করার পরামর্শ দেওয়া হয় না এবং সেগুলি ধ্বংস করতে পারে।

4. এখন জায়গায় সুইচ ঝালাই। যত তাড়াতাড়ি সম্ভব এটি করুন কারণ প্লাস্টিকের সুইচগুলি তাদের গলে এবং নষ্ট করতে পারে বা তাদের ক্লিকের সংখ্যা মারাত্মকভাবে হ্রাস করতে পারে।

5. একত্রিত কভারপ্লেট থ্রিডি প্রিন্টেড কেসে রাখুন এবং টেপ দিয়ে সুরক্ষিত করুন বা বোল্ট ব্যবহার করুন যদি তারা কীক্যাপে হস্তক্ষেপ না করে।

6. সুইচগুলিতে keyCaps রাখুন এবং আপনার কাজ শেষ।

সুপারিশ

আপনার কোড আপলোড করার পর আরডুইনোতে এলইডি ডিসল্ডার বা মাস্ক করুন। যদি আপনার কোড আপলোড না হয় তবে লেডগুলি চমৎকার তবে একটি সমাপ্ত পণ্য হিসাবে দেখতে সুন্দর নয়। দক্ষতা এবং পয়েন্টযুক্ত টুইজার প্রয়োজন।

এছাড়াও নীচে কিছু গ্রিপ ফুট অ্যান্টি -স্লিপের জন্য চমৎকার এবং আরজিবি আলোকে উজ্জ্বল করতে দিন।

ধাপ 5: কোড V1 (হার্ডওয়্যার ডিবাউন্স)

কোড V1 (হার্ডওয়্যার ডিবাউন্স)
কোড V1 (হার্ডওয়্যার ডিবাউন্স)
কোড V1 (হার্ডওয়্যার ডিবাউন্স)
কোড V1 (হার্ডওয়্যার ডিবাউন্স)

এই প্রকল্পের কোডটি শিক্ষানবিস বন্ধুত্বপূর্ণ নয় তাই আপনি যদি আরডুইনোতে প্রোগ্রাম করতে শুরু করেন তবে এই কোডটি সম্ভবত আপনাকে কিছুটা ভয় দেখাবে। যাইহোক আমি যতটা সম্ভব সেরাটা ব্যাখ্যা করার চেষ্টা করব। এই টেক্স এ কিছু বিষয় পরে ব্যাখ্যা করা হয়েছে তাই যদি আপনার কোন প্রশ্ন থাকে তাহলে দয়া করে প্রথমে পুরোটা পড়ুন।

কোড আপলোড করা হচ্ছে

প্রথমে সব 3 ".ino" ফাইল ডাউনলোড করে একটি ফোল্ডারে রাখুন। আপনার যদি Arduino IDE না থাকে তবে এটি অফিসিয়াল arduino সাইটে বিনামূল্যে ডাউনলোড করুন।

আপনার পিসিতে আপনার Arduino সংযুক্ত করুন এবং "OSU_Keyboard_code_V1.ino" খুলুন। টুলস বোর্ডে "Arduino/Genuino Micro" নির্বাচন করুন। এছাড়াও সরঞ্জামগুলিতে ডান COM পোর্ট নির্বাচন করুন। এটি কখনও কখনও পরিবর্তিত হতে পারে আপনার Arduino এ কোড আপলোড করার জন্য স্ক্রিনের উপরের বাম দিকের তীরটিতে ক্লিক করুন এবং অপেক্ষা করুন যতক্ষণ না এটি আপনাকে বলে যে এটি নীচে বামে সম্পন্ন হয়েছে।

OSU_Keyboard_code_V1

অন্তর্ভুক্ত এবং সংজ্ঞায়িত

প্রথমে আপনাকে কীবোর্ড লাইব্রেরি অন্তর্ভুক্ত করতে হবে। এটি একটি কীবোর্ড হিসাবে Arduino ব্যবহার করা সম্ভব করে তোলে।

পরবর্তী আমি কিছু মান সংজ্ঞায়িত করি। সংজ্ঞা ঠিক একটি ভেরিয়েবলের মত কিন্তু প্রোগ্রাম চলাকালীন তারা পরিবর্তন করতে পারে না। প্রথম 9 টি কীবোর্ড অক্ষর, আরডুইনো পিন নম্বর এবং পোর্ট বিটগুলির জন্য।

তারপর LED ডেটা এবং ঘড়ির পোর্ট বিট।

এছাড়াও লেড সংখ্যা সংজ্ঞায়িত এবং রঙ চাকা কোণ জন্য একটি পরিবর্তনশীল।

সেটআপ

কোডের এই অংশটি শুধুমাত্র একবার কার্যকর করা হবে যখন arduino প্লাগ ইন করা হবে।

প্রথমে LEDs এর ঘড়ি এবং ডেটা পিন আউটপুট হিসাবে সেট করা হয় এবং ইনপুট হিসাবে সুইচ পিন। এটি pinMode () এর উন্নত সংস্করণ। আপনি আগ্রহী হলে "সরাসরি পোর্ট ম্যানিপুলেশন" অনুসন্ধান করুন।

Keyboard.begin () কেবল কীবোর্ড হিসাবে ইউএসবি সংযোগ শুরু করে।

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

লুপ

Arduino চালিত অবস্থায় এই অংশটি ক্রমাগত পুনরাবৃত্তি হবে।

আমি শুধুমাত্র LEDs এর রঙ পরিবর্তন এবং আপডেট করতে এটি ব্যবহার করি।

বাধা দেয়

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

প্রথমে এটি চেক করে যে বোতাম টিপানো হয়েছে বা ছেড়ে দেওয়া হয়েছে এবং সঠিক কীবোর্ড কমান্ড পাঠায়।

LED (ভিন্ন ক্রমে ব্যাখ্যা করা হয়েছে)

যদি আপনি কৌতূহলী হন যে এলইডিগুলি কীভাবে নিয়ন্ত্রিত হয় তবে আপনার APA102 ডেটশীটটি দেখা উচিত।

এক টুকরো

এটি আবার ডিজিটাল লেখার সরাসরি পোর্ট ম্যানিপুলেশন সংস্করণ।

প্রথমে এটি পরীক্ষা করে যে এটি একটি 0 বা 1 পাঠাতে হবে এবং যথাক্রমে ডেটা পিন কম বা উচ্চ টানবে। তারপর এটি ঘড়ি পিন খুব সংক্ষিপ্ত এবং আবার এটি কম লিখুন।

ওয়ানবাইট

এটি "ফর" লুপ দিয়ে ওয়ানবিট 8 বার পুনরাবৃত্তি করে। এটি একটি বাইটে প্রথম বিট পড়ে এবং এর মানটি ওয়ানবিট ফাংশনে প্রেরণ করে এবং পরবর্তী 7 বিটের জন্য একই কাজ করে।

LedData

এটি একটি নেতৃত্বের জন্য প্রয়োজনীয় তথ্য সরবরাহ করতে ওয়ানবাইট 4 বার পুনরাবৃত্তি করে। প্রথম বাইট 111xxxxx দিয়ে শুরু হয় এবং xxxxx এর জায়গায় 5 বিট ব্রাইটনেস ভ্যালু থাকে। উজ্জ্বলতা 0 থেকে 31 (2^5 = 32 স্তর) সেট করা যেতে পারে।

পরবর্তী 3 বাইট হল নীল, সবুজ এবং লাল মানের জন্য। প্রতিটি রঙের জন্য একটি বাইট।

ColorWheelThisLed

এই ফাংশনটি LEDData কে কল করে চক্রের একটি কোণের উপর নির্ভর করে এটি rgb রং দেয়।

16 বিট মান 60 ডিগ্রির 6 সমান ব্যবধানে বিভক্ত। ছবিগুলি দেখলে আপনাকে আরও ভালভাবে বুঝতে সাহায্য করতে পারে।

(একটি 8 বিট সংস্করণও প্রদান করা হয়েছে কিন্তু মন্তব্য করা হয়েছে কারণ এটি খুব ঝাপসা)

StartEndFrame

আপনি যখনই লেডগুলিতে নতুন রং পাঠাতে চান এবং লেডগুলির আসল রঙ আপডেট করতে চান তখনই শুরু ফ্রেমটি ব্যবহার করা প্রয়োজন।

আমি শুধুমাত্র স্টার্ট ফ্রেম ব্যবহার করি কারণ এন্ডফ্রেমের প্রয়োজন হয় না। প্রারম্ভিক ফ্রেমটি 0 এর 4 বাইট। শেষের ফ্রেমটি 255 (11111111) এর 4 বাইট।

ধাপ 6: কোড ভি 2 (সফটওয়্যার ডিবাউন্স উইথ টাইমার)

কোড V2 (সফটওয়্যার ডিবাউন্স উইথ টাইমার)
কোড V2 (সফটওয়্যার ডিবাউন্স উইথ টাইমার)

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

আমি আগের সংস্করণের মতো কোডটি ব্যাপকভাবে ব্যাখ্যা করব না কারণ এটি ব্যাখ্যা করা একটু কঠিন।

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

একমাত্র নেতিবাচক দিক যা আমি নিয়ে আসতে পারি তা হল আরডুইনো বিলম্বের ফাংশনগুলি আর ব্যবহার করা যাবে না। কারণ বিলম্ব ফাংশন টাইমার 0 ব্যবহার করে এবং এই প্রোগ্রামটি ডিবাউন্স করার জন্য টাইমার 0 ব্যবহার করে।

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

ধাপ 7: কোড V3 (উল্লম্ব কাউন্টারের সাথে সফটওয়্যার ডিবাউন্স) (প্রস্তাবিত) (কোন LED নেই)

কোড V3 (উল্লম্ব কাউন্টারের সাথে সফটওয়্যার ডিবাউন্স) (প্রস্তাবিত) (কোন LED নেই)
কোড V3 (উল্লম্ব কাউন্টারের সাথে সফটওয়্যার ডিবাউন্স) (প্রস্তাবিত) (কোন LED নেই)

এই কোডটিরও একটি সংস্করণ রয়েছে যেখানে আপনাকে প্রতিরোধক টানতে হবে না। নিশ্চিত করুন যে আপনি প্রতিটি বাটনকে ইনপুট এবং গ্রাউন্ডের সাথে সংযুক্ত করেছেন! বিল্ড-ইন পুল-আপ ব্যবহার করা হয়।

আমি V2 কোডে কিছু অনিবন্ধিত প্রেসও অনুভব করেছি। আমি মনে করি কোডটি তার টাইমার- এবং বহিরাগত বিঘ্নের সাথে খুব জটিল হয়ে উঠেছে এবং আমি কিছু ব্যতিক্রম মিস করতে পারি। এই কারণে আমি সফ্টওয়্যার ডিবাউন্স পদ্ধতিগুলির জন্য ইন্টারনেটে অনুসন্ধানের সাথে শুরু থেকে শুরু করেছি।

(সত্যি বলতে কি, এই প্রকল্পের অন্তত অর্ধেক এই সময়ে বোতাম ডিবাউন্সিং হয়ে গেছে)

কিছু অনুসন্ধানের পরে আমি এই পোস্ট জুড়ে এসেছি:

www.compuphase.com/electronics/debouncing…।

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

আমার ব্যাখ্যা

টাইমিং ডায়াগ্রাম (ওয়েভড্রমে তৈরি) আমি যোগ করেছি বিট গণিতকে বোঝার জন্য এটি আরও কিছুটা কঠিন করে তুলতে হবে। মনে রাখবেন ছবিটিতে 2 টি কাউন্টার বিট আছে, কিন্তু আমার কোডটিতে 3 টি আছে।

মান প্রতি এক বিট

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

সব একই সময়ে

বিট গণিত ব্যবহার করে এই পিন ডিবাউন্স সমান্তরালভাবে চালানো সম্ভব। এবং, যদিও বিট গণিত বেশ জটিল, এটি প্রসেসরের জন্য খুবই দক্ষ।

8 বিট ডেটা টাইপ দিয়ে 8 বোতামের জন্য এটি করা সম্ভব। বৃহত্তর ডেটাটাইপ ব্যবহার করে একবারে আরও বেশি ডিবাউন্স করার অনুমতি দেয়।

ডিবাউন্স

ডিবাউন্স রুটিন প্রতি 1 মিলিসেকেন্ডে টাইমার ইন্টারাপ্টের সাথে সম্পাদিত হয়।

যখন বোতামটি টিপুন তখন বাটন স্টেট, যা বিতর্কিত অবস্থা, তা নিmeসন্দেহে কম হয়ে যাবে, যা একটি বোতাম টিপে নির্দেশ করে। একটি রিলিজ সনাক্ত করার জন্য বোতামটি দীর্ঘ সময়ের জন্য উচ্চ হতে হবে, এটি নির্দেশ করে যে এটি একটি নির্দিষ্ট সময়ের জন্য বাউন্স হয়নি। একটি বোতাম পরিবর্তন নির্দেশ করার জন্য টগল ব্যবহার করা হয়। কাউন্টার বিট ব্যবহার করা হয় …. কতক্ষণ বাউন্স হয়নি তা গণনা।

ডেল্টা ইনপুট এবং বিতর্কিত অবস্থার মধ্যে পার্থক্য নির্দেশ করে। পার্থক্য থাকলেই কাউন্টার গণনা করা হবে। বাউন্স ধরা পড়লে কাউন্টারটি পুনরায় সেট করা হবে (বদ্বীপ 0)।

ধাপ 8: ফলাফল

Image
Image

সবকিছু ঠিকঠাক থাকলে এখন আপনার ওসু চালানোর জন্য একটি কার্যকরী কীবোর্ড থাকা উচিত! চালু. আমি ব্যক্তিগতভাবে কোনো বিলম্ব লক্ষ্য করিনি। আপনি যদি দয়া করে আমাকে জানান। এছাড়াও যদি কোন প্রশ্ন থাকে তবে নির্দ্বিধায় কিছু জিজ্ঞাসা করুন।

V2 সম্পর্কে আগের উল্লেখগুলি প্রতিশ্রুতি হিসাবে বোঝানো হয়নি তাই এই প্রকল্পটি স্থগিত করবেন না কারণ আপনি V2 এর জন্য অপেক্ষা করতে চান।

আমি আশা করি আপনি আপনার কীবোর্ড উপভোগ করবেন!

ওসু! নাম: Thomazzz3

সমস্যা সমাধান

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

এক বা একাধিক কী কাজ করে না?

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

আপনি যে অক্ষরগুলি টাইপ করেছেন তা কি ওসুতে কনফিগার করা কীগুলির সাথে মেলে! ?

Arduino কোডের অক্ষরগুলি প্রথম 3 #সংজ্ঞায় পরিবর্তন করুন ('' nessecary!)।

অথবা আপনার Osu পরিবর্তন করুন! কনফিগার করা কী ব্যবহার করার জন্য সেটিংস।

এক বা একাধিক কী কয়েকবার পুনরাবৃত্তি হয়?

ডিবাউন্স সার্কিট সম্ভবত আপনার সুইচগুলির জন্য কাজ করে না বা সঠিকভাবে বিক্রি হয় না। আপনার ঝাল সংযোগগুলি পরীক্ষা করুন। যদি এটি এখনও ঘটে তবে 1uF এর একটি ক্যাপাসিটরের মান চেষ্টা করুন। এটি পিসিবি ব্যবহারকারীদের জন্য খুব কঠিন হবে।

যদি আপনার LEDs নিয়ে সমস্যা হয়

LEDs ঝলকান?

একটি সোল্ডার সংযোগ আলগা হতে পারে। যদি আপনি পিসিবি ব্যবহার করেন তবে নিশ্চিত করুন যে সোল্ডারিং টিনটি সত্যই প্রিন্টের প্যাডে প্রবাহিত হয়েছে।

কোন এলইডি কাজ করে না বা নির্দিষ্ট সংখ্যক এলইডি থেকে কাজ করা বন্ধ হয়?

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

যদি এটি ঠিক করা হয় তবে এটি প্রয়োজন হলে পরবর্তী LEDs এর জন্য পুনরাবৃত্তি করুন।

প্রস্তাবিত: