چارلی‌پلکسینگ | کنترل یک ماتریس LED با آردوینو

قسمت 44
مشاهده سایر جلسات آموزش
13 بازدید
۱۴۰۴-۱۰-۰۳
6 دقیقه
  • نویسنده: Arduino captain
  • درباره نویسنده: من کاپیتان آردوینو، اسمم میلاده و اینجا هستم تا تجربیاتم در رابطه با آردوینو رو با شما به اشتراک بزارم!

در قسمت 43 از آموزش آردوینو به روشن کردن چند LED به صورت پشت‌سرهم، کنترل ماتریس LED با استفاده از مالتی‌پلکسینگ و نمایش تصاویر روی ماتریس LED صحبت کردیم. در این قسمت قصد داریم کنترل یک ماتریس LED: چارلی‌پلکسینگ (Charlieplexing) صحبت کنیم.

کنترل یک ماتریس LED: چارلی‌پلکسینگ (Charlieplexing)

فرض کنید شما یک ماتریس LED در اختیار دارید و می‌خواهید تعداد پایه‌های لازم برای روشن و خاموش کردن هر یک از آن‌ها را به حداقل برسانید. چارلی‌پلکسینگ (Charlieplexing) نوع ویژه‌ای از مالتی‌پلکسینگ است که تعداد LEDهایی را که می‌توان با یک مجموعه پایه محدود کنترل کرد، افزایش می‌دهد. این اسکچ با استفاده از تنها سه پایه، شش LED را به‌صورت ترتیبی روشن می‌کند.

شکل زیر نحوه‌ی اتصالات را نشان می‌دهد: (برای محاسبه‌ی مقدار مناسب مقاومت در اتصال LEDها، به قسمت های قبلی مراجعه کنید)

شکل 2: شش LED که با استفاده از سه پایه و به روش چارلی‌پلکسینگ (Charlieplexing) راه‌اندازی شده‌اند

شش LED که با استفاده از سه پایه و به روش چارلی‌پلکسینگ (Charlieplexing) راه‌اندازی شده‌اند

اصطلاح چارلی‌پلکسینگ (Charlieplexing) از نام چارلی آلن از شرکت Microchip Technology, Inc. گرفته شده است که این روش را معرفی کرد. این تکنیک بر این اصل استوار است که LEDها فقط زمانی روشن می‌شوند که «در جهت درست» به مدار متصل شوند (یعنی آند نسبت به کاتد پتانسیل مثبت‌تری داشته باشد).

در ادامه، جدولی نشان داده شده است که مشخص می‌کند برای ترکیب‌های معتبر وضعیت سه پایه، کدام LED روشن می‌شود. در این جدول:

  • L به معنی LOW
  • H به معنی HIGH
  • I به معنی حالت INPUT

قرار دادن یک پایه در حالت INPUT عملاً آن را از مدار جدا می‌کند.

چارلی‌پلکسینگ | کنترل یک ماتریس LED با آردوینو

می‌توانید با استفاده از فقط یک پایه‌ی دیگر، تعداد LED‌ها را به ۱۲ عدد افزایش دهید. شش LED اول به همان روشی که در مثال قبلی توضیح داده شد متصل شده‌اند؛ شش LED اضافه را به‌گونه‌ای اضافه کنید که اتصالات مشابه شکل زیر باشد.

چارلی‌پلکسینگ | کنترل یک ماتریس LED با آردوینو

استفاده از چارلی‌پلکسینگ با چهار پایه برای راه‌اندازی دوازده LED

کد قبلی را با اضافه کردن پایه‌ی اضافی به آرایه‌ی پایه‌ها اصلاح کنید.

شاید برای شما مفید باشد:
آموزش طراحی شماتیک سلسله‌مراتبی در KiCad

ورودی‌های اضافی را به آرایه‌ی pairs اضافه کنید تا بصورت زیر خوانده شود:

سایر قسمت‌ها می‌توانند بدون تغییر باقی بمانند، بنابراین حلقه همه‌ی دوازده LED را پشت‌سرهم روشن می‌کند، زیرا کد تعداد LEDها را از تعداد ورودی‌های موجود در آرایه‌ی پایه‌ها تعیین می‌کند. ازآنجاکه چارلی‌پلکسینگ با کنترل پایه‌های آردوینو به‌گونه‌ای عمل می‌کند که تنها یک LED در هر لحظه روشن باشد، ایجاد این تصور که چند LED هم‌زمان روشن می‌شوند، کمی پیچیده‌تر است. اما می‌توان با استفاده از تکنیک مالتی‌پلکسینگ که برای چارلی‌پلکسینگ اصلاح شده است، چند LED را هم‌زمان روشن کرد.

این برنامه یک نمودار میله‌ای (bar graph) ایجاد می‌کند و با توجه به مقدار یک سنسور متصل به پایه آنالوگ ۰، توالی LEDها را روشن می‌کند.

شاید برای شما مفید باشد:
()analogReadResolution در آردوینو

این برنامه از مقادیر بیت‌ها در متغیر ledStates برای نشان دادن وضعیت LEDها استفاده می‌کند (۰ به معنای خاموش و ۱ به معنای روشن). تابع refresh هر بیت را بررسی می‌کند و LEDهای مربوط به بیت‌هایی که برابر با ۱ هستند را روشن می‌کند. تابع refresh باید به‌سرعت و به‌صورت مکرر فراخوانی شود، در غیر این صورت LEDها به‌صورت چشمک‌زن دیده می‌شوند.

✅نکته

اضافه کردن تأخیرها در کد می‌تواند با اثر ماندگاری دید (persistence of vision) تداخل ایجاد کند که همان توهمی است که چشمک زدن LEDها را پنهان می‌کند. شما می‌توانید از یک وقفه (interrupt) استفاده کنید تا تابع refresh در پس‌زمینه اجرا شود (بدون نیاز به فراخوانی صریح آن در حلقه‌ی loop). وقفه‌های تایمر در قسمت‌های بعدی توضیح داده شده‌اند، اما در اینجا یک پیش‌نمایش از یک روش برای استفاده از وقفه به منظور به‌روزرسانی LEDها آورده شده است. این روش از یک کتابخانه‌ی شخص ثالث به نام FrequencyTimer2 استفاده می‌کند که از طریق Library Manager در دسترس است تا وقفه ایجاد کند.

کتابخانه‌ی FrequencyTimer2 دوره‌ی زمانی را روی ۱۶۶۶ میکروثانیه تنظیم کرده است (۲۰ میلی‌ثانیه تقسیم بر ۱۲ که تعداد LEDهاست). روش FrequencyTimer2.setOnOverflow تابعی را مشخص می‌کند که هر بار که تایمر «فعال» می‌شود فراخوانی شود (در اینجا تابع ledRefresh). کتابخانه‌ی FrequencyTimer2 با تعداد محدودی از بردها سازگار است: Arduino Uno (و احتمالاً اکثر بردهای سازگار با ATmega328)، Arduino Mega و چند مدل Teensy. برای اطلاعات بیشتر در مورد این کتابخانه، می‌توانید به صفحه‌ی PJRC مراجعه کنید.

اطلاعات
13
0
0
اشتراک و حمایت
profile نویسنده: Arduino captain متخصص الکترونیک

من کاپیتان آردوینو، اسمم میلاده و اینجا هستم تا تجربیاتم در رابطه با آردوینو رو با شما به اشتراک بزارم!


ویراستار: محمد کبیر
مقالات بیشتر

slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. جستجو در آیسی
family

سیسوگ‌شاپ | فروشگاه محصولات Quectel

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

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

سیکار | اولین مرجع متن باز ECU در ایران

بررسی و ارائه اطلاعات مربوط به ECU (واحد کنترل الکترونیکی) و نرم‌افزارهای متن باز مرتبط با آن برو به سیکار
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله

خانواده سیسوگ

سیسوگ‌شاپ

فروشگاه محصولات Quectel

پالت
سیسوگ فروم

محلی برای پاسخ پرسش‌های شما

سیسوگ جابز
سیسوگ
سیسوگ فروم
سی‌کار

اولین مرجع متن باز ECU در ایران

سیسوگ مگ
آی‌سی

موتور جستجوی قطعات الکترونیکی

سیسوگ آکادمی
پالت

بازار خرید و فروش قطعات الکترونیک

دیدگاه ها

become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله