ورودی دیجیتال و آنالوگ | قسمت بیست و چهارم آموزش آردوینو

blog
gasemi.m100
۱۴۰۳-۱۰-۱۶
6 دقیقه

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

آردوینو توانایی تشخیص ورودی‌های دیجیتال و آنالوگ را دارد که در نتیجه، این امکان فراهم می‌شود که به شما و دنیای اطراف واکنش نشان دهد. این فصل روش‌هایی را معرفی می‌کند که شما می‌توانید از آن‌ها برای نظارت و پاسخ به این ورودی‌ها استفاده کنید. از جمله این موارد عبارت‌اند از:

  • تشخیص فشاردادن یک کلید
  • خواندن ورودی از یک صفحه‌کلید عددی
  • خواندن محدوده‌ای از مقادیر ولتاژ

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

شکل 1 آرایش پین‌ها در آردوینو Uno را نشان می‌دهد. این آرایش پین در بسیاری از بردهای سازگار با آردوینو، از جمله سری Metro از Adafruit و SparkFun استفاده می‌شود.

پین های دیجیتال

تابع آردوینو برای تشخیص ورودی دیجیتال، digitalRead است. این تابع به اسکچ شما می‌گوید که ولتاژ روی یک پین HIGH یا LOW است. در بردهایی مثل HIGH ، Uno به معنای ولتاژ بین 3 تا 5 ولت است در بردهای مبتنی بر ARM و سایر بردهای 3.3 ولتی، HIGH بین 2 تا 3.3 ولت است. LOW به معنای ولتاژ 0 ولت است. تابع آردوینو برای تنظیم (پیکربندی) یک پین جهت خواندن ورودی،pinMode(pin, INPUT)  است.

در بردهایی با چیدمان پین مشابه Uno از جمله Arduino Leonardo، برخی بردهای سری Metro  و RedBoard (از Adafruit) SparkFun چهارده (14) پین دیجیتال وجود دارد که از 0 تا 13 شماره‌گذاری شده‌اند. این پین‌ها در بالای شکل 1 نشان داده شده‌اند. در بردهای Uno و بردهای 100٪ سازگار (معمولاً بردهای مبتنی بر ATmega328) پین‌های 0 و 1 که با RX و TX مشخص شده‌اند، برای اتصال سریال USB استفاده می‌شوند و بهتر است برای سایر کاربردها از آن‌ها استفاده نشود.

 پین‌های دیجیتال و آنالوگ روی برد آردوینو Uno

شکل 1: پین‌های دیجیتال و آنالوگ روی برد آردوینو Uno

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

 جدول 1: ثابت‌های پین برای طرح‌بندی به سبک Uno

پین

ثابت

ورودی آنالوگ 0

A0

ورودی آنالوگ 1

A1

ورودی آنالوگ 2

A2

ورودی آنالوگ 3

A3

ورودی آنالوگ 4

A4

ورودی آنالوگ 5

A5

LED داخلی (on bord)

LED_BUILTIN

داده  I2C

SDA

کلاک I2C

SCL

انتخاب SPI

SS

 ورودی SPI

MOSI

خروجی SPI

MISO

کلاک SPI

SCK

✅ نکته

اگر به تعداد بیشتری پایه دیجیتال نیاز دارید، می‌توانید از پایه‌های آنالوگ به‌عنوان پایه‌های دیجیتال استفاده کنید. در این حالت می‌توانید با استفاده از نام‌های نمادین آن‌ها به پایه‌ها اشاره کنید، برای مثال با دستورpinMode(A0, INPUT)

بردهایی مانند Mega و Due تعداد بسیار بیشتری پایه دیجیتال و آنالوگ دارند. پایه‌های دیجیتال 0 تا 13 و پایه‌های آنالوگ 0 تا 5 در همان موقعیتی قرار دارند که در برد استاندارد وجود دارند، بنابراین شیلدهای سخت‌افزاری طراحی‌شده برای برد استاندارد می‌توانند روی این بردها نیز نصب شوند. مشابه برد استاندارد، شما می‌توانید از پایه‌های آنالوگ به‌عنوان پایه‌های دیجیتال استفاده کنید، اما در برد Mega شماره‌گذاری پایه‌های آنالوگ از A0 تا A15 ادامه دارد. شکل 2 نحوه قرارگیری پایه‌های برد Mega را نشان می‌دهد.

برد آردوینو Mega

شکل 2: برد آردوینو Mega

بردهایی مانند Uno،Leonardo و بسیاری از بردهای دیگر دارای یک LED هستند که به پایه 13 متصل شده است. اما شماره پایه در بردهای دیگر ممکن است متفاوت باشد، بنابراین همیشه باید از ثابت LED_BUILTIN برای اشاره به LED داخلی استفاده کنید. همچنین لازم است شماره پایه خروجی را از LED_BUILTIN به شماره پایه‌ای که استفاده می‌کنید تغییر دهید.

دستورالعمل‌هایی که به ورودی دیجیتال می‌پردازند گاهی از مقاومت‌های داخلی یا خارجی استفاده می‌کنند تا زمانی که ورودی فعال نیست، پایه ورودی در یک حالت مشخص باقی می‌ماند. بدون وجود چنین مقاومتی، مقدار پایه در حالتی که به آن شناور (floating) گفته می‌شود، قرار می‌گیرد و دستور digitalRead ممکن است ابتدا مقدار HIGH را بازگرداند، اما چند میلی‌ثانیه بعد، بدون توجه به فعال‌بودن یا نبودن ورودی (مانند فشاردادن یک دکمه)، مقدار LOW را بازگرداند. در واقع حالت شناور پین‌ها با عوامل خارجی ناخواسته مثل نویزها به راحتی تغییر حالت می‌دهد برای جلوگیری از این حالت از مقاومت نسبتا بزرگی (حدود 10 کیلو اهم) در مدارهایی به نام پول آپ یا پول دان استفاده می‌شود.

مقاومت پول آپ (Pull-Up) به این نام شناخته می‌شود؛ زیرا ولتاژ پایه را به سطح منطقی برد (5  ولت یا 3.3 ولت) بالا می‌کشد. در یک کانفینگ Pull-Up، وقتی دکمه فشار داده شود، دستور digitalRead مقدار LOW را بازمی‌گرداند. در تمام مواقع دیگر، مقدار  HIGH بازمی‌گردد؛ زیرا مقاومت پول آپ، ولتاژ پایه را در حالت بالا نگه می‌دارد.

مقاومت پول دان (Pull-Down) ولتاژ پایه را به صفر ولت پایین می‌کشد. در این پیکربندی، دستور digitalRead مقدار HIGH را زمانی که دکمه فشار داده شود، بازمی‌گرداند.

اگرچه مقدار 10 کیلو اهم معمولاً برای مقاومت‌های پول آپ یا پول دان استفاده می‌شود، اما مقادیر بین 4.7 کیلو اهم تا 20 کیلو اهم یا حتی بیشتر نیز به خوبی عمل می‌کنند.

توجه

اگر اولین‌بار است که قطعات را به Arduino متصل می‌کنید، در نحوه اتصال و تأمین توان اجزایی که به آن وصل می‌کنید، دقت کنید. Arduino Uno از یک چیپ مقاوم استفاده می‌کند که می‌تواند مقدار قابل‌توجهی از خطاها را تحمل کند، اما اگر ولتاژهای اشتباه به آن متصل کنید یا یک پایه خروجی را اتصال کوتاه کنید، ممکن است به چیپ آسیب برسانید. بردهای Arduino مبتنی بر معماری 32 بیتی و بردهای مشابه معمولاً کمی حساس‌تر هستند.

چیپ‌های کنترل‌کننده Arduino روی بردهایی مانند Uno با ولتاژ 5 ولت تغذیه می‌شوند و نباید به پایه‌های Arduino ولتاژی بالاتر از این مقدار متصل کنید. اما اکثر بردهای جدیدتر Arduino و بردهای سازگار با آن حداکثر می‌توانند ولتاژ 3.3 ولت را تحمل کنند. برای اطلاع از حداکثر ولتاژ قابل‌تحمل پایه‌ها، به داکیومنت برد خود مراجعه کنید.

در برخی از بردهای Arduino چیپ اصلی دارای سوکت هستند که می‌توان آن را جدا کرده و جایگزین کرد؛ بنابراین اگر چیپ شما آسیب ببیند، نیازی به تعویض کل برد ندارید. اگر در الکترونیک تازه‌کار هستید و می‌خواهید تست انجام دهید، بردهایی با میکروکنترلرهای قابل‌تعویض، مانند Arduino Uno، گزینه‌های خوبی هستند.

بردهای Arduino دارای مقاومت‌های پول آپ (Pull-Up) داخلی هستند که می‌توانید با استفاده از مد INPUT_PULLUP در دستور pinMode آن‌ها را فعال کنید. اما بهتر است این ویژگی استفاده نکنید و از یک مقاومت واقعی استفاده کنید.

پین های آنالوگ

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

کد Arduino از تابعی به نام analogRead استفاده می‌کند تا مقداری متناسب با ولتاژی که روی یکی از پایه‌های آنالوگ تشخیص می‌دهد، دریافت کند. اگر ولتاژ روی پایه 0 باشد، مقدار برگشتی 0 خواهد بود و اگر ولتاژ 5 ولت باشد (یا 3.3 ولت در بردهای 3.3 ولتی)، مقدار برگشتی 1023 خواهد بود. مقادیر بین این دو مقدار متناسب با ولتاژ روی پایه هستند، به‌طوری که برای مثال، ولتاژ 2.5 ولت (نصف 5 ولت) مقدار تقریباً 511 (نصف 1023) را تولید می‌کند.

شما می‌توانید شش پایه ورودی آنالوگ (که با اعداد 0 تا 5 مشخص شده‌اند) را در پایین شکل 1 مشاهده کنید. همچنین، اگر به این پین ها برای حالت آنالوگ نیاز نباشد، آن ها می‌توانند به‌عنوان پین‌های دیجیتال استفاده شوند.

برخی از دستورالعمل‌های مرتبط با آنالوگ از یک پتانسیومتر (به‌اختصار pot) استفاده می‌کنند تا ولتاژ روی پین را تغییر دهند. هنگام انتخاب یک پتانسیومتر، مقدار 10 کیلو اهم بهترین گزینه برای اتصال به پین های آنالوگ است.

اگرچه اتصال بیشتر مدارهای این فصل ساده است، اما ممکن است شما بخواهید یک بِرِدبورد بدون نیاز به لحیم‌کاری تهیه کنید تا سیم‌کشی قطعات خارجی را ساده‌تر کنید. یک بردبورد کامل (full-length) دارای 830 نقطه اتصال (tie points: سوراخ‌هایی که سیم‌ها را در آن وارد می‌کنید) و دو ردیف تغذیه در هر طرف است.

ورودی دیجیتال و آنالوگ | قسمت بیست و چهارم آموزش آردوینو

بردبوردهای نیمه‌طول (Half-length) با 400 نقطه اتصال نیز به دلیل اندازه کوچک‌ترشان محبوب هستند، زیرا تقریباً هم‌اندازه برد Arduino Uno هستند.

یکی دیگر از ابزارهای مفید، یک مولتی‌متر ارزان‌قیمت است. تقریباً هر مولتی‌متر دیجتال امروزی برای این کار مناسب است،

اطلاعات
0
1
لینک و اشتراک
مقالات مرتبط
profile

Arduino captain

متخصص الکترونیک

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

مقالات بیشتر
slide

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

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

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

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

فروشگاه سیسوگ

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

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

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

نویسنده شو !

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

ارسال مقاله
become a writer

نویسنده شو !

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

ارسال مقاله
خانواده سیسوگ

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

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

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

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

فروشگاه سیسوگ

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

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

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

دیدگاه ها

become a writer

نویسنده شو !

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

ارسال مقاله
become a writer

نویسنده شو !

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

ارسال مقاله