আরডুইনোতে 14 টিরও বেশি আউটপুট পিন রাখার উপায় আছে কি?


52

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


প্রসারণযোগ্যতার চেতনায়, আই 2 সি কি আরডুইনোর সাথেও একটি বিকল্প?
ক্রিস ও

@ ক্রিসো আই 2 সি বলতে কী বোঝ? কারণ আমি যা বুঝি শিফ্ট রেজিস্টারগুলি আই 2 সি হিসাবে বিবেচিত হবে।
জেভিহারল

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

পছন্দ করেছেন আই 2 সি, ওরফে টিডব্লিউআই এএ 2-তারের ইন্টারফেস, এসপিআই 3-তারের ইন্টারফেস হিসাবে বিবেচিত হতে পারে।
ক্লাউস-ডিয়েটার ওয়ার্জেচা

1
@ জেভিহারল আপনি কি ইতিমধ্যে আপনার প্রকল্পের জন্য একটি সমাধান নির্বাচন করেছেন? যদি হ্যাঁ, আপনার প্রশ্নটি সম্পাদনা করা এবং আপনার সমাধানটির সাথে মিলছে এমন উত্তর (বা নিকটতম) এটি গ্রহণ করা কার্যকর হবে।
jfpoil ব্যাখ্যা

উত্তর:


50

আরডুইনোতে উপলভ্য আউটপুট পিনগুলির সেটকে প্রসারিত করার একটি সাধারণ উপায় হ'ল 74HC595 আইসি (ডেটাশিটের লিঙ্ক ) এর মতো শিফ্ট রেজিস্টারগুলি ব্যবহার করা ।

এই চিপগুলি নিয়ন্ত্রণ করতে আপনার 3 টি পিন প্রয়োজন:

  1. ঘড়ি
  2. হুড়কা
  3. উপাত্ত

কোনও প্রোগ্রামে আপনি শিফটআউট () কমান্ডটি ব্যবহার করে শিফট রেজিস্ট্রারে একবারে ডেটা কিছুটা দিয়ে যান :

shiftOut(dataPin, clockPin, data); 

এই কমান্ডের সাহায্যে, আপনি dataভেরিয়েবলের 8 টি বিট দিয়ে 595 আইসিতে 8 টি আউটপুটগুলির প্রত্যেকটি সেট করেন ।

একটি 595 দিয়ে, আপনি 5 পিন অর্জন করেন (আইসিতে 8 টি, তবে আপনি এটির সাথে কথা বলার জন্য 3 ব্যয় করেন)। আরও আউটপুট পেতে, আপনি পরবর্তী সিরিজের আউট পিনের সাথে এর সিরিয়াল-আউট পিনটি সংযুক্ত করে একসাথে 595 এর একটি সিরিজ ডেইজি-চেইন করতে পারেন। আপনাকে 595 আইসির সমস্তটির ঘড়ি এবং ল্যাচ পিনগুলি একসাথে সংযুক্ত করতে হবে।

ফলস্বরূপ সার্কিট (একটি 595 ব্যবহার করে) এর মতো দেখাবে:

সার্কিট 595 শিফট রেজিস্টার ব্যবহার করে

উপরের চিত্রটি এই কোডড্রজেক্ট.কম ওয়েবপৃষ্ঠা থেকে নেওয়া হয়েছিল :

ল্যাচ পিনটি আপনি 595 এর আউটপুট স্থিতিশীল রাখতে ব্যবহার করতে ব্যবহৃত হয় যখন আপনি এটিতে ডেটা সরিয়ে রাখছেন:

digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, data); 
digitalWrite(latchPin, HIGH);

1
থেক্স, শিফট রেজিস্টার কীভাবে কাজ করে তা অন্তর্ভুক্ত করতে ভুলে গেছেন। আমি পরিকল্পনা করেছিলাম, তবে আমার কম্পিউটার থেকে দূরে চলে যেতে হয়েছিল এবং আমি ফিরে এসে আমার মন কেড়ে নিয়েছে। :)
জেভির্হল

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

2
এছাড়াও এটি প্রোগ্রামিংটিকে সহজ করে তোলে, আপনাকে ডেটা স্থানান্তর করতে হবে না এবং ঘড়িতে নাড়তে হবে এবং তারপরে ল্যাচটি সক্রিয় করতে হবে। আমি বেশ কিছুক্ষণের জন্য ঝাল সম্পর্কে জানলাম এবং আমি মনে করি এটি নতুনদের জন্য উপযুক্ত। সর্বোত্তম বিষয়টি হ'ল কোডটি ওপেনসোর্স হওয়ার কারণে আপনি কোডটি ব্যবহার করতে পারবেন এমনকি আপনি যদি নিজের ঝালটি ব্যবহার না করেন তবে আপনার নিজস্ব বোর্ড রয়েছে, বা একটি ব্রেডবোর্ড ব্যবহার করছেন।
জেভিহারল

1
ভুলে যাবেন না যে আপনি এগুলি অনির্দিষ্টকালের জন্য লাইনে (তাত্ত্বিকভাবে) লিঙ্ক করতে পারেন, সুতরাং 2 8-বিট রেজিস্টারগুলি 16-বিট হতে পারে।
স্কট এম

ধন্যবাদ! এখানে ক্ষেত্রে আশ্চর্যজনক codeproject বর্ণনা একটি সংরক্ষণাগার লিঙ্ক লিংক কি কখনো যায় নিচে archive.fo/1uvPE
akhmed

27

একটি আরডুইনো থেকে আরও পিন পেতে দুটি উপায় রয়েছে।

প্রথম উপায় হ'ল অ্যানালগ পিনগুলি ডিজিটাল আউটপুট পিন হিসাবে ব্যবহার করা, যা করা সত্যিই সহজ। আপনাকে যা করতে হবে তা হ'ল A0-A5 কে পিন 14,15,16,17,18,19 হিসাবে উল্লেখ করুন। উদাহরণস্বরূপ A0 পিন করতে উচ্চ লিখতে কেবল ডিজিটাল রাইট (14, HIGH) ব্যবহার করুন।

আরডুইনো থেকে আরও পিন পাওয়ার অন্য উপায়টি হ'ল শিফট রেজিস্টার ব্যবহার করে। এটি করার জন্য আমি ইজেড-এক্সপেন্ডার শিল্ডটি ব্যবহার করার পরামর্শ দিচ্ছি , যা আপনি ইজেড-এক্সপেন্ডার লাইব্রেরিটি আমদানি করার সময় ডিজিটাল রাইট ([২০-৩৫], হাই) ব্যবহার করতে পারবেন) এই ঝালটি কেবল পিনটিকে কেবল আউটপুট হিসাবে ব্যবহার করার অনুমতি দেয় এবং শিফট রেজিস্টারগুলিকে নিয়ন্ত্রণ করতে পিনগুলি 8,12 এবং 13 ব্যবহার করে।

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


3
আরডুইনো রেফারেন্স অনুসারে, আপনি আসলে 14 A0- 19 A5সংখ্যা ব্যবহার না করে সরাসরি - সনাক্তকারী ব্যবহার করতে পারেন । উদাহরণস্বরূপ digitalWrite(A0, HIGH),।
পিটার ব্লুমফিল্ড

3
@ পিটারআর.ব্লুমফিল্ড উভয়ই সঠিক, তবে আমি সরলতা এবং সহজলভ্যতার জন্য A0-A5 এর প্রস্তাব দিই। এলইডি জ্বলজ্বলে কোনও বড় বিষয় নয় তবে যখন আপনার বড় প্রকল্প হয় তখন খুব ছোট অভ্যাস যুক্ত হয়।
বেনামে পেঙ্গুইন

2
প্রকৃতপক্ষে, উভয়ই ইউএনও এবং সামঞ্জস্যপূর্ণ বোর্ডগুলিতে কাজটি পাবে, প্রাক্তন সর্বদা সঠিক শারীরিক (অ্যানালগ) পিনে মানচিত্র রাখার digitalWrite(A0)চেয়ে আরও সঠিক digitalWrite(14)। অন্য কোনও বোর্ডে, pin 14বাস্তবে নাও থাকতে পারে A0, যেমন pin 14মেগা-তে সিরিয়াল 3 রয়েছে TXএবং আপনার পরে থাকা এনালগ পিনটিকে প্রভাবিত করবে না। উদাহরণস্বরূপ, যদি digitalWriteকোনও এনালগ পিন ব্যবহার করে থাকেন তবে A0- A5রেফারেন্সটি ব্যবহার করুন ।
মাদিভাড

18

আপনি যদি এলইডি ড্রাইভ করতে চান, তবে আপনি এমন একটি MAX7219ও ব্যবহার করতে পারেন যা অতিরিক্ত সার্কিটরি ছাড়াই (LED৪ টি এলইডি ড্রাইভ করতে পারে) (সংকেতকে প্রশস্ত করার জন্য ট্রানজিস্টারের প্রয়োজন নেই)।

একটি MAX7219 চালানোর জন্য আরডুইনোতে কেবলমাত্র 3 আউটপুট পিন প্রয়োজন। এছাড়াও, আপনি এটির জন্য কয়েকটি আরডুইনো গ্রন্থাগার খুঁজে পেতে পারেন ।

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

আমি একাধিক 7-সেগমেন্টের LED ডিসপ্লেতে এটি সফলভাবে ব্যবহার করেছি।

ডাউনসাইড: এটি ব্যয়বহুল (প্রায় 10 ডলার)।


আমি MAX7219 সম্পর্কে ভুলে যাইনি, পোস্ট করার জন্য ধন্যবাদ!
জেভিহারোল

384 এলইডি ... হু! ইউএসবি অনুমানের জন্য প্লাস টু পিন। আপনি কী ধরনের বিরক্তিকর ট্রিনকেট তৈরি করতে পারেন তা ভাবুন (পর্যাপ্ত বিদ্যুত সরবরাহ সহ)।
বেনামে পেঙ্গুইন

17

আপনি চার্লিপ্লেক্সিং ব্যবহার করতে পারেন । এই কৌশলটি দিয়ে আপনি সরাসরি 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

এখানে চিত্র বর্ণনা লিখুন

আপনি এখানে একটি আরও ভাল টিউটোরিয়াল দেখতে পারেন ।


একটি বিষয় লক্ষণীয় যে এই কৌশলটি আপনাকে আরও সীসা নিয়ন্ত্রণ করতে দেয় তবে একই সাথে অগত্যা নয়।
কনটুর

1
হ্যাঁ, আপনি ঠিক বলেছেন কিন্তু দৃষ্টিভঙ্গির দৃistence়তার সাথে আপনি বিবেচনা করতে পারেন যে সেগুলি। প্রশ্নের এমন বিবরণ নেই।
ড্যানিয়েল গ্রিলো

চার্লিপ্লেক্সিং শিফট রেজিস্টার ব্যবহার না করে কেবল একাধিক এলইডি করার উপায় নয়।
linhartr22

1
@ linhartr22 আমি কখনও বলিনি যে এটিই একমাত্র উপায়। চার্লিপ্লেক্সিং এই সমস্যাটির জন্য একটি সাধারণ সমাধান। এবং আমার উত্তর ছিল 7 ম উত্তর। সুতরাং অন্যান্য সম্ভাবনা ইতিমধ্যে দেখিয়েছিল।
ড্যানিয়েল গ্রিলো 21

@ ড্যানিয়েলগ্রিলো আমার আরও নির্দিষ্ট হওয়া উচিত ছিল এবং ব্যাখ্যা করা উচিত যে কলাম এবং সারি মাল্টিপ্লেক্সিং, যা সাধারণত এলইডি কিউবে ব্যবহৃত হয়, শিফট রেজিস্টার ছাড়াই এবং চার্লিপ্লেক্সিংয়ের সীমাবদ্ধতা ছাড়াই কীভাবে করা যায়। একটি 4x4 সারির কলাম ম্যাট্রিক্স পৃথকভাবে 8 আই / ও লাইনগুলির সাথে 16 নেতৃত্বগুলি নিয়ন্ত্রণ করতে পারে। একটি 4x4x4 কিউব পৃথকভাবে 12 আই / ও লাইনগুলি (এমনকি ইউনোতে এনালগ এ0-এ 5 ডিজিটাল লাইন হিসাবে ব্যবহার করে) সাথে 64 নেতৃত্ব নিয়ন্ত্রণ করতে পারে।
linhartr22

13

I 2 C (ওয়্যার)

পোর্ট-প্রসারণকারীগুলির মতো অন্যান্য ডিভাইসে সংযোগ করতে আপনি আই 2 সি প্রোটোকল (ওয়্যার লাইব্রেরি) ব্যবহার করতে পারেন । উদাহরণস্বরূপ, MCP23017।

আমি এলসিডি বোর্ডের সাথে সংযোগ স্থাপনের জন্য এই চিপগুলির একটি ব্যবহার করেছি। MCP23017 এর 16 টি পোর্ট রয়েছে, যা ইনপুট বা আউটপুট হিসাবে কনফিগার করা যায়। ইনপুট হিসাবে তারা চাইলে বাধা বাড়াতে পারে।

এলসিডির সাথে 16 টির 13 টি সংযোগের উদাহরণ:

MCP23017 এলসিডি স্ক্রিনের সাথে সংযুক্ত

এখন আমরা কেবল 2 টি তার (এসডিএ / এসসিএল) প্লাস শক্তি এবং গ্রাউন্ড ব্যবহার করে আরডুইনোতে সংযুক্ত হয়েছি:

MCP23017 আরডুইনোর সাথে সংযুক্ত


কিছু তৃতীয় পক্ষের নির্মাতারা তাদের উপর 4 এক্স এমসিপি 23017 দিয়ে বোর্ড তৈরি করেছে, এটি আপনাকে 64 ইনপুট / আউটপুট দেয়:

সেন্টিপিড বোর্ড


মাল্টিপ্লেক্সার

8/16 পোর্টগুলির মধ্যে একটির সাথে একটি পিন সংযোগ করতে আপনি 74HC4051 (8 পোর্ট) বা 74HC4067 (16 পোর্ট) এর মতো এনালগ মাল্টিপ্লেক্সার ব্যবহার করতে পারেন, যেমন:

74HC4051 মাল্টিপ্লেজার

এগুলি দ্বি-দিকনির্দেশক, সুতরাং ইনপুট বা আউটপুট এক্সপেন্ডার হিসাবে ব্যবহৃত হতে পারে।


74HC595 সহ এসপিআই

এসপিআই ব্যবহার করে আপনি শিফট রেজিস্টার যেমন 74HC595- তে দ্রুত সিরিয়াল ডেটা পাঠাতে পারেন। এগুলি একসাথে ডেইজি বেঁধে রাখা যেতে পারে। এই উদাহরণে আমি কেবলমাত্র 3 আই / ও পিন (এমওএসআই / এমআইএসও / এসসিকে) প্লাস পাওয়ার এবং গ্রাউন্ডের সাথে 32 টি এলইডি নিয়ন্ত্রণ করছি।

74HC595 ড্রাইভিং 32 এলইডি


আমি একটি বাণিজ্যিক এলইডি সাইন এর ভিতরে দেখতে পেলাম যে LED২ টি এলইডি 74HC595 চিপ দ্বারা চালিত হয়েছিল।

স্ক্রোলিং LED সাইন

এটিতে একাধিক অক্ষরযুক্ত কনফিগারেশনে 9 টি চিপ কলামগুলি চালাচ্ছে (9 x 8 = 72 এলইডি) এবং একটি চিপ সারিগুলি চালাচ্ছে।


MAX7219 সহ এসপিআই

আপনি যদি কেবল এলইডি ড্রাইভ করতে চান তবে আপনি সাধারণত তাদের মাল্টিপ্লেক্স করতে পারেন। MAX7219 এলইডি ম্যাট্রিক্সগুলি ড্রাইভ করার জন্য নকশাকৃত করে উদাহরণস্বরূপ 7-বিভাগের প্রদর্শনগুলি সহজ করে তোলে:

MAX7219 7-বিভাগের প্রদর্শন সহ

বা 64-LED ম্যাট্রিক্স:

MAX7219 64-LED ম্যাট্রিক্স সহ

উভয় ক্ষেত্রে এগুলি একসাথে ডেইজি বেঁধে রাখা যেতে পারে, উদাহরণস্বরূপ:

MAX7219 ডেইজি-চেইন

এই সমস্ত উদাহরণগুলিতে কেবলমাত্র আরডুইনো (এমওএসআই / এমআইএসও / এসসিকে) প্লাস পাওয়ার এবং গ্রাউন্ডের 3 টি পিন ব্যবহার করা হয়।


এমসিপি 23 এস 17 সহ এসপিআই

পূর্বে উল্লিখিত 16-বন্দর বন্দর সম্প্রসারণকারী (MCP23017) এছাড়াও একটি এসপিআই ভেরিয়েন্টে (এমসিপি 23 এস 17) আসে, যা কার্যত অভিন্ন কাজ করে। এটি আরও একটি তার ব্যবহার করে তবে দ্রুত হবে।


অন্যান্য প্রোটোকল

এলইডি স্ট্রিপগুলি (নিওপিক্সেলগুলির মতো) এর নিজস্ব প্রোটোকল রয়েছে। জোশ লেভিনের ইউটিউবে একটি পোস্ট ছিল যেখানে লেখক ডিউমিলানোভ সহ 1000 পিক্সেলের বেশি গাড়ি চালিয়েছেন!


তথ্যসূত্র


12

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

একটি বিকল্প হ'ল আরও উন্নত বন্দর সম্প্রসারণকারী যেমন 16 বিট এমসিপি 23017 এবং এমসিপি 23 এস 17 ব্যবহার করা । এগুলি যথাক্রমে আই 2 সি এবং এসপিআই সমর্থন করে যার অর্থ আপনি এগুলিকে বেশ কয়েকটি অন্যান্য ডিভাইস (সম্ভাব্য বিভিন্ন ধরণের) সহ একটি বাসে রাখতে পারেন। বাসের প্রতিটি ডিভাইস স্বতন্ত্রভাবে সম্বোধন করা যেতে পারে, এর অর্থ আপনি সবার সাথে কথা বলার জন্য কেবল 2 বা 3 পিন প্রয়োজন। আপডেটের গতি সাধারণত অত্যন্ত দ্রুত হয়, সুতরাং আপনি কোনও আরডুইনো প্রকল্পে উল্লেখযোগ্য বিলম্ব (অর্থাত্ ট্রান্সমিশন বিলম্ব) অনুভব করার সম্ভাবনা কম।

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


বাহ, আমি তাদের সম্পর্কে কখনই জানতাম না, তাদের মধ্যে খারাপ চেহারা!
জেভির্হল

আপনি কি এলইডি নিয়ন্ত্রণে আই 2 সি ব্যবহার করতে পারেন?
প্রো প্রশ্ন

1
@ প্রোকউ আপনি সরাসরি আই 2 সি ব্যবহার করে স্ট্যান্ডার্ড এলইডি নিয়ন্ত্রণ করতে পারবেন না। তবে এমন কিছু এলইডি পণ্য পাওয়া সম্ভব যা একটি বিল্ট-ইন আই 2 সি ড্রাইভার রয়েছে। এটি সাধারণত প্রচুর এলইডি, যেমন স্ট্রিপ বা ম্যাট্রিক্স সহ পণ্যগুলির জন্য।
পিটার ব্লুমফিল্ড

8

রিকার্ডোর জবাব ছাড়াও , উইকিপিডিয়া শিফট রেজিস্টারগুলিতে কী বলেছে :

শিফট রেজিস্টারের সর্বাধিক সাধারণ ব্যবহারগুলির মধ্যে একটি হ'ল সিরিয়াল এবং সমান্তরাল ইন্টারফেসের মধ্যে রূপান্তর। [...] এসআইপিওও রেজিস্টারগুলি সাধারণত মাইক্রোপ্রসেসরগুলির আউটপুটটির সাথে সংযুক্ত থাকে যখন উপলব্ধ হওয়ার চেয়ে আরও সাধারণ উদ্দেশ্য ইনপুট / আউটপুট পিনের প্রয়োজন হয়। এটি বেশ কয়েকটি বাইনারি ডিভাইসগুলিকে কেবল দুটি বা তিনটি পিন ব্যবহার করে নিয়ন্ত্রণ করতে দেয় তবে সমান্তরাল I / O এর চেয়ে ধীর করে দেয়।

ইন নিবন্ধ রিকার্ডো লিঙ্ক আপনি শিফট নিবন্ধন ডায়াগ্রাম দেখতে পারেন।

শিফট রেজিস্টার ডায়াগ্রাম

এখানে যা ঘটে তা হ'ল আপনি 8 টি পিনের ডেটা এক সিক্যুয়ালে রেখেছেন এবং প্রতিটি ঘড়ির জন্য শিফট রেজিস্টারে টিক চিহ্ন দেওয়া হবে (বাইনারি ডেটা প্রতিটি ল্যাচ থেকে পরের দিকে সরানো হবে) যতক্ষণ না এটি "বৃত্ত তৈরি করে" অর্থাৎ প্রথম বিটটি তৈরি করে শেষ পিন এ পৌঁছেছে। শিফ্ট রেজিস্টারগুলিতে একটি ইনপুট থাকে যেখানে আপনি শিফটিংটি চালু / বন্ধ করতে পারেন যাতে ডেটা অবস্থানের দিকে স্থানান্তরিত হওয়ার পরে স্থিতি রাখা যায়। একটি সাধারণ বিক্ষোভের জন্য নিম্নলিখিত অ্যানিমেশনটি দেখুন।

শিফট রেজিস্টার অ্যানিমেশন

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

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


1
অতিরিক্ত তথ্যের জন্য এবং সুন্দর অ্যানিমেটেড জিআইএফ এবং এর ডড্যাটিক প্রভাবের জন্য +1! আপনি জিআইএফ কোথায় পেলেন? নাকি বানিয়েছ?
রিকার্ডো

1
@ রিকার্ডো আমি ডিজিটাল ওয়ার্ক দিয়ে সার্কিট তৈরি করেছি, তারপরে স্ক্রিন প্রিন্ট, সম্পাদনা, জিআইএফ অ্যানিমেটার।
টোটেমেডলি

6

আপনি ইতিমধ্যে লিখেছেন, আপনি ডিজিটাল আউটপুট হিসাবে TX এবং RX সহ সমস্ত পিন ব্যবহার করতে পারেন। আমি এটি কিছুক্ষণ আগে একটি বিক্ষোভকারীকে করেছি এবং একটি ভিডিও রেকর্ড করেছি - 20 টি পিনে 20 এলইডিএস - এর পরিবর্তে অযৌক্তিক প্রকল্পের।

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

রিকার্ডো দ্বারা বর্ণিত সাধারণভাবে শিফট রেজিস্টার এবং 595 ব্যবহারের সুপারিশ করা হয়।

  • তারা সস্তা!
  • এগুলি ক্যাসকেড করা বরং সহজ।
  • আপনি যখন হার্ডওয়্যার-এসপিআই ব্যবহার করেন তখন প্রচুর গতি অর্জন করা যায়।

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

এখানে, 8x11 নেতৃত্বের প্রদর্শন চালাতে 595 টির একটি গোছা ব্যবহার করা হয়েছিল। যেহেতু 12 ভি এসএমডি নেতৃত্বে একটি স্ট্রাইপ থেকে নেতৃত্বগুলি কেটে নেওয়া হয়েছিল , তাই শিফট রেজিস্টারগুলির আউটপুট পিনগুলিতে আবদ্ধ একটি অতিরিক্ত বিদ্যুৎ সরবরাহ এবং কিছু ইউডিএন 2803 এ ডার্লিংটন অ্যারেগুলি প্রয়োজনীয় ছিল।

অন্যান্য সাধারণ পদ্ধতির মধ্যে PCF8574 (A) 8 বিট পোর্ট সম্প্রসারণকারীদের ব্যবহার অন্তর্ভুক্ত থাকবে, যা আই 2 সি বাসের মাধ্যমে নিয়ন্ত্রণ করা হয়।

যাইহোক, আমি 595 শিফট রেজিস্টারগুলি প্রথমে চেষ্টা করে দেব।

আপনার যদি কয়েকটি আরজিবি নেতৃত্বে নিয়ন্ত্রণ করতে হয় তবে আপনি আরও বিশেষায়িত সমাধানগুলি সন্ধান করতে পারেন। কিছু আরজিবি নেতৃত্বে তাদের নিজস্ব ডাব্লুএস 2812 নিয়ে আসে । এই সূক্ষ্ম টুকরাগুলি ক্যাসকেড করা যায় (1-ওয়্যার বাস) এবং তাদের চেইনে তাদের অবস্থানের মাধ্যমে সম্বোধন করা হয়।


3

যদি এটি সমস্তই এলইডি সম্পর্কে হয় তবে ডাব্লুএস 2812 বি এলইডি স্ট্রিপগুলি, বা কেবল চালকেরা নিজেরাই চিপস? আপনি কেবলমাত্র একটি পিন ব্যবহার করে কার্যত সীমাহীন সংখ্যক এলইডি নিয়ন্ত্রণ করতে পারেন!

যদিও স্ট্রিপগুলিতে লোকেরা এর ব্যবহার করে তবে এগুলি স্ট্যান্ডলোন এলইডি (অ্যাডাফ্রুটের নিও পিক্সেল হিসাবে পরিচিত) হিসাবে উপলব্ধ। অথবা আপনি যদি কেবল একটি একক রঙ চালনা করেন তবে প্রতিটি ডাব্লুএস 2811 চিপ প্রতিটি একক এলইডি'র জন্য প্রতিটি আরজিবি আউটপুট ব্যবহার করে 3 টি এলইডি নিয়ন্ত্রণ করতে পারে।

আমি সম্প্রতি সবেমাত্র একটি প্রকল্প তৈরি করেছি যাতে এই জাতীয় 5 টি এলইডি ব্যবহার করা হয়: ডোর 1 খোলা / বন্ধ, ডোর 2 উন্মুক্ত / বন্ধ, মোটর 1 সক্রিয়, মোটর 2 সক্রিয় এবং শক্তি। "সক্রিয়" এলইডিগুলি দ্বৈত উদ্দেশ্য, যেহেতু আমি আরডুইনোর অভ্যন্তরে সক্রিয় মোটর এবং সবুজ থেকে সক্রিয় পতাকা হিসাবে ইনপুট আছি red

পিন অস্তিত্ব, 1 পিন এবং লাইব্রেরি ইনস্টল সহ, আপনি যে কোনও সংখ্যক এলইডি নিয়ন্ত্রণ করতে পারেন


2

আমি এই পদ্ধতিটি নিজের জন্য দাবি করি না, তবে আমি ওয়েবপৃষ্ঠায় এই ঝরঝরে কৌশলটি পেয়েছি 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 টি ইনপুট বা আউটপুট, বা দুটিটির মিশ্রণ পেতে পারেন।

সিডি 4051 ব্যবহার করে 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 পার্লার ট্রিকস


1

একটি জন্য বর্গ প্রকল্পের আমি 7 সেগমেন্ট ডিসপ্লে চালনা করার জন্য একটি CD4024 এবং দুই যাও Arduino পিন ব্যবহার করা হয়েছে।

এই পদ্ধতির কিছু সতর্কতা রয়েছে। উদাহরণস্বরূপ, highএকটি রিপল কাউন্টারের প্রথম আউটপুটটিতে একটি মান লিখতে কেবল একটি resetএবং ক্লক পিন দু'বার টগল করা দরকার । তবে আপনি যদি highসমস্ত এন পিনগুলিতে লিখতে চান তবে ক্লোক পিনটি 2 এন বার টগল করা প্রয়োজন এবং সেই সময়ের মধ্যে অন্যান্য সমস্ত পিন ক্রমাগত টগল করে চালু এবং বন্ধ থাকে।

যদি আপনার অ্যাপ্লিকেশনটি এই সীমাবদ্ধতাগুলি মোকাবেলা করতে পারে এবং আপনি পিনগুলিতে সংক্ষিপ্ত হন, তবে এটি অন্য বিকল্প।

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


7-সেগমেন্টের প্রদর্শন চালানোর জন্য 7-পর্যায়ের কাউন্টার ব্যবহার করা একটি আপোস্টিমাল পদ্ধতির বলে মনে হয় যে কারণে আপনি নিজেরাই ইঙ্গিত করেছেন।
jfpoil ব্যাখ্যা

1

কিছুটা কাজের সাথে (একটি পৃথক বুটলোডার ইনস্টল করা) একটি ইউনোতে, আইসিএসপি 1 এবং জেপি 2 শিরোনামে অতিরিক্ত সাতটি আই / ও লাইন উপলব্ধ। প্রতিস্থাপন বুটলোডারকে হুডলডার 2 বলা হয় । এটি আপনাকে আনোতে Atmega328 এবং Atmega16U2 উভয় স্কেচ ইনস্টল করতে দেয়। একাধিক প্রসেসরের সাথে ডিল করা এই পদ্ধতিটি ব্যবহার করা থেকে প্রধান জটিলতা হবে।

একটি ইউনোতে, আইসিএসপি 1 এবং জেপি 2 শিরোনামগুলি পিনের সাথে সংযুক্ত হন পিটি 1 ... আতমেগা 16 ইউ 2 এর পিবি 7। এছাড়াও এটমেগা 16 ইউ 2 এর প্রায় 9 আই / ও পিন রয়েছে যার সাথে সার্কিট বোর্ডের কোনও সংযোগ নেই। একটি মাইক্রোস্কোপের অধীনে কাজ করা কোনও ব্যক্তি 16U2 এর মোট 18 আই / ও পিনের সাথে তারগুলি সংযুক্ত করতে সক্ষম হতে পারবেন, যখন তাদের সাধারণ সংযোগের সাথে আরও তিনটি আই / ও পিন রেখেছিলেন।

হুডলডার 2 মেগা বোর্ডগুলিতেও কাজ করে।


0

এখানে ভাল উত্তরগুলির প্রচুর পরিমাণ রয়েছে, তবে আপনি যদি আপনার সময়টি উপার্জন করেন তবে আপনি একটি মেগা কেনা সস্তা বলে মনে করবেন।

আমার 3/2-d মূল্য।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.