کنترل 64 led از طریق 16 پایه – ساختار داخلی دات ماتریکس چگونه است؟

در تصویر زیر شما دو عدد دات ماتریکس – Dot matrix – مشاهده می‌کنید. بلوکی منظم از تعدادی LED که می‌تواند در بعضی جاها کار ما را در چیدن LEDها ساده‌تر کند. مثلاً اگر به تابلوهایِ روانِ داخل بانک‌ها یا اتوبوس‌ها دقت کرده‌ باشید. اغلب تشکیل شده از چندین دات ماتریکس کنار هم هستند.

دات ماتریکس - دیجیلاگیست

 

اگر دات ماتریکس شما هم 64 LED تک رنگ بر روی خود داشته باشد، خواهید دید که از سمت دیگر آن تنها 16 پایه بیرون آمده. به عبارتی تنها با 16 پین قرار است 64 LED را کنترل کنید. اما چگونه؟

اگر به ذهنتان رسیده که احتمالاً تراشه‌ای درونش وجود دارد که این‌ تعداد LED را کنترل می‌کند، باید بگویم دات ماتریکس چیزی بیش از تعدادی LED که به نحوی خاص به هم متصل شده‌اند، نیست.

اگر کاتد تمام LEDها به هم وصل شده باشند و از طریق آندها قرار باشد تک تک آن‌ها کنترل شوند، نیاز به 65 پایه داریم نه 16 پایه! پس باید روشی دیگر به کار رفته باشد که ضمن حداقل کردن پایه‌های مورد نیاز، به ما امکان کنترل تک تک LEDها را نیز می‌دهد.

برای اینکه دید بهتری نسبت به موضوع داشته باشید، بهتر است دیتاشیت یک دات ماتریکس را باز کنید و به دنبال ساختار داخلی آن بگردید. چیزی شبیه تصویر زیر:

ساختار داخلی دات ماتریکس

همانطور که از اسم دات ماتریکس هم مشخص است، نحوه‌ی چینش LEDها به صورت یک ماتریس است. ماتریسی که کاتد هر سطر آن به هم و آند هر ستون آن نیز به هم وصل شده‌. قسمت‌های وصل شده به هم‌ نیز به صورت یک پین بیرون آمده‌اند. به عبارتی، هر پینی که از دات ماتریکس بیرون آمده به کاتد یا آند مشترک یک سطر یا ستون وصل شده است. به همین دلیل هم تعداد سطرها + ستون‌ها می‌شود تعداد پین‌های خروجی.

اینکه با این روش تعداد پین‌های خروجی مورد نیاز از 65 پایه به 16 پایه کاهش پیدا کرده‌، واضح است که چه مزیتی دارد. اما اینکه چگونه قرار است با چنین ساختاری تک تک LEDها را کنترل کنیم، در ادامه در موردش صحبت می‌کنیم.

فرض کنید می‌خواهیم [3,2]LED را روشن کنیم. خب قاعدتاً کار راحت است و کافی است که کاتد ردیف 2 را صفر و سایر ردیف ها را یک کنیم. از طرفی ستون 3 را یک و سایر ستون ها را صفر می کنیم.

اما اگر  علاوه بر این، [5,4]LED را نیز بخواهیم روشن کنیم. این کار چگونه باید صورت گیرد؟ شاید به نظر برسد که در اینجا هم اگر ردیف 4 را صفر و ستون 5 را یک کنیم مشکل حل خواهد شد. اما احتمالاً به این نکته دقت نکرده اید که ما با این کار باعث می‌شویم پیکسل [3,4]LED و [5,2]LED نیز روشن شوند.

در واقع LEDهای ناخواسته‌ای روشن خواهند شد که مطلوب ما نیست. بنابراین چاره کار به نظرتان چیست؟

احتمالاً بارها پیش آمده که به پره‌های یک فَن یا پنکه دقت کرده باشید. اینکه در ابتدای حرکت که هنوز به حداکثر سرعت نرسیده، شما می‌توانید پره‌ها را به خوبی تشخیص دهید و آن‌ها را دنبال کنید. اما وقتی که به سرعت افتاد دیگر تنها یک صفحه‌ی محو را می‌بینید. علتش هم واضح است. محدودیت دید ما انسان‌ها، از سرعتی به بعد نمی‌تواند به درستی ببیند و تشخیص دهد. از این محدودیت دید انسان‌ها جاهای مختلفی می‌توان بهره برد. یکی از این جاها تابلوهای LED یا همان تابلو روان است.

در تابلو روان که در ابعاد کوچک می‌شود همین دات ماتریکس خودمان، به جای آنکه همزمان همه‌ی LEDها کنترل شوند، در هر بازه‌ی زمانی مشخص تنها LEDهای یک سطر کنترل یا اصطلاحاً جاروب می‌شوند. اما از آنجا که این بازه‌ی زمانی به حد کافی کوچک است، چشم ما متوجه این موضوع نمی‌شود و اینطور به نظر ما می‌رسد، که ما در حال تماشای یک تصویر کامل هستیم. 

به عنوان مثال در دات ماتریکس در لحظه‌ی t1 سطر اول، در لحظه‌ی t2 سطر دوم، … و در لحظه‌ی t8 سطر هشتم -آخرین سطر- جاروب می‌شود. با یک بار جاروب کامل سطرها یک بار رفرش تصویر، صورت گرفته است. تا زمانی که تابلو روشن است و می‌خواهیم تصویری به ما نشان بدهد، عمل رفرش باید ادامه پیدا کند.

الزامی نیست که عمل جاروب حتماً به صورت سطری صورت گیرد. می‌توان جاروب را به صورت ستونی انجام داد. به این صورت که هر لحظه تنها یک ستون فعال باشد و LEDهای لازم آن کنترل شود. این دیگر بسته به تصمیم طراح است که از کدام روش -جاروب سطری یا ستونی- برای رفرش صفحه استفاده کند.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *