در قسمت بیست و سوم از آموزش آردوینو به بررسی استفاده از آردوینو با رزبری پای، پرداختیم. در این قسمت قصد داریم درباره ورودی دیجیتال و آنالوگ صحبت کنیم.
آردوینو توانایی تشخیص ورودیهای دیجیتال و آنالوگ را دارد که در نتیجه، این امکان فراهم میشود که به شما و دنیای اطراف واکنش نشان دهد. این فصل روشهایی را معرفی میکند که شما میتوانید از آنها برای نظارت و پاسخ به این ورودیها استفاده کنید. از جمله این موارد عبارتاند از:
این فصل شامل توضیحاتی درباره پینهای آردوینو است که میتوانند ورودیهای دیجیتال و آنالوگ را تشخیص دهند. پینهای ورودی دیجیتال، حضور یا عدم حضور ولتاژ روی یک پین را تشخیص میدهند. پینهای ورودی آنالوگ مقدار ولتاژ روی یک پین را اندازهگیری میکنند.
شکل 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 استفاده میشوند و بهتر است برای سایر کاربردها از آنها استفاده نشود.
در آردوینو، نامهای منطقی یا ثابتهای زیادی برای اشاره به پینها وجود دارد. بهجای استفاده از شمارههای عددی پینها، توصیه میشود از این ثابتها استفاده کنید، چرا که این روش باعث سازگاری بهتر کد با انواع مختلف بردهای آردوینو و بردهای سازگار با آردوینو میشود.
جدول 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 |
بردهایی مانند Mega و Due تعداد بسیار بیشتری پایه دیجیتال و آنالوگ دارند. پایههای دیجیتال 0 تا 13 و پایههای آنالوگ 0 تا 5 در همان موقعیتی قرار دارند که در برد استاندارد وجود دارند، بنابراین شیلدهای سختافزاری طراحیشده برای برد استاندارد میتوانند روی این بردها نیز نصب شوند. مشابه برد استاندارد، شما میتوانید از پایههای آنالوگ بهعنوان پایههای دیجیتال استفاده کنید، اما در برد Mega شمارهگذاری پایههای آنالوگ از A0 تا A15 ادامه دارد. شکل 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 روی بردهایی مانند 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 هستند.
یکی دیگر از ابزارهای مفید، یک مولتیمتر ارزانقیمت است. تقریباً هر مولتیمتر دیجتال امروزی برای این کار مناسب است،
من کاپیتان آردوینو، اسمم میلاده و اینجا هستم تا تجربیاتم در رابطه با آردوینو رو با شما به اشتراک بزارم!
مقالات بیشتر
نویسنده شو !
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.