আরডুইনোতে 14 টিরও বেশি আউটপুট পিন থাকা কি সম্ভব, আমি এমন একটি প্রকল্পে কাজ করছি যেখানে স্বতন্ত্রভাবে বেশ কয়েকটি এলইডি আলোকিত করা দরকার। আমার কাছে কেবল একটি আরডুইনো ইউনো আছে এবং আমি কোনও মেগা পেতে চাই না।
আরডুইনোতে 14 টিরও বেশি আউটপুট পিন থাকা কি সম্ভব, আমি এমন একটি প্রকল্পে কাজ করছি যেখানে স্বতন্ত্রভাবে বেশ কয়েকটি এলইডি আলোকিত করা দরকার। আমার কাছে কেবল একটি আরডুইনো ইউনো আছে এবং আমি কোনও মেগা পেতে চাই না।
উত্তর:
আরডুইনোতে উপলভ্য আউটপুট পিনগুলির সেটকে প্রসারিত করার একটি সাধারণ উপায় হ'ল 74HC595 আইসি (ডেটাশিটের লিঙ্ক ) এর মতো শিফ্ট রেজিস্টারগুলি ব্যবহার করা ।
এই চিপগুলি নিয়ন্ত্রণ করতে আপনার 3 টি পিন প্রয়োজন:
কোনও প্রোগ্রামে আপনি শিফটআউট () কমান্ডটি ব্যবহার করে শিফট রেজিস্ট্রারে একবারে ডেটা কিছুটা দিয়ে যান :
shiftOut(dataPin, clockPin, data);
এই কমান্ডের সাহায্যে, আপনি data
ভেরিয়েবলের 8 টি বিট দিয়ে 595 আইসিতে 8 টি আউটপুটগুলির প্রত্যেকটি সেট করেন ।
একটি 595 দিয়ে, আপনি 5 পিন অর্জন করেন (আইসিতে 8 টি, তবে আপনি এটির সাথে কথা বলার জন্য 3 ব্যয় করেন)। আরও আউটপুট পেতে, আপনি পরবর্তী সিরিজের আউট পিনের সাথে এর সিরিয়াল-আউট পিনটি সংযুক্ত করে একসাথে 595 এর একটি সিরিজ ডেইজি-চেইন করতে পারেন। আপনাকে 595 আইসির সমস্তটির ঘড়ি এবং ল্যাচ পিনগুলি একসাথে সংযুক্ত করতে হবে।
ফলস্বরূপ সার্কিট (একটি 595 ব্যবহার করে) এর মতো দেখাবে:
উপরের চিত্রটি এই কোডড্রজেক্ট.কম ওয়েবপৃষ্ঠা থেকে নেওয়া হয়েছিল :
ল্যাচ পিনটি আপনি 595 এর আউটপুট স্থিতিশীল রাখতে ব্যবহার করতে ব্যবহৃত হয় যখন আপনি এটিতে ডেটা সরিয়ে রাখছেন:
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, data);
digitalWrite(latchPin, HIGH);
একটি আরডুইনো থেকে আরও পিন পেতে দুটি উপায় রয়েছে।
প্রথম উপায় হ'ল অ্যানালগ পিনগুলি ডিজিটাল আউটপুট পিন হিসাবে ব্যবহার করা, যা করা সত্যিই সহজ। আপনাকে যা করতে হবে তা হ'ল A0-A5 কে পিন 14,15,16,17,18,19 হিসাবে উল্লেখ করুন। উদাহরণস্বরূপ A0 পিন করতে উচ্চ লিখতে কেবল ডিজিটাল রাইট (14, HIGH) ব্যবহার করুন।
আরডুইনো থেকে আরও পিন পাওয়ার অন্য উপায়টি হ'ল শিফট রেজিস্টার ব্যবহার করে। এটি করার জন্য আমি ইজেড-এক্সপেন্ডার শিল্ডটি ব্যবহার করার পরামর্শ দিচ্ছি , যা আপনি ইজেড-এক্সপেন্ডার লাইব্রেরিটি আমদানি করার সময় ডিজিটাল রাইট ([২০-৩৫], হাই) ব্যবহার করতে পারবেন) এই ঝালটি কেবল পিনটিকে কেবল আউটপুট হিসাবে ব্যবহার করার অনুমতি দেয় এবং শিফট রেজিস্টারগুলিকে নিয়ন্ত্রণ করতে পিনগুলি 8,12 এবং 13 ব্যবহার করে।
দুর্দান্ত জিনিসটি হ'ল আপনি কোনও সমস্যা ছাড়াই উপরোক্ত দুটি পদ্ধতি উভয়কেই একসাথে ব্যবহার করতে পারেন।
A0
- 19 A5
সংখ্যা ব্যবহার না করে সরাসরি - সনাক্তকারী ব্যবহার করতে পারেন । উদাহরণস্বরূপ digitalWrite(A0, HIGH)
,।
digitalWrite(A0)
চেয়ে আরও সঠিক digitalWrite(14)
। অন্য কোনও বোর্ডে, pin 14
বাস্তবে নাও থাকতে পারে A0
, যেমন pin 14
মেগা-তে সিরিয়াল 3 রয়েছে TX
এবং আপনার পরে থাকা এনালগ পিনটিকে প্রভাবিত করবে না। উদাহরণস্বরূপ, যদি digitalWrite
কোনও এনালগ পিন ব্যবহার করে থাকেন তবে A0
- A5
রেফারেন্সটি ব্যবহার করুন ।
আপনি যদি এলইডি ড্রাইভ করতে চান, তবে আপনি এমন একটি MAX7219ও ব্যবহার করতে পারেন যা অতিরিক্ত সার্কিটরি ছাড়াই (LED৪ টি এলইডি ড্রাইভ করতে পারে) (সংকেতকে প্রশস্ত করার জন্য ট্রানজিস্টারের প্রয়োজন নেই)।
একটি MAX7219 চালানোর জন্য আরডুইনোতে কেবলমাত্র 3 আউটপুট পিন প্রয়োজন। এছাড়াও, আপনি এটির জন্য কয়েকটি আরডুইনো গ্রন্থাগার খুঁজে পেতে পারেন ।
আপনার যদি 64 টিরও বেশি এলইডি পাওয়ার প্রয়োজন হয় তবে আপনি সেগুলির বেশ কয়েকটিকে চেইনও করতে পারেন।
আমি একাধিক 7-সেগমেন্টের LED ডিসপ্লেতে এটি সফলভাবে ব্যবহার করেছি।
ডাউনসাইড: এটি ব্যয়বহুল (প্রায় 10 ডলার)।
আপনি চার্লিপ্লেক্সিং ব্যবহার করতে পারেন । এই কৌশলটি দিয়ে আপনি সরাসরি n*(n-1)
এল পিন থেকে এলইডি চালনা করতে পারেন । 3 টি পিনের সাহায্যে আপনি 6 টি এলইডি, 4 পিন - 12 এলইডি, 5 পিন - 20 এলইডি ইত্যাদি চালাতে পারেন।
উদাহরণস্বরূপ:
তিনটি পিনে ছয়টি এলইডি রয়েছে
PINS LEDS
0 1 2 1 2 3 4 5 6
0 0 0 0 0 0 0 0 0
0 1 Z 1 0 0 0 0 0
1 0 Z 0 1 0 0 0 0
Z 0 1 0 0 1 0 0 0
Z 1 0 0 0 0 1 0 0
0 Z 1 0 0 0 0 1 0
1 Z 0 0 0 0 0 0 1
0 0 1 0 0 1 0 1 0
0 1 0 1 0 0 1 0 0
0 1 1 1 0 0 0 1 0
1 0 0 0 1 0 0 0 1
1 0 1 0 1 1 0 0 0
1 1 0 0 0 0 1 0 1
1 1 1 0 0 0 0 0 0
আপনি এখানে একটি আরও ভাল টিউটোরিয়াল দেখতে পারেন ।
পোর্ট-প্রসারণকারীগুলির মতো অন্যান্য ডিভাইসে সংযোগ করতে আপনি আই 2 সি প্রোটোকল (ওয়্যার লাইব্রেরি) ব্যবহার করতে পারেন । উদাহরণস্বরূপ, MCP23017।
আমি এলসিডি বোর্ডের সাথে সংযোগ স্থাপনের জন্য এই চিপগুলির একটি ব্যবহার করেছি। MCP23017 এর 16 টি পোর্ট রয়েছে, যা ইনপুট বা আউটপুট হিসাবে কনফিগার করা যায়। ইনপুট হিসাবে তারা চাইলে বাধা বাড়াতে পারে।
এলসিডির সাথে 16 টির 13 টি সংযোগের উদাহরণ:
এখন আমরা কেবল 2 টি তার (এসডিএ / এসসিএল) প্লাস শক্তি এবং গ্রাউন্ড ব্যবহার করে আরডুইনোতে সংযুক্ত হয়েছি:
কিছু তৃতীয় পক্ষের নির্মাতারা তাদের উপর 4 এক্স এমসিপি 23017 দিয়ে বোর্ড তৈরি করেছে, এটি আপনাকে 64 ইনপুট / আউটপুট দেয়:
8/16 পোর্টগুলির মধ্যে একটির সাথে একটি পিন সংযোগ করতে আপনি 74HC4051 (8 পোর্ট) বা 74HC4067 (16 পোর্ট) এর মতো এনালগ মাল্টিপ্লেক্সার ব্যবহার করতে পারেন, যেমন:
এগুলি দ্বি-দিকনির্দেশক, সুতরাং ইনপুট বা আউটপুট এক্সপেন্ডার হিসাবে ব্যবহৃত হতে পারে।
এসপিআই ব্যবহার করে আপনি শিফট রেজিস্টার যেমন 74HC595- তে দ্রুত সিরিয়াল ডেটা পাঠাতে পারেন। এগুলি একসাথে ডেইজি বেঁধে রাখা যেতে পারে। এই উদাহরণে আমি কেবলমাত্র 3 আই / ও পিন (এমওএসআই / এমআইএসও / এসসিকে) প্লাস পাওয়ার এবং গ্রাউন্ডের সাথে 32 টি এলইডি নিয়ন্ত্রণ করছি।
আমি একটি বাণিজ্যিক এলইডি সাইন এর ভিতরে দেখতে পেলাম যে LED২ টি এলইডি 74HC595 চিপ দ্বারা চালিত হয়েছিল।
এটিতে একাধিক অক্ষরযুক্ত কনফিগারেশনে 9 টি চিপ কলামগুলি চালাচ্ছে (9 x 8 = 72 এলইডি) এবং একটি চিপ সারিগুলি চালাচ্ছে।
আপনি যদি কেবল এলইডি ড্রাইভ করতে চান তবে আপনি সাধারণত তাদের মাল্টিপ্লেক্স করতে পারেন। MAX7219 এলইডি ম্যাট্রিক্সগুলি ড্রাইভ করার জন্য নকশাকৃত করে উদাহরণস্বরূপ 7-বিভাগের প্রদর্শনগুলি সহজ করে তোলে:
বা 64-LED ম্যাট্রিক্স:
উভয় ক্ষেত্রে এগুলি একসাথে ডেইজি বেঁধে রাখা যেতে পারে, উদাহরণস্বরূপ:
এই সমস্ত উদাহরণগুলিতে কেবলমাত্র আরডুইনো (এমওএসআই / এমআইএসও / এসসিকে) প্লাস পাওয়ার এবং গ্রাউন্ডের 3 টি পিন ব্যবহার করা হয়।
পূর্বে উল্লিখিত 16-বন্দর বন্দর সম্প্রসারণকারী (MCP23017) এছাড়াও একটি এসপিআই ভেরিয়েন্টে (এমসিপি 23 এস 17) আসে, যা কার্যত অভিন্ন কাজ করে। এটি আরও একটি তার ব্যবহার করে তবে দ্রুত হবে।
এলইডি স্ট্রিপগুলি (নিওপিক্সেলগুলির মতো) এর নিজস্ব প্রোটোকল রয়েছে। জোশ লেভিনের ইউটিউবে একটি পোস্ট ছিল যেখানে লেখক ডিউমিলানোভ সহ 1000 পিক্সেলের বেশি গাড়ি চালিয়েছেন!
শিফ্ট রেজিস্টারগুলি অন্যান্য উত্তরে উল্লেখ করা হয়েছে এবং তারা অবশ্যই অনেক প্রকল্পের জন্য একটি দুর্দান্ত পছন্দ। এগুলি সস্তা, সরল, পরিমিতরূপে দ্রুত এবং সাধারণত আরও আউটপুট যুক্ত করতে এক সাথে বেঁধে রাখা যেতে পারে। তবে তাদের এই ডাউনসাইড রয়েছে যে তাদের সাধারণত বেশ কয়েকটি পিনের একচেটিয়া ব্যবহারের প্রয়োজন হয় (আপনি কীভাবে সেট আপ করেন তার উপর নির্ভর করে 2 থেকে 4 এর মধ্যে)।
একটি বিকল্প হ'ল আরও উন্নত বন্দর সম্প্রসারণকারী যেমন 16 বিট এমসিপি 23017 এবং এমসিপি 23 এস 17 ব্যবহার করা । এগুলি যথাক্রমে আই 2 সি এবং এসপিআই সমর্থন করে যার অর্থ আপনি এগুলিকে বেশ কয়েকটি অন্যান্য ডিভাইস (সম্ভাব্য বিভিন্ন ধরণের) সহ একটি বাসে রাখতে পারেন। বাসের প্রতিটি ডিভাইস স্বতন্ত্রভাবে সম্বোধন করা যেতে পারে, এর অর্থ আপনি সবার সাথে কথা বলার জন্য কেবল 2 বা 3 পিন প্রয়োজন। আপডেটের গতি সাধারণত অত্যন্ত দ্রুত হয়, সুতরাং আপনি কোনও আরডুইনো প্রকল্পে উল্লেখযোগ্য বিলম্ব (অর্থাত্ ট্রান্সমিশন বিলম্ব) অনুভব করার সম্ভাবনা কম।
নিম্ন স্তরে আই 2 সি বা এসপিআই ব্যবহার করা সাধারণ শিফ্ট রেজিস্ট্রারের চেয়ে যথেষ্ট জটিল। তবে আপনার জন্য যত্ন নেওয়ার জন্য আরডুইনোর জন্য লাইব্রেরি কোড রয়েছে। এই প্রশ্নটি দেখুন, উদাহরণস্বরূপ: আমি কীভাবে আরডিনো দিয়ে আই 2 সি ডিভাইস ব্যবহার করব?
রিকার্ডোর জবাব ছাড়াও , উইকিপিডিয়া শিফট রেজিস্টারগুলিতে কী বলেছে :
শিফট রেজিস্টারের সর্বাধিক সাধারণ ব্যবহারগুলির মধ্যে একটি হ'ল সিরিয়াল এবং সমান্তরাল ইন্টারফেসের মধ্যে রূপান্তর। [...] এসআইপিওও রেজিস্টারগুলি সাধারণত মাইক্রোপ্রসেসরগুলির আউটপুটটির সাথে সংযুক্ত থাকে যখন উপলব্ধ হওয়ার চেয়ে আরও সাধারণ উদ্দেশ্য ইনপুট / আউটপুট পিনের প্রয়োজন হয়। এটি বেশ কয়েকটি বাইনারি ডিভাইসগুলিকে কেবল দুটি বা তিনটি পিন ব্যবহার করে নিয়ন্ত্রণ করতে দেয় তবে সমান্তরাল I / O এর চেয়ে ধীর করে দেয়।
ইন নিবন্ধ রিকার্ডো লিঙ্ক আপনি শিফট নিবন্ধন ডায়াগ্রাম দেখতে পারেন।
এখানে যা ঘটে তা হ'ল আপনি 8 টি পিনের ডেটা এক সিক্যুয়ালে রেখেছেন এবং প্রতিটি ঘড়ির জন্য শিফট রেজিস্টারে টিক চিহ্ন দেওয়া হবে (বাইনারি ডেটা প্রতিটি ল্যাচ থেকে পরের দিকে সরানো হবে) যতক্ষণ না এটি "বৃত্ত তৈরি করে" অর্থাৎ প্রথম বিটটি তৈরি করে শেষ পিন এ পৌঁছেছে। শিফ্ট রেজিস্টারগুলিতে একটি ইনপুট থাকে যেখানে আপনি শিফটিংটি চালু / বন্ধ করতে পারেন যাতে ডেটা অবস্থানের দিকে স্থানান্তরিত হওয়ার পরে স্থিতি রাখা যায়। একটি সাধারণ বিক্ষোভের জন্য নিম্নলিখিত অ্যানিমেশনটি দেখুন।
এখানে রেড লাইট সিরিয়াল ইনপুট এবং সবুজগুলি সরল এই সিআইপিও শিফট রেজিস্টারে ল্যাচগুলির অবস্থা প্রদর্শন করছে । স্থান পরিবর্তন স্থানান্তরিত ডেটা স্থানান্তরিত করার পরে বন্ধ করা যেতে পারে এবং আপনি পিনগুলি পড়তে পারেন। এই উদাহরণে আমি স্থানান্তরিত 10101011
।
এই উদাহরণগুলি থেকে আপনি বুঝতে পারবেন যে সিরিয়াল স্থানান্তর সমান্তরাল চেয়ে ধীর হবে, কারণ আপনার স্থানটিতে বিটগুলি স্থানান্তর করার জন্য আপনাকে শিফট রেজিস্টারটির জন্য অপেক্ষা করতে হবে। আপনি যত বিট লোড করতে চান তার জন্য আপনাকে একই পরিমাণ ক্লক টিকের জন্য অপেক্ষা করতে হবে। আপনি অনির্দিষ্টকালের জন্য তাদের চেইন করতে না পারার একাধিক কারণ এটি, কারণ লোডিং চিরকালের জন্য গ্রহণ করবে।
আপনি ইতিমধ্যে লিখেছেন, আপনি ডিজিটাল আউটপুট হিসাবে TX এবং RX সহ সমস্ত পিন ব্যবহার করতে পারেন। আমি এটি কিছুক্ষণ আগে একটি বিক্ষোভকারীকে করেছি এবং একটি ভিডিও রেকর্ড করেছি - 20 টি পিনে 20 এলইডিএস - এর পরিবর্তে অযৌক্তিক প্রকল্পের।
পিটার আর ব্লুমফিল্ড এখানে বর্ণিত হিসাবে , আপলোডের জন্য আপনাকে টিএক্স এবং আরএক্স সংযোগ বিচ্ছিন্ন করতে হবে। তদতিরিক্ত, সম্ভাব্য ইন্টারঅ্যাক্টিভিটির জন্য সেন্সরগুলি পড়ার জন্য আপনি পিনের বাইরে রয়েছেন এবং মোট বর্তমান সীমাটি পৌঁছেছে না তা নিশ্চিত করতে হবে। ভুলে যাবেন না যে আপনি যদি আপনার আরডিনো দিয়ে সরাসরি চালিত করেন তবে আপনি 5 ভি সীসাতে সীমাবদ্ধ।
রিকার্ডো দ্বারা বর্ণিত সাধারণভাবে শিফট রেজিস্টার এবং 595 ব্যবহারের সুপারিশ করা হয়।
আমি কিছুক্ষণ আগে এগুলি ব্যবহার করেছি যখন আমি কাওয়াই আমার (লিঙ্কটির পাঠ্যটি জার্মান ভাষায়) সোনারিং এবং প্রোগ্রামিংয়ের অংশটি অনুধাবনকারী শিল্পী ডোমিনিক জাইসকে বুঝতে পারি ।
এখানে, 8x11 নেতৃত্বের প্রদর্শন চালাতে 595 টির একটি গোছা ব্যবহার করা হয়েছিল। যেহেতু 12 ভি এসএমডি নেতৃত্বে একটি স্ট্রাইপ থেকে নেতৃত্বগুলি কেটে নেওয়া হয়েছিল , তাই শিফট রেজিস্টারগুলির আউটপুট পিনগুলিতে আবদ্ধ একটি অতিরিক্ত বিদ্যুৎ সরবরাহ এবং কিছু ইউডিএন 2803 এ ডার্লিংটন অ্যারেগুলি প্রয়োজনীয় ছিল।
অন্যান্য সাধারণ পদ্ধতির মধ্যে PCF8574 (A) 8 বিট পোর্ট সম্প্রসারণকারীদের ব্যবহার অন্তর্ভুক্ত থাকবে, যা আই 2 সি বাসের মাধ্যমে নিয়ন্ত্রণ করা হয়।
যাইহোক, আমি 595 শিফট রেজিস্টারগুলি প্রথমে চেষ্টা করে দেব।
আপনার যদি কয়েকটি আরজিবি নেতৃত্বে নিয়ন্ত্রণ করতে হয় তবে আপনি আরও বিশেষায়িত সমাধানগুলি সন্ধান করতে পারেন। কিছু আরজিবি নেতৃত্বে তাদের নিজস্ব ডাব্লুএস 2812 নিয়ে আসে । এই সূক্ষ্ম টুকরাগুলি ক্যাসকেড করা যায় (1-ওয়্যার বাস) এবং তাদের চেইনে তাদের অবস্থানের মাধ্যমে সম্বোধন করা হয়।
যদি এটি সমস্তই এলইডি সম্পর্কে হয় তবে ডাব্লুএস 2812 বি এলইডি স্ট্রিপগুলি, বা কেবল চালকেরা নিজেরাই চিপস? আপনি কেবলমাত্র একটি পিন ব্যবহার করে কার্যত সীমাহীন সংখ্যক এলইডি নিয়ন্ত্রণ করতে পারেন!
যদিও স্ট্রিপগুলিতে লোকেরা এর ব্যবহার করে তবে এগুলি স্ট্যান্ডলোন এলইডি (অ্যাডাফ্রুটের নিও পিক্সেল হিসাবে পরিচিত) হিসাবে উপলব্ধ। অথবা আপনি যদি কেবল একটি একক রঙ চালনা করেন তবে প্রতিটি ডাব্লুএস 2811 চিপ প্রতিটি একক এলইডি'র জন্য প্রতিটি আরজিবি আউটপুট ব্যবহার করে 3 টি এলইডি নিয়ন্ত্রণ করতে পারে।
আমি সম্প্রতি সবেমাত্র একটি প্রকল্প তৈরি করেছি যাতে এই জাতীয় 5 টি এলইডি ব্যবহার করা হয়: ডোর 1 খোলা / বন্ধ, ডোর 2 উন্মুক্ত / বন্ধ, মোটর 1 সক্রিয়, মোটর 2 সক্রিয় এবং শক্তি। "সক্রিয়" এলইডিগুলি দ্বৈত উদ্দেশ্য, যেহেতু আমি আরডুইনোর অভ্যন্তরে সক্রিয় মোটর এবং সবুজ থেকে সক্রিয় পতাকা হিসাবে ইনপুট আছি red
পিন অস্তিত্ব, 1 পিন এবং লাইব্রেরি ইনস্টল সহ, আপনি যে কোনও সংখ্যক এলইডি নিয়ন্ত্রণ করতে পারেন
আমি এই পদ্ধতিটি নিজের জন্য দাবি করি না, তবে আমি ওয়েবপৃষ্ঠায় এই ঝরঝরে কৌশলটি পেয়েছি MUX-DEMUX: CD4051 পার্লার ট্রিকস
আউটপুট ড্রাইভ বা ইনপুট পড়ার জন্য আপনি যে পদ্ধতিটি বেছে নিন (শিফট রেজিস্টারস, মাল্টিপ্লেক্সারস বা আরডুইনো পিনের সরাসরি সরাসরি ব্যবহার) আপনি সমান্তরাল সার্কিট জোড়ায় চালাক ব্যবহার করে আউটপুট বা ইনপুটগুলির সংখ্যা ডাবল করতে পারেন (দ্বৈত গঠনের জন্য) ইনপুট বা আউটপুট ব্যাংক ), প্রতিটি সমান্তরাল শাখায় বিরোধী ইন্দ্রিয়গুলিতে ডায়োড নিয়োগ করে এবং ইনপুট / আউটপুটগুলিকে উচ্চ এবং নিম্নে স্যুইচ করে।
আউটপুটগুলির পদ্ধতিটি ব্যাখ্যা করার জন্য (এই ক্ষেত্রে এলইডিগুলি উল্লেখ করুন যে অতিরিক্ত ডায়োডের প্রয়োজন নেই):
আপনি যদি এই উদাহরণে LEDs এর জুটিকে "ব্যাংক" হিসাবে বিবেচনা করেন এবং আপনি LED_0 আলোকিত করতে চান তবে আপনাকে পিন 17 থেকে HIGH এবং পিন 18 থেকে নীচে সেট করতে হবে। (পিন নম্বরগুলি বিভ্রান্তিকর, তবে তারা আমার সাথে পরবর্তী উদাহরণের সাথে মেলে)। LED_1 আলোকিত করার জন্য, আপনি কেবল পিনগুলি বিপরীত করুন। এলইডিগুলির ডায়োড প্রকৃতি অপরটিকে দূরে রেখে স্রোতকে বিপরীত দিকে প্রবাহিত রাখে।
ইনপুটগুলির পদ্ধতিটি ব্যাখ্যা করার জন্য (এই ক্ষেত্রে সিডিএস, নোট করুন যে অতিরিক্ত ডায়োডগুলি প্রয়োজন):
আপনি যদি কোনও সিডিএস লাইট সেন্সরে অ্যানালগ পড়তে চান তবে এটি কিছুটা জটিল হয়ে যায়। প্রবাহ নিয়ন্ত্রণ করতে প্রথমে আপনাকে প্রতিটি সেন্সরে একটি ডায়োড যুক্ত করতে হবে। দ্বিতীয়ত, যেহেতু আপনি মানগুলি পড়ছেন, তাই ভাসমান থেকে বাঁচতে আপনাকে ইনপুটগুলি উচ্চ বা কম টানতে হবে। অলস ব্যক্তি হওয়ায় আমি অভ্যন্তরীণ পুল-আপ প্রতিরোধকগুলি ব্যবহার করে তাদের উঁচুতে টানতে যাচ্ছি। CdS_0 পড়তে, আপনি পিন 17 মোডটিকে OUTPUT এ সেট করেছেন এবং এটিকে নিম্নে সেট করেছেন। এটি এটি স্থল করে তোলে। তারপরে আপনি পিন 18 মোডটি INPUT এ সেট করেছেন এবং পুল-আপ রেজিস্টারের সাথে জড়িত থাকার জন্য এটি হাইতে সেট করেছেন। এখন আপনি পিন 18 (ওরফে অ্যানালগ পিন 4) এ একটি পাঠ্য করতে প্রস্তুত are অন্যান্য সেন্সর অ্যাক্সেস করতে, কেবল মোড এবং আউটপুটগুলিতে স্যুইচ করুন।
সুতরাং, যদি আপনার সিডি 4051 8 পোর্ট মাল্টিপ্লেক্সার রয়েছে, আরডুইনোতে 5 টি পিন ব্যবহার করে (সাধারণ 3 এর পরিবর্তে), আপনি 16 টি ইনপুট বা আউটপুট, বা দুটিটির মিশ্রণ পেতে পারেন।
তেমনি, আপনার যদি 4067 16 পোর্ট মাল্টিপ্লেক্সর থাকে তবে আপনি 32 ইনপুট বা আউটপুট, বা দুটিটির মিশ্রণ পেতে পারেন।
উদাহরণস্বরূপ স্কেচটি হ'ল:
/*
* Example of getting 16 i/o from 5 pins using a CD4051
*
* Based on tutorial and code by david c. and tomek n.* for k3 / malmö högskola
* http://www.arduino.cc/playground/Learning/4051?action=sourceblock&ref=1
*/
int selPin[] = { 14, 15, 16 }; // select pins on 4051 (analog A0, A1, A2)
int commonPin[] = { 17, 18}; // common in/out pins (analog A3, A4)
int led[] = {LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW }; // stores eight LED states
int CdSVal[] = { 0, 0, 0, 0 }; // store last CdS readings
int cnt = 0; // main loop counter
int persistDelay = 100; // LED ontime in microseconds
void setup(){
Serial.begin(9600); // serial comms for troubleshooting (always)
for(int pin = 0; pin < 3; pin++){ // setup select pins
pinMode(selPin[pin], OUTPUT);
}
}
void loop(){
flashLEDs();
if (cnt == 0){
for(int x; x < 8; x++){
led[x] = random(2);
}
}
cnt++;
if (cnt > 100) { cnt = 0; }
}
void flashLEDs() {
for(int pin = 0; pin < 2; pin++) { // set common pins low
pinMode(commonPin[pin], OUTPUT);
digitalWrite(commonPin[pin], LOW);
}
for (int bank = 0; bank < 4; bank++) {
for(int pin = 0; pin < 3; pin++) { // parse out select pin bits
int signal = (bank >> pin) & 1; // shift & bitwise compare
digitalWrite(selPin[pin], signal);
}
if (led[bank * 2]){ // first LED
digitalWrite(commonPin[0], HIGH); // turn common on
delayMicroseconds(persistDelay); // leave led lit
digitalWrite(commonPin[0], LOW); // turn common off
}
if (led[bank * 2 + 1]){ // repeat for second LED
digitalWrite(commonPin[1], HIGH);
delayMicroseconds(persistDelay);
digitalWrite(commonPin[1], LOW);
}
}
}
আমি প্রথম লাইনে বলেছি, পুরো ব্যাখ্যাটি MUX-DEMUX এ পাওয়া যাবে : CD4051 পার্লার ট্রিকস
একটি জন্য বর্গ প্রকল্পের আমি 7 সেগমেন্ট ডিসপ্লে চালনা করার জন্য একটি CD4024 এবং দুই যাও Arduino পিন ব্যবহার করা হয়েছে।
এই পদ্ধতির কিছু সতর্কতা রয়েছে। উদাহরণস্বরূপ, high
একটি রিপল কাউন্টারের প্রথম আউটপুটটিতে একটি মান লিখতে কেবল একটি reset
এবং ক্লক পিন দু'বার টগল করা দরকার । তবে আপনি যদি high
সমস্ত এন পিনগুলিতে লিখতে চান তবে ক্লোক পিনটি 2 এন বার টগল করা প্রয়োজন এবং সেই সময়ের মধ্যে অন্যান্য সমস্ত পিন ক্রমাগত টগল করে চালু এবং বন্ধ থাকে।
যদি আপনার অ্যাপ্লিকেশনটি এই সীমাবদ্ধতাগুলি মোকাবেলা করতে পারে এবং আপনি পিনগুলিতে সংক্ষিপ্ত হন, তবে এটি অন্য বিকল্প।
বোনাস উত্তর: মাল্টিপ্লেক্সিং ইনপুটগুলির এখানে প্রচুর উদাহরণ রয়েছে , যার অনেকগুলি মাল্টিপ্লেক্সিং আউটপুটগুলিতেও প্রযোজ্য।
কিছুটা কাজের সাথে (একটি পৃথক বুটলোডার ইনস্টল করা) একটি ইউনোতে, আইসিএসপি 1 এবং জেপি 2 শিরোনামে অতিরিক্ত সাতটি আই / ও লাইন উপলব্ধ। প্রতিস্থাপন বুটলোডারকে হুডলডার 2 বলা হয় । এটি আপনাকে আনোতে Atmega328 এবং Atmega16U2 উভয় স্কেচ ইনস্টল করতে দেয়। একাধিক প্রসেসরের সাথে ডিল করা এই পদ্ধতিটি ব্যবহার করা থেকে প্রধান জটিলতা হবে।
একটি ইউনোতে, আইসিএসপি 1 এবং জেপি 2 শিরোনামগুলি পিনের সাথে সংযুক্ত হন পিটি 1 ... আতমেগা 16 ইউ 2 এর পিবি 7। এছাড়াও এটমেগা 16 ইউ 2 এর প্রায় 9 আই / ও পিন রয়েছে যার সাথে সার্কিট বোর্ডের কোনও সংযোগ নেই। একটি মাইক্রোস্কোপের অধীনে কাজ করা কোনও ব্যক্তি 16U2 এর মোট 18 আই / ও পিনের সাথে তারগুলি সংযুক্ত করতে সক্ষম হতে পারবেন, যখন তাদের সাধারণ সংযোগের সাথে আরও তিনটি আই / ও পিন রেখেছিলেন।
হুডলডার 2 মেগা বোর্ডগুলিতেও কাজ করে।