সুচিপত্র:

Arduino এর জন্য 6 টি বোতামের জন্য 1 এনালগ ইনপুট ব্যবহার করুন: 6 টি ধাপ
Arduino এর জন্য 6 টি বোতামের জন্য 1 এনালগ ইনপুট ব্যবহার করুন: 6 টি ধাপ

ভিডিও: Arduino এর জন্য 6 টি বোতামের জন্য 1 এনালগ ইনপুট ব্যবহার করুন: 6 টি ধাপ

ভিডিও: Arduino এর জন্য 6 টি বোতামের জন্য 1 এনালগ ইনপুট ব্যবহার করুন: 6 টি ধাপ
ভিডিও: How to use up to 10 push button switch with 1 Arduino input pin ANPB-V1 2024, নভেম্বর
Anonim
Arduino এর জন্য 6 টি বাটনের জন্য 1 এনালগ ইনপুট ব্যবহার করুন
Arduino এর জন্য 6 টি বাটনের জন্য 1 এনালগ ইনপুট ব্যবহার করুন

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

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

আমি যে সার্কিটটি নিয়ে এসেছি তা Arduino থেকে পাওয়া 5V উৎস ব্যবহার করে এবং 7 টি প্রতিরোধক এবং 6 টি বোতাম বা সুইচ ব্যবহার করে।

ধাপ 1: সার্কিট

সার্কিট
সার্কিট

Arduino এর এনালগ ইনপুট আছে যা 0V থেকে 5V ইনপুট গ্রহণ করে। এই ইনপুটের একটি 10-বিট রেজোলিউশন আছে, যার মানে হল যে সিগন্যালটি 2^10 সেগমেন্ট বা 1024 কাউন্টে বিভক্ত। এর উপর ভিত্তি করে, সবচেয়ে বেশি যা আমরা সম্ভবত এনালগ ইনপুটে ইনপুট করতে পারি যখন একই সাথে প্রেস করার অনুমতি দেয় 10 টি বোতাম থেকে 1 এনালগ ইনপুট। কিন্তু, এটি একটি নিখুঁত পৃথিবী নয়। কন্ডাক্টরগুলিতে প্রতিরোধ, বাইরের উত্স থেকে শব্দ এবং অসম্পূর্ণ শক্তি রয়েছে। সুতরাং, নিজেকে প্রচুর নমনীয়তা দিতে, আমি 6 টি বোতামের জন্য এটি ডিজাইন করার পরিকল্পনা করেছি। এটি আংশিকভাবে এই সত্য দ্বারা প্রভাবিত হয়েছিল যে টিঙ্কারক্যাড সার্কিটগুলির একটি 6-সুইচ ডিআইপি সুইচ বস্তু ছিল, যা পরীক্ষা করা সহজ করে তুলবে।

আমার ডিজাইনের প্রথম ধাপটি নিশ্চিত করা ছিল যে প্রতিটি বোতাম, যখন পৃথকভাবে চাপানো হয়, একটি অনন্য ভোল্টেজ সরবরাহ করবে। এটি সমস্ত প্রতিরোধককে একই মান হিসাবে বাতিল করেছে। পরবর্তী ধাপটি ছিল যে প্রতিরোধের মানগুলি সমান্তরালে যোগ করা হলে, কোনও একক প্রতিরোধক মানের মতো একই প্রতিরোধ থাকতে পারে না। যখন প্রতিরোধক সমান্তরালভাবে সংযুক্ত থাকে, ফলে প্রতিরোধের গণনা করা যায় Rx = 1/[(1/R1)+(1/R2)] দ্বারা। সুতরাং, যদি R1 = 2000 এবং R2 = 1000, Rx = 667 হয়। আমি অনুমান করেছি যে প্রতিটি প্রতিরোধকের আকার দ্বিগুণ করে, আমি কোন সংমিশ্রণের জন্য একই প্রতিরোধ দেখতে পাব না।

সুতরাং, আমার সার্কিট এই বিন্দু ছিল 6 সুইচ, প্রতিটি তার নিজস্ব প্রতিরোধক সঙ্গে। কিন্তু, এই সার্কিটটি সম্পন্ন করার জন্য আরও একটি প্রতিরোধক প্রয়োজন।

শেষ প্রতিরোধকের 3 টি উদ্দেশ্য রয়েছে। প্রথমত, এটি একটি পুল-ডাউন প্রতিরোধক হিসাবে কাজ করে। প্রতিরোধক ছাড়া, যখন কোন বোতাম চাপানো হয় না সার্কিট অসম্পূর্ণ। এটি Arduino এর এনালগ ইনপুটের ভোল্টেজকে যেকোন ভোল্টেজের সম্ভাবনায় ভাসতে দেবে। একটি পুল-ডাউন রোধকারী মূলত ভোল্টেজকে 0 V এ টেনে আনে। দ্বিতীয় উদ্দেশ্য হল এই সার্কিটের কারেন্ট সীমিত করা। ওহমের আইন বলে যে V = IR, বা ভোল্টেজ = বর্তমান প্রতিরোধের দ্বারা গুণিত হয়। প্রদত্ত ভোল্টেজ উৎসের সাথে, বড় প্রতিরোধক মানে হল যে বর্তমানটি ছোট হবে। সুতরাং, যদি 500V সিগন্যাল 500ohm রোধকারীতে প্রয়োগ করা হয়, তাহলে সবচেয়ে বড় যে স্রোত আমরা দেখতে পাচ্ছি তা হবে 0.01A বা 10mA। তৃতীয় উদ্দেশ্য হল সিগন্যাল ভোল্টেজ প্রদান করা। শেষ প্রতিরোধকের মধ্য দিয়ে প্রবাহিত মোট বর্তমান হবে: i = 5V/Rtotal, যেখানে Rtotal = Rlast+{1/[(1/R1)+(1/R2)+(1/R3)+(1/R4)+ (1/R5)+(1/R6)]}। যাইহোক, প্রতিটি প্রতিরোধকের জন্য শুধুমাত্র 1/Rx অন্তর্ভুক্ত করুন যার সংশ্লিষ্ট বোতাম টিপানো আছে। মোট বর্তমান থেকে, এনালগ ইনপুট সরবরাহকৃত ভোল্টেজ হবে i*Rlast, অথবা i*500।

ধাপ 2: প্রমাণ - এক্সেল

প্রমাণ - এক্সেল
প্রমাণ - এক্সেল

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

আমি সুইচ ইনপুট সম্ভাব্য সব সমন্বয় সেট আপ এবং এই ক্রমানুসারে বাইনারি নিদর্শন নিম্নলিখিত সংগঠিত। "1" এর মান নির্দেশ করে যে সুইচ চালু আছে, ফাঁকা নির্দেশ করে এটি বন্ধ। স্প্রেডশীটের শীর্ষে, আমি প্রতিটি সুইচ এবং পুল-ডাউন প্রতিরোধকের জন্য প্রতিরোধের মান রাখি। আমি তখন প্রতিটি সংমিশ্রণের জন্য সমতুল্য প্রতিরোধের হিসাব করি, ব্যতীত যখন সমস্ত প্রতিরোধক বন্ধ থাকে কারণ এই প্রতিরোধকগুলির একটি বিদ্যুৎ উৎস সরবরাহ না করে প্রভাব ফেলবে না। আমার গণনা সহজ করার জন্য যাতে আমি প্রতিটি সংমিশ্রণে কপি এবং পেস্ট করতে পারি, আমি প্রতিটি সুইচ মান (0 বা 1) এর উল্টানো প্রতিরোধের মান দ্বারা গুণ করে সমস্ত সংমিশ্রণ গণনায় অন্তর্ভুক্ত করেছি। যদি সুইচ বন্ধ থাকে তবে এটি গণনা থেকে এর প্রতিরোধকে দূর করে। ফলে সমীকরণটি স্প্রেডশীটের ছবিতে দেখা যায়, কিন্তু Req = Rx + 1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6)। Itotal = 5V / Req ব্যবহার করে আমরা সার্কিটের মাধ্যমে মোট কারেন্ট নির্ণয় করি। এটি একই কারেন্ট যা পুল-ডাউন রোধের মধ্য দিয়ে যায় এবং আমাদের এনালগ ইনপুটে ভোল্টেজ প্রদান করে। এটি Vin = Itotal x Rx হিসাবে গণনা করা হয়। রেক ডেটা এবং ভিন ডেটা উভয়ই পরীক্ষা করে, আমরা দেখতে পারি যে আমাদের প্রকৃতপক্ষে অনন্য মান রয়েছে।

এই মুহুর্তে, মনে হচ্ছে আমাদের সার্কিট কাজ করবে। এখন কিভাবে Arduino প্রোগ্রাম করতে হবে তা বের করতে।

ধাপ 3: Arduino প্রোগ্রামিং

আরডুইনো প্রোগ্রামিং
আরডুইনো প্রোগ্রামিং
আরডুইনো প্রোগ্রামিং
আরডুইনো প্রোগ্রামিং
আরডুইনো প্রোগ্রামিং
আরডুইনো প্রোগ্রামিং

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

এক্সেলের মধ্যে একটি লাইনের সমীকরণ কিভাবে নির্ধারণ করা যায় তার একটি দ্রুত টিউটোরিয়াল এখানে।

1) এমন একটি সেল নির্বাচন করুন যাতে কোন ডেটা থাকে না। যদি আপনার একটি সেল নির্বাচিত থাকে যার মধ্যে ডেটা থাকে, এক্সেল অনুমান করার চেষ্টা করবে যে আপনি কি ট্রেন্ড করতে চান। এটি একটি প্রবণতা স্থাপন করা অনেক বেশি কঠিন করে তোলে, কারণ এক্সেল খুব কমই সঠিকভাবে ভবিষ্যদ্বাণী করে।

2) "সন্নিবেশ" ট্যাবটি নির্বাচন করুন এবং একটি "স্ক্যাটার" চার্ট নির্বাচন করুন।

3) চার্ট বক্সে ডান ক্লিক করুন এবং "সিলেক্ট ডেটা …" এ ক্লিক করুন। এটি "সিলেক্ট ডেটা সোর্স" উইন্ডো পপ আপ করবে। ডাটা সিলেক্ট করার জন্য Add বাটন সিলেক্ট করুন।

4) এটি একটি সিরিজের নাম দিন (alচ্ছিক)। X- অক্ষের জন্য রেঞ্জ নির্বাচন করুন উপরের তীর ক্লিক করে এবং তারপর ভোল্টেজ ডেটা নির্বাচন করুন। Y- অক্ষের জন্য পরিসীমা নির্বাচন করুন উপরের তীর ক্লিক করে এবং তারপর পূর্ণসংখ্যা ডেটা (0-63) নির্বাচন করে।

5) ডেটা পয়েন্টে ডান ক্লিক করুন এবং "ট্রেন্ডলাইন যোগ করুন …" নির্বাচন করুন "ফর্ম্যাট ট্রেন্ডলাইন" উইন্ডোতে, বহুপদী বোতামটি নির্বাচন করুন। প্রবণতার দিকে তাকিয়ে, আমরা দেখি যে 2 এর অর্ডারটি পুরোপুরি মেলে না। আমি 3 এর একটি আদেশ নির্বাচন করেছি এবং অনুভব করেছি এটি অনেক বেশি নির্ভুল। "চার্টে সমীকরণ প্রদর্শন করুন" এর জন্য চেকবক্স নির্বাচন করুন। চূড়ান্ত সমীকরণ এখন চার্টে প্রদর্শিত হয়।

6) সম্পন্ন।

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

ধাপ 4: TinkerCAD সার্কিট

TinkerCAD সার্কিট
TinkerCAD সার্কিট

আপনি যদি টিঙ্কারক্যাড সার্কিটগুলি পরীক্ষা না করে থাকেন তবে এখনই এটি করুন। অপেক্ষা করুন !!!! আমার নির্দেশযোগ্য পড়া শেষ করুন, এবং তারপর এটি পরীক্ষা করে দেখুন। TinkerCAD সার্কিট Arduino সার্কিট পরীক্ষা করা খুব সহজ করে তোলে। এটিতে বেশ কয়েকটি বৈদ্যুতিক বস্তু এবং আরডুইনো অন্তর্ভুক্ত রয়েছে, এমনকি আপনাকে পরীক্ষার জন্য আরডুইনো প্রোগ্রাম করার অনুমতি দেয়।

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

Arduino প্রোগ্রামিং কাজ করেছে তা প্রমাণ করার জন্য, আমি Arduino এর ডিজিটাল আউটপুট ব্যবহার করে LED এর সুইচগুলির অবস্থা আউটপুট করি।

আমি তখন প্রতিটি সম্ভাব্য সংমিশ্রণের জন্য প্রতিটি সুইচ বদল করেছি এবং "এটি কাজ করে" বলে গর্বিত !!!

ধাপ 5: "এত দীর্ঘ, এবং সমস্ত মাছের জন্য ধন্যবাদ।" (রেফারেন্স 1)

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

আমার নির্দেশাবলী পড়ার জন্য আপনাকে ধন্যবাদ। আমি আশা করি এটি আপনার প্রকল্পগুলিতে আপনাকে সাহায্য করবে।

যদি আপনি এই একই বাধা মোকাবেলা করার চেষ্টা করেন এবং কিভাবে আপনি এটি সমাধান করেছেন তা মন্তব্য করুন। আমি এটি করার আরও উপায় শিখতে চাই।

ধাপ 6: রেফারেন্স

আপনি কি ভাবেননি যে আমি তার উৎসের রেফারেন্স না দিয়ে একটি উদ্ধৃতি প্রদান করব?

রেফারেন্স 1: অ্যাডামস, ডগলাস। আবার দেখা হবে আর এইসব মাছের জন্য ধন্যবাদ. (দ্য হিচাইকার্স গাইড অফ দ্য গ্যালাক্সি "ট্রিলজি" এর চতুর্থ বই)

প্রস্তাবিত: