সুচিপত্র:

74HC164 শিফট রেজিস্টার এবং আপনার Arduino: 9 ধাপ
74HC164 শিফট রেজিস্টার এবং আপনার Arduino: 9 ধাপ

ভিডিও: 74HC164 শিফট রেজিস্টার এবং আপনার Arduino: 9 ধাপ

ভিডিও: 74HC164 শিফট রেজিস্টার এবং আপনার Arduino: 9 ধাপ
ভিডিও: STC-3028 Thermostat with Heat and Humidity Fully Explained and demonstrated 2024, জুলাই
Anonim
74HC164 শিফট রেজিস্টার এবং আপনার আরডুইনো
74HC164 শিফট রেজিস্টার এবং আপনার আরডুইনো
74HC164 শিফট রেজিস্টার এবং আপনার আরডুইনো
74HC164 শিফট রেজিস্টার এবং আপনার আরডুইনো

শিফট রেজিস্টারগুলি ডিজিটাল লজিকের একটি খুব গুরুত্বপূর্ণ অংশ, তারা সমান্তরাল এবং সিরিয়াল জগতের মধ্যে আঠালো হিসাবে কাজ করে। তারা তারের সংখ্যা কমায়, পিন ব্যবহার করে এবং এমনকি তাদের তথ্য সংরক্ষণ করতে সক্ষম হয়ে আপনার সিপিইউ থেকে লোড নিতে সাহায্য করে। আজ আমি যেটা নিয়ে আলোচনা করবো তা হল 74HC164 8 বিট, প্যারালাল আউট সিরিয়াল, নন ল্যাচড, শিফট রেজিস্টার। কেন? আচ্ছা একজনের জন্য এটি সেখানে সবচেয়ে মৌলিক শিফট রেজিস্টারগুলির মধ্যে একটি, যা এটি সম্পর্কে শেখা সহজ করে তোলে, কিন্তু এটি আমার কাছে একমাত্র ছিল (lol!), এবং কিছু নমুনা স্কেচ এবং নেতৃত্বাধীন সার্কিট সহ একটি arduino এর সাথে এটি ইন্টারফেস করুন আমি আশা করি আপনি সবাই উপভোগ করবেন!

ধাপ 1: সুতরাং, শিফট নিবন্ধন কি?

সুতরাং, শিফট নিবন্ধন কি?
সুতরাং, শিফট নিবন্ধন কি?

পূর্বে উল্লিখিত হিসাবে তারা সব বিভিন্ন স্বাদে আসে, এবং আমি এটাও উল্লেখ করেছি যে আমি 74HC164 8 বিট ব্যবহার করছি, সমান্তরালভাবে সিরিয়াল, নন ল্যাচড, শিফট রেজিস্টার এর মানে কি?!? প্রথমত, নাম 74-এর অর্থ 74xx লজিক পরিবারের অংশ, এবং যেহেতু এর যুক্তি এটি সরাসরি খুব বেশি বর্তমানকে নিয়ন্ত্রণ করতে পারে না (পুরো চিপের জন্য 16-20ma সাধারণ), এটি কেবল চারপাশে সংকেত দেয়, কিন্তু এর অর্থ এই নয় যে সংকেতটি একটি ট্রানজিস্টারে যাচ্ছে না যা একটি উচ্চ বর্তমান লোড স্যুইচ করতে পারে। পাওয়ার ডিভাইস এবং 2 থেকে 5 ভোল্টে চলবে (তাই যদি আপনি 3.3 ভোল্টের আরডুইনো ব্যবহার করেন আপনার ঠিক আছে) এছাড়াও এটি উচ্চ গতিতে সঠিকভাবে কাজ করতে পারে এই বিশেষ চিপটির একটি সাধারণ গতি 78mhz আছে, কিন্তু আপনি যত ধীর বা দ্রুত যেতে পারেন (যতক্ষণ না এটি গুজব শুরু করে) যতক্ষণ আপনি চান www.kpsec.freeuk.com/compferences/74series.htm164 এই চিপের মডেল নম্বর, wikipediaen.wikipedia.org/wiki/List_of_7400_series_integrated_circuits এ তাদের একটি বড় চার্ট রয়েছে, পরবর্তী 8 বিট একটি শিফট রেজিস্টার ফ্লিপ ফ্লপ সার্কিট দ্বারা গঠিত, একটি ফ্লিপ ফ্লপ মেমরি 1 বিট, এই এক হা s 8 (বা মেমরির 1 বাইট)। যেহেতু এটি মেমরি, আপনার যদি রেজিস্টারটি আপডেট করার প্রয়োজন না হয় তবে আপনি কেবল এটির সাথে "কথা বলা" বন্ধ করতে পারেন এবং এটি আপনি যে অবস্থায়ই রেখেছেন সেখানেই থাকবে, যতক্ষণ না আপনি এটির সাথে "আবার" কথা বলবেন বা ক্ষমতা পুনরায় সেট করবেন। অন্যান্য 7400 লজিক সিরিজের শিফট রেজিস্টার সমান্তরালভাবে 16 বিট সিরিয়াল পর্যন্ত যেতে পারে এর মানে হল আপনার arduino এটি সিরিয়ালভাবে ডেটা পাঠায় (একের পর এক ডাল বন্ধ করে) এবং শিফট রেজিস্টার সঠিক আউটপুট পিনে প্রতিটি বিট রাখে। এই মডেলের জন্য শুধুমাত্র 2 টি তারের নিয়ন্ত্রণের প্রয়োজন হয়, তাই আপনি arduino এ 2 টি ডিজিটাল পিন ব্যবহার করতে পারেন, এবং সেই 2 টি থেকে 8 টি বেশি ডিজিটাল আউটপুট ভেঙে ফেলতে পারেন কিছু অন্যান্য মডেল সিরিয়াল আউট সমান্তরাল, তারা একই কাজ কিন্তু arduino ইনপুট হিসাবে (উদাহরণস্বরূপ একটি এনইএস গেমপ্যাড) অ ল্যাচড এটি আপনার প্রয়োজন হলে এই চিপের পতন হতে পারে। যেহেতু সিরিয়াল এর মাধ্যমে একটি শিফট রেজিস্টারে ডেটা প্রবেশ করে, এটি প্রথম আউটপুট পিনে দেখায়, যখন একটি ঘড়ির পালস প্রবেশ করে, প্রথম বিট 1 টি স্থানে স্থানান্তরিত হয়, আউটপুটগুলিতে একটি স্ক্রোলিং প্রভাব তৈরি করে, উদাহরণস্বরূপ 00000001 আউটপুটগুলিতে প্রদর্শিত হবে 10100100010000100100100100000000000001 হিসাবে যদি আপনি অন্য যুক্তিযুক্ত ডিভাইসের সাথে কথা বলছেন যারা একই ঘড়ি ভাগ করছে এবং এটি আশা করে না, তাহলে এটি সমস্যা সৃষ্টি করতে পারে। ল্যাচড শিফট রেজিস্টারগুলির মেমরির একটি অতিরিক্ত সেট থাকে, তাই একবার রেজিস্টারে প্রবেশ করার পরে ডেটা হয়ে গেলে আপনি একটি সুইচ উল্টাতে পারেন এবং আউটপুটগুলি দেখাতে পারেন, তবে এটি অন্য তারের, সফ্টওয়্যার এবং জিনিসগুলি রাখার জন্য যোগ করে। এই নির্দেশের ক্ষেত্রে আমরা LED ডিসপ্লেগুলিকে নিয়ন্ত্রণ করছি, স্ক্রোলিং এফেক্ট এত দ্রুত ঘটে যে আপনি এটি দেখতে পাচ্ছেন না (আপনি যখন প্রথমবার চিপ চালু করেন), এবং একবার বাইট শিফট রেজিস্টারে থাকলে আর স্ক্রলিং নেই আমরা বারগ্রাফ টাইপ, 7 সেগমেন্ট নিয়ন্ত্রণ করব, এবং একটি 16LED 4x4 ডট ম্যাট্রিক্স এই চিপ এবং সফ্টওয়্যারের সাথে আরডুইনোতে শুধুমাত্র 2 ডিজিটাল পিন (+ পাওয়ার এবং গ্রাউন্ড) ব্যবহার করে

ধাপ 2: বেসিক ওয়্যারিং এবং অপারেশন

বেসিক ওয়্যারিং এবং অপারেশন
বেসিক ওয়্যারিং এবং অপারেশন
বেসিক ওয়্যারিং এবং অপারেশন
বেসিক ওয়্যারিং এবং অপারেশন

ওয়্যারিং 74HC164 একটি 14 পিন চিপ, এতে 4 টি ইনপুট পিন, 8 টি আউটপুট পিন, পাওয়ার এবং গ্রাউন্ড আছে, তাই উপরে থেকে শুরু করা যাক পিন 1 এবং 2 উভয় সিরিয়াল ইনপুট, সেগুলি একটি লজিক্যাল এবং গেট হিসাবে সেটআপ করা হয়, যার মানে বিটকে 1 হিসাবে দেখানোর জন্য তাদের উভয়কেই লজিক হাই (অর্থাৎ 5 ভোল্ট) হতে হবে, উভয় ক্ষেত্রে একটি কম স্টেট (0 ভোল্ট) শূন্য হিসাবে পড়বে। সফটওয়্যারে এর মোকাবিলা করার জন্য আমাদের এটির খুব সহজ এবং প্রয়োজন নেই, তাই একটি চয়ন করুন এবং এটি V+ এর সাথে সংযুক্ত করুন যাতে এটি সর্বদা উচ্চ হয়। আমি পিন 1 থেকে পিন 14 (V+) পর্যন্ত একটি জাম্পার ব্যবহার করতে পছন্দ করি কারণ আপনি কেবল চিপের উপর একটি ব্রেডবোর্ড জাম্পার পপ করতে পারেন। একটি অবশিষ্ট সিরিয়াল ইনপুট (আমার স্কিম্যাটিক্সে পিন 2) arduino এর ডিজিটাল পিন 2 পাবে। 74HC164 এর পিন 3, 4, 5, এবং 6 হল আউটপুট এর প্রথম 4 বাইট পিন 7 গ্রাউন্ডে সংযোগ করে ডানদিকে লাফিয়ে, পিন 8 ঘড়ির পিন, এইভাবে শিফট রেজিস্টার জানে যে পরবর্তী সিরিয়াল বিট এটি পড়ার জন্য প্রস্তুত, এটি আর্ডুইনোতে ডিজিটাল পিন 3 এর সাথে সংযুক্ত হওয়া উচিত।, আপনার কাছে এটি ব্যবহার করার বিকল্প আছে, কিন্তু এই অস্পষ্টযোগ্য কিছুই করে না, তাই এটি V+পিন 10, 11 12 এবং 13 এর সাথে সংযুক্ত করুন আউটপুট পিনের 14 টি শেষ 4 বাইট চিপস পাওয়ার অপারেশন প্রথমে আপনাকে সিরিয়াল ইনপুট সেট করতে হবে রেজিস্টারের (আর্ডুইনোতে ডিজিটাল পিন 2) উচ্চ বা নিম্ন, পরবর্তীতে আপনাকে ঘড়ির পিন (ডিজিটাল পিন 3) কম থেকে উঁচু করতে হবে, শিফট রেজিস্টার সিরিয়াল ইনপুটের তথ্য পড়বে এবং আউটপুট পিনগুলি স্থানান্তর করবে 1, 8 বার পুনরাবৃত্তি করুন এবং আপনি সমস্ত 8 টি আউটপুট সেট করেছেন এটি arduino IDE তে লুপ এবং ডিজিটাল লেখার জন্য হাতে করা যেতে পারে, কিন্তু যেহেতু টি তার একটি খুব সাধারণ হার্ডওয়্যার লেভেল কমিউনিকেশন (SPI) তাদের একটি একক ফাংশন আছে যা আপনার জন্য এটি করে। shiftOut (dataPin, clockPin, bitOrder, value) শুধু এটা বলুন যেখানে ডেটা এবং ঘড়ির পিনগুলি arduino- এর সাথে সংযুক্ত আছে, কোন পদ্ধতিতে ডেটা পাঠাতে হবে এবং কি পাঠাতে হবে, এবং এর জন্য আপনার যত্ন নেওয়া হয়েছে (সহজ)

ধাপ 3: প্রকল্প

প্রকল্প
প্রকল্প

ঠিক আছে, পর্যাপ্ত বক্তৃতা এবং তত্ত্ব, এই চিপ দিয়ে কিছু মজাদার জিনিস করতে দিন! এই নির্দেশের মধ্যে চেষ্টা করার জন্য 3 টি প্রকল্প রয়েছে, প্রথম 2 টি সহজ এবং মুহূর্তের মধ্যে রুটিবোর্ড করা যেতে পারে। তৃতীয়টি, 4x4 নেতৃত্বাধীন ম্যাট্রিক্স, নেতৃত্বাধীন তারের কারণে নির্মাণের জন্য আরও সময় এবং চিন্তাভাবনা প্রয়োজন। অংশগুলির তালিকা প্রকল্প 1: '2 ওয়্যার' বারগ্রাফ LED ডিসপ্লে কন্ট্রোলার 1 * 74HC164 শিফট রেজিস্টার 1 * সোল্ডারলেস ব্রেডবোর্ড 1 * আরডুইনো, বা আরডুইনো উপযুক্ত 1 * 330 ওহম 1/4 ওয়াট রোধ 1 * সাধারণ ক্যাথোড সাত সেগমেন্ট ডিসপ্লে 9 * জাম্পার তারের প্রকল্প 3: '2 ওয়্যার' 4x4 নেতৃত্বাধীন ম্যাট্রিক্স ডিসপ্লে 1 * 74HC164 শিফট রেজিস্টার 1 * আরডুইনো, বা আরডুইনো সামঞ্জস্যপূর্ণ (5v) 4 * 150 ওহম 1 1/4 ওয়াট রোধ 8 * 1 কোহম 1/8 ওয়াট প্রতিরোধক (বা বড়) 8 * এনপিএন ট্রানজিস্টর (2n3904 বা আরও ভাল) 16 * স্বাভাবিক আউটপুট লাল এলইডি এটি নির্মাণের একটি মাধ্যম এবং 5 ভোল্ট শক্তি নিয়ন্ত্রণ করে যা 160+মা (আপনি করতে পারেন) ব্রেক লাইটের মত সব এলইডি একসাথে চালু করুন)

ধাপ 4: প্রকল্প 1 [pt 1]: '2 ওয়্যার' বারগ্রাফ LED ডিসপ্লে কন্ট্রোলার হার্ডওয়্যার

প্রকল্প 1 [pt 1]: '2 ওয়্যার' বারগ্রাফ LED ডিসপ্লে কন্ট্রোলার হার্ডওয়্যার
প্রকল্প 1 [pt 1]: '2 ওয়্যার' বারগ্রাফ LED ডিসপ্লে কন্ট্রোলার হার্ডওয়্যার
প্রকল্প 1 [pt 1]: '2 ওয়্যার' বারগ্রাফ LED ডিসপ্লে কন্ট্রোলার হার্ডওয়্যার
প্রকল্প 1 [pt 1]: '2 ওয়্যার' বারগ্রাফ LED ডিসপ্লে কন্ট্রোলার হার্ডওয়্যার

পরিকল্পিত অনুযায়ী arduino এবং শিফট রেজিস্টার হুক আপ, আমি ইতিমধ্যে একটি 10 সেগমেন্ট bargraph প্রদর্শন রুটিবোর্ড ব্যবহারের জন্য প্রস্তুত আছে এবং যে আপনি ছবিতে দেখতে পাবেন, কিন্তু আপনি ব্যক্তিগত নেতৃত্বে একই কাজ করতে পারেন দ্বিতীয় পৃষ্ঠায় আমি বলেছিলাম যে এগুলি ড্রাইভার ডিভাইস নয়, এগুলি যুক্তিযুক্ত ডিভাইস, যার মধ্যে অল্প পরিমাণে কারেন্ট তাদের মধ্য দিয়ে যেতে সক্ষম। 8 এলইডি চালানোর জন্য, সার্কিট সরল রাখার সময়, এবং শিফট রেজিস্টার রান্না না করার জন্য, প্রয়োজন যে আমরা বর্তমানকে কিছুটা সীমাবদ্ধ করি। সাপ্লাই গ্রাউন্ডের জন্য তাদের একটি 30০ ওহম রেসিস্টারের মধ্য দিয়ে যেতে হবে, যা সমস্ত এলইডি সম্ভবত 10 এমএ (5 ভোল্টে) ব্যবহার করতে পারে তার মোট পরিমাণ সীমাবদ্ধ করে। এই উদাহরণ, LED গুলিকে তাদের যথাযথ প্রবাহে চালানোর জন্য আপনাকে একটি ট্রানজিস্টার ertোকাতে হবে যেখানে শিফট রেজিস্টার একটি উচ্চতর বর্তমান উৎস চালু / বন্ধ করতে পারে (প্রকল্প 3 দেখুন) শিফট রেজিস্টারের ডেটা পিন (পিন 2) প্রয়োজন আরডুইনো ডিজিটাল পিন # 2 এর সাথে সংযোগ স্থাপনের জন্য শিফট রেজিস্টারের ক্লক পিন (পিন 8) কে আরডুইনো ডিজিটাল পিন # 3 এর সাথে সংযুক্ত করতে হবে

ধাপ 5: প্রকল্প 1 [pt 2]: '2 ওয়্যার' বারগ্রাফ LED ডিসপ্লে কন্ট্রোলার সফটওয়্যার

প্রকল্প 1 [পিটি 2]: '2 ওয়্যার' বারগ্রাফ LED ডিসপ্লে কন্ট্রোলার সফটওয়্যার
প্রকল্প 1 [পিটি 2]: '2 ওয়্যার' বারগ্রাফ LED ডিসপ্লে কন্ট্রোলার সফটওয়্যার
প্রকল্প 1 [পিটি 2]: '2 ওয়্যার' বারগ্রাফ LED ডিসপ্লে কন্ট্রোলার সফটওয়্যার
প্রকল্প 1 [পিটি 2]: '2 ওয়্যার' বারগ্রাফ LED ডিসপ্লে কন্ট্রোলার সফটওয়্যার

উদাহরণ 1: arduino IDE এর ভিতরে "_164_bas_ex.pde" ফাইলটি খুলুন, এটি একটি সহজ স্কেচ যা আপনাকে বারগ্রাফ ডিসপ্লেতে LED গুলি চালু বা বন্ধ করতে দেয় প্রথম 2 লাইন পিন নম্বর নির্ধারণ করে যা আমরা ডেটা এবং ঘড়ির জন্য ব্যবহার করব, আমি কনস্ট ইন্টিজারের উপর #ডিফাইন ব্যবহার করুন, আমি মনে রাখা সহজ মনে করি, এবং এক বা অন্যের কোন সুবিধা নেই একবার কম্পাইল করা #ডিফাইন ডেটা 2 #ক্লক 3 এর সংজ্ঞা দিন পরবর্তী অকার্যকর সেটআপ ফাংশন, এটি শুধুমাত্র একবার চালায়, তাই আরডুইনো চালু হয় চালু, শিফট রেজিস্টার সেট করে এবং অন্য কিছু করার নেই। অকার্যকর সেটআপ ফাংশনের ভিতরে আমরা ঘড়ি এবং ডেটা পিনগুলিকে OUTPUT পিন হিসাবে সেট করি, তারপর shiftOut ফাংশন ব্যবহার করে আমরা ডেটা পাঠাই শিফট রেজিস্টারে অকার্যকর সেটআপ () {পিনমোড (ঘড়ি, আউটপুট); // ঘড়ি পিন একটি আউটপুট pinMode করুন (তথ্য, আউটপুট); // ডেটা পিনকে আউটপুট শিফট আউট করুন (ডেটা, ক্লক, এলএসবিএফআইআরএসটি, বি 10101010); // শিফট রেজিস্টারে এই বাইনারি মানটি পাঠান} শিফট আউট ফাংশনে আপনি দেখতে পারেন এর আর্গুমেন্টস ডেটা হল পিন, ক্লক হল ক্লক পিন LSBFIRST বাইনারি নোটেশন (Bxxxxxxxx) 7 ম B এর আগের উপাদান হল সর্বনিম্ন লক্ষণীয় বিট প্রথম, এটি প্রথমে খাওয়ানো হয় তাই এটি সমস্ত 8 বিট খাওয়ানোর পরে শেষ আউটপুটে শেষ হয়ে যায়, বিভিন্ন প্যাটার্ন চালু বা বন্ধ করার জন্য বিভিন্ন মান দিয়ে খেলার চেষ্টা করুন এবং পরিশেষে একটি খালি অকার্যকর লুপ (কারণ আপনি এটি ব্যবহার না করলেও আপনার প্রয়োজন) void loop () {} // আপাতত খালি লুপ উদাহরণ 2: প্রথম 8 টি লাইন হল প্রথম উদাহরণের প্রথম 8 টি লাইনের মতো, আসলে তারা অন্য কোন প্রকল্পের জন্য পরিবর্তিত হবে না, তাই #ডেটা সংজ্ঞায়িত করুন 2 #সংজ্ঞায়িত করুন ঘড়ি 3 অকার্যকর সেটআপ () {পিনমোড (ঘড়ি, আউটপুট); // ঘড়ি পিন একটি আউটপুট pinMode (তথ্য, আউটপুট); // ডেটা পিন আউটপুট করুন কিন্তু এখন অকার্যকর সেটআপের জন্য লুপের জন্য 8 টি গণনা রয়েছে, এটি একটি খালি বাইট গ্রহণ করছে এবং বাম দিক থেকে শুরু করে এবং ডানদিকে সরানোর সময় 1 বিট স্থানান্তর করছে। এটি প্রথম উদাহরণ থেকে পিছনের দিকে যেখানে আমরা ডানদিক থেকে শুরু করেছি এবং বাম দিকে কাজ করেছি, কিন্তু MSBFIRST ব্যবহার করে শিফট আউট ফাংশন ডেটা সঠিক ভাবে পাঠায় এছাড়াও আমরা লুপের জন্য একটি বিলম্ব যোগ করি যাতে এটি দৃশ্যমান হওয়ার জন্য যথেষ্ট ধীর হয়ে যায়। জন্য (int i = 0; i <8; ++ i) // 0 - 7 এর জন্য {shiftOut (data, clock, MSBFIRST, 1 << i); // বিট শিফট একটি লজিক হাই (1) মান আমি বিলম্ব (100) দ্বারা; // 100ms বিলম্ব করুন অথবা আপনি এটি দেখতে পারবেন না}} অকার্যকর লুপ () {} // খালি লুপ আপাতত স্ক্রিপ্ট আপলোড করুন এবং আপনার এখন বারগ্রাফটি একবারে প্রতিটি আলোকে আলোকিত করা উচিত

ধাপ 6: প্রকল্প 2: '2 ওয়্যার' 7 সেগমেন্ট ডিসপ্লে কন্ট্রোলার

প্রকল্প 2: '2 ওয়্যার' 7 সেগমেন্ট ডিসপ্লে কন্ট্রোলার
প্রকল্প 2: '2 ওয়্যার' 7 সেগমেন্ট ডিসপ্লে কন্ট্রোলার
প্রকল্প 2: '2 ওয়্যার' 7 সেগমেন্ট ডিসপ্লে কন্ট্রোলার
প্রকল্প 2: '2 ওয়্যার' 7 সেগমেন্ট ডিসপ্লে কন্ট্রোলার

আপনার 7 সেগমেন্ট ডিসপ্লের পিনআউটটি দেখুন (আমার কেবল একটি দ্বৈত ছিল কিন্তু মাত্র অর্ধেক ব্যবহার করে) এবং শিফট রেজিস্টার 1 = পিন 3 বিট 2 = পিন 4 বিট 3 = পিন 5 বিট 4 = পিন 6 বিট 5 = পিন 10 বিট 6 = পিন 11 বিট 7 = পিন 12 বিট 8 = পিন 13 (যদি আপনি দশমিক বিন্দু ব্যবহার করতে চান) এবং 330ohm রোধের মাধ্যমে এবং বিদ্যুৎ সরবরাহের জন্য ডিসপ্লের ক্যাথোড সাত_seg_demo.pde খুলুন Arduino IDE তে প্রথমে আপনি দেখেন আমরা ডেটা এবং ক্লক পিনের সংজ্ঞা কোথায় দিই একটিতে টাইপ করুন, পরবর্তীতে আপনার উপরের সেগমেন্টের দরকার আছে, যদি অন্য একটি টাইপ করুন, যতক্ষণ না আপনি সমস্ত 8 টি সেগমেন্ট কভার করেন, ততক্ষণ এই কাজটি চালিয়ে যান, আমার ডানদিকের বিট (বিট 8) সর্বদা 0, যে কারণে আমি দশমিক চালু করি না বিন্দু বাইট শূন্য = B01111110; বাইট এক = B00000110; বাইট দুই = B11011010; বাইট তিন = B11010110; বাইট চার = B10100110; বাইট পাঁচ = B11110100; বাইট ছয় = B11111100; বাইট সাত = B01000110; বাইট আট = B1111111; অকার্যকর সেটআপের পর আমরা আমাদের ডেটা এবং ক্লক পিনগুলিকে আউটপুট ভয়েড সেটআপ () {পিনমোড (ঘড়ি, আউটপুট); // ঘড়ি পিন একটি আউটপুট pinMode করুন (তথ্য, আউটপুট); // ডেটা পিনকে আউটপুট 3 করুন তারপর অকার্যকর লুপে আমরা প্রতিটি প্যাটার্ন (সংখ্যা) প্রদর্শনের জন্য shiftOut ব্যবহার করি 1/2 সেকেন্ড অপেক্ষা করুন এবং পরেরটি 0 থেকে 9 প্রদর্শন করুন, যেহেতু এটি ভয়েড লুপ ফাংশনে করা হচ্ছে এটি গণনা করা হবে 0-9 এবং চিরতরে পুনরাবৃত্তি করুন। void loop () {shiftOut (data, clock, LSBFIRST, zero); বিলম্ব (500); shiftOut (তথ্য, ঘড়ি, LSBFIRST, এক); বিলম্ব (500); shiftOut (তথ্য, ঘড়ি, LSBFIRST, দুই); বিলম্ব (500); shiftOut (ডেটা, ঘড়ি, LSBFIRST, তিনটি); বিলম্ব (500); shiftOut (তথ্য, ঘড়ি, LSBFIRST, চার); বিলম্ব (500); shiftOut (তথ্য, ঘড়ি, LSBFIRST, পাঁচ); বিলম্ব (500); shiftOut (তথ্য, ঘড়ি, LSBFIRST, ছয়); বিলম্ব (500); shiftOut (ডেটা, ঘড়ি, LSBFIRST, সাত); বিলম্ব (500); shiftOut (তথ্য, ঘড়ি, LSBFIRST, আট); বিলম্ব (500); shiftOut (তথ্য, ঘড়ি, LSBFIRST, নয়); বিলম্ব (500);}

ধাপ 7: প্রকল্প 3 [pt 1]: '2 ওয়্যার' 4x4 LED ম্যাট্রিক্স ডিসপ্লে

প্রকল্প 3 [pt 1]: '2 ওয়্যার' 4x4 LED ম্যাট্রিক্স ডিসপ্লে
প্রকল্প 3 [pt 1]: '2 ওয়্যার' 4x4 LED ম্যাট্রিক্স ডিসপ্লে
প্রকল্প 3 [pt 1]: '2 ওয়্যার' 4x4 LED ম্যাট্রিক্স ডিসপ্লে
প্রকল্প 3 [pt 1]: '2 ওয়্যার' 4x4 LED ম্যাট্রিক্স ডিসপ্লে

4x4 এলইডি ম্যাট্রিক্স প্রকল্পটি কিছুটা বেশি জটিল, কিন্তু এটি প্রায় সবই নির্মাণের কাজ, আমি পারফবোর্ডে খনি সোল্ডার করা বেছে নিই, কিন্তু এটি একটি রুটিবোর্ডে প্রতিলিপি করা সম্ভব হওয়া উচিত, শুধু অনেক বেশি ফাঁক। ভিন্ন যে শিফট রেজিস্টার সরাসরি নেতৃত্বের চালনা করছে না, পরিবর্তে শিফট রেজিস্টার আউটপুটগুলি 1Kohm রোধের মাধ্যমে একটি NpN ট্রানজিস্টারের বেসে পাঠানো হয়, যখন বিট আউটপুট বেশি হয়, এটি যথেষ্ট বর্তমান এবং ভোল্টেজকে পাস করতে দেয় ট্রানজিস্টারটি কালেক্টর এবং ইমিটারের মধ্যে সংযোগ সুইচ করার জন্য, কালেক্টরগুলিকে একটি "বলিষ্ঠ" নিয়ন্ত্রিত 5 ভোল্টের সাথে আবদ্ধ করা হয়। সারিটিকে 20ma তে সীমাবদ্ধ করে, যদিও ডিসপ্লেতে ছবি আঁকার সময় শুধুমাত্র 1 টি LED চালু থাকে, এবং সেইজন্য সম্পূর্ণ উজ্জ্বলতার কাছাকাছি (কারণ তারা পুরো ছবিটি তৈরি করতে সত্যিই দ্রুত চালু এবং বন্ধ করে) 4 টি সারি এবং 4 টি কলাম, প্রতিটি সারি একটি প্রতিরোধক এবং একটি ট্রানজিস্টর পায়, প্রতিটি কলামে LED এর ক্যাথোডগুলি একসঙ্গে বাঁধা হয়, একটি ট্রানজিস্টরের সংগ্রাহকের মধ্যে দৌড়ে যায়, যার ভিত্তিও শিফট রেজিস্টার দ্বারা নিয়ন্ত্রিত হয় এবং অবশেষে মাটিতে চলে যায়। পরিকল্পিত বৃহৎ সংস্করণ www.instructables.com/files/orig/F7J/52X0/G1ZGOSRQ/F7J52X0G1ZGOSRQ.jpg

ধাপ 8: প্রকল্প 3 [pt 2]: '2 Wire' 4x4 LED Matrix Display

প্রকল্প 3 [pt 2]: '2 ওয়্যার' 4x4 LED ম্যাট্রিক্স ডিসপ্লে
প্রকল্প 3 [pt 2]: '2 ওয়্যার' 4x4 LED ম্যাট্রিক্স ডিসপ্লে
প্রকল্প 3 [pt 2]: '2 ওয়্যার' 4x4 LED ম্যাট্রিক্স ডিসপ্লে
প্রকল্প 3 [pt 2]: '2 ওয়্যার' 4x4 LED ম্যাট্রিক্স ডিসপ্লে
প্রকল্প 3 [pt 2]: '2 ওয়্যার' 4x4 LED ম্যাট্রিক্স ডিসপ্লে
প্রকল্প 3 [pt 2]: '2 ওয়্যার' 4x4 LED ম্যাট্রিক্স ডিসপ্লে

শিফট রেজিস্টার একটি YX ফরম্যাটে LED এর অ্যানোড এবং ক্যাথোড উভয়ই নিয়ন্ত্রণ করে, নিচের বিট 1 = কলাম 1 (ডানদিকের) বিট 2 = কলাম 2 বিট 3 = কলাম 3 বিট 4 = কলাম 4 বিট 5 = সারি 1 (শীর্ষতম) বিট দেখুন 6 = সারি 2bit 7 = সারি 3bit 8 = সারি 4 একটি চিত্র তৈরি করতে গ্রাফ পেপারে 4x4 বর্গক্ষেত্র আঁকুন এবং কোনটি আপনি প্রদর্শন করতে চান তা পূরণ করুন, পরবর্তীতে একটি YX টেবিল তৈরি করুন। নীচে আপনি একটি সিমেলের জন্য একটি ম্যাপিং দেখতে পাবেন, সেইসাথে 4x4 "পিক্সেল" এ সেরাটি করতে পারে প্রতিটি বিভাগে ভরাট করার জন্য আমি এটি কোন কলাম (Y) এ লিখছি, তারপর এটি কোন সারিতে আছে (X) এখন খুলুন arduino IDE তে _4x4.pde ফাইলটি আপনি দেখতে পাবেন আমাদের পুরানো 2 বন্ধু #ডেটা সংজ্ঞায়িত করুন 2 #ক্লক 3 নির্ধারণ করুন তারপর পূর্ণসংখ্যার একটি অ্যারে int img = {1, 1, 4, 1, 1, 3, 4, 3 {2, 4, 3, 4}; যদি আপনি আমার লিখিত YX স্থানাঙ্কগুলির একটি তালিকা দেখেন, তাহলে হাত দিয়ে এই মানগুলি রূপান্তর করা পাছায় একটি বড় যন্ত্রণা হবে, এবং আমাদের একটি কম্পিউটার আছে … এটি করতে দিন! সেখানে চলতে চলতে যেখানে আমরা তৈরি করি সেখানে শূন্য সেটআপ রয়েছে আমাদের ঘড়ি এবং ডেটা পিন আউটপুট অকার্যকর সেটআপ () {পিনমোড (ঘড়ি, আউটপুট); // ঘড়ি পিন একটি আউটপুট pinMode করুন (তথ্য, আউটপুট); // ডেটা পিনকে আউটপুট 3 করুন এবং একটি বিভ্রান্তিকর অকার্যকর লুপ, জিনিসগুলি শুরু করার জন্য আমাদের কিছু স্থানীয় ভেরিয়েবল ভয়েড লুপ () {int Y; int X; বাইট আউট; তারপর একটি লুপের জন্য, এই লুপটি যতক্ষণ পর্যন্ত img অ্যারে এন্ট্রির পরিমাণ হওয়া প্রয়োজন, এই ছবির জন্য আমি শুধুমাত্র 6 পিক্সেল ব্যবহার করেছি, যাতে 12 YX স্থানাঙ্ক তৈরি হয়। আমি i += 2 ব্যবহার করে প্রতি অন্য সংখ্যাটি এড়িয়ে যাই, কারণ আমরা প্রতি লুপে 2 টি স্থানাঙ্ক পড়ি (int i = 0; i <12; i += 2) // img অ্যারেতে পয়েন্টের সংখ্যা, এই ক্ষেত্রে 12 {এখন আমরা অ্যারেতে এ Y এন্ট্রি পড়ি, এবং এর মান থেকে একটি বিয়োগ করি, কারণ বাইট এক থেকে শুরু হয় না, তারা শূন্য থেকে শুরু হয়, কিন্তু আমরা 1 থেকে গণনা করি // YX কর্ডের প্রথম জোড়া পান Y = (img - 1); // বিট গণনা 0 থেকে শুরু হওয়ার পর থেকে একটি বিয়োগ করুন পরবর্তীতে আমরা অ্যারেতে [i + 1] এ X এন্ট্রিটি পড়ি এবং এর মান থেকে একটি বিয়োগ করি, একই কারণে X = (img [i + 1] - 1); আমাদের পিক্সেলের YX মান থাকার পর, আমরা কিছু বিটওয়াইজ বা গণিত করি এবং বাম দিকে স্থানান্তর করি। প্রথমে আমাদের X মান পড়তে হবে, এবং এর মান যাই হোক না কেন এটি অনেক জায়গায় + 4 বাকি, তাই যদি X 4 হয় এবং 4 যোগ করুন এটি বিট 8 (MSB), চার্টটি আবার দেখছে… 7 = সারি 3bit 8 = সারি 4Bit 8 হল শেষ সারি পরবর্তী Y মানটি বাম দিকেও স্থানান্তরিত হয়, এইবার শুধু তার নিজের দ্বারা, কিছুই যোগ করা হয়নি শেষ পর্যন্ত দুইটি একসাথে 2 অর্ধ বাইটের পরিবর্তে 1 বাইটে পরিণত হয়েছে (nibbles), bitwise বা (চিহ্ন | 10000001 4 কলাম 1 আউট = 1 << (X + 4) | 1 << Y; এবং অবশেষে বর্তমান ছবিটি প্রদর্শনের জন্য শিফট আউট করুন, এবং এটি করতে থাকুন যতক্ষণ না আমাদের কাছে অ্যারেতে আর কোন ডেটা নেই … একটি মুহূর্ত বিলম্ব করুন এবং চিরতরে লুপ করুন, যেহেতু আমরা বাম দিকে ডেটা স্থানান্তর করছিলাম এবং আমাদের শেষ আউটপুট পিনে MSB প্রয়োজন। শিফট রেজিস্টারের আগে এটি পাঠান। shiftOut (ডেটা, ঘড়ি, MSBFIRST, আউট); // আমাদের নিবন্ধন বিলম্ব (1) বাইট আউট স্থানান্তর; // এটি বিলম্বিত করুন যাতে এটি আপনার চোখে আলোর দাগ ছাড়ার সুযোগ পায় আপনার নিজের ছবি এবং প্রভাবগুলি নির্দ্বিধায়, সেখানে 3 টি নমুনা ফাইল, স্মাইলি ফেস এবং একটি চেকারবোর্ড (যা ডোরার মতো দেখতে), এবং অবশেষে একটি এলোমেলো ঝকঝকে নির্মাতা

ধাপ 9: উপসংহার

উপসংহার
উপসংহার
উপসংহার
উপসংহার
উপসংহার
উপসংহার

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

প্রস্তাবিত: