ثابتها در آردوینو عبارات از پیش تعریفشدهای در زبان آردوینو هستند. از ثابتها برای راحتتر خوانده شدن برنامهها استفاده میشود. ثابتها را در چند گروه دستهبندی میکنیم:
تعریف سطح منطقی: true و false (ثابتهای بولی)
برای نمایش درستی و نادرستی در زبان آردوینو دو ثابت وجود دارد: true و false
false
توضیح false راحتتر است. false بهعنوان 0 (صفر) تعریف شده است.
true
true معمولاً بهعنوان 1 تعریف میشود؛ که درست است اما true تعریف گستردهتری دارد. هر عدد صحیحی (integer) که صفر نباشد، در مفهوم بولی به عنوان true در نظر گرفته میشود. پس 1- ، 2 و 200- هم (در مفهوم بولی) true محسوب میشوند.
توجه کنید که ثابتهای true و false برعکس HIGH, LOW, INPUT و OUTPUT، با حروف کوچک نوشته میشوند.
تعریف سطح پینی: HIGH و LOW
هنگام خواندن و یا نوشتن یک پین دیجیتالی، فقط دو مقدار وجود دارد که پین میتواند بگیرد (به آن ست شود): HIGH و LOW.
HIGH
بسته به اینکه پین به INPUT ست شود یا OUTPUT، معنی HIGH تا حدی متفاوت است. وقتیکه پین بهوسیلهی ()pinMode بهعنوان INPUT تعریف میشود و با ()digitalRead میخواند، آردوینو (Atmega) اگر شرایط زیر باشد، HIGH را گزارش میدهد:
- ولتاژ بیشتر از 3.0V در پین وجود دارد. (بردهای 5V)
- ولتاژ بیشتر از 2.0V در پین وجود دارد. (بردهای 3.3V)
یک پین همچنین ممکن است با ()pinMode بهعنوان یک INPUT پیکربندی شود و متعاقباً HIGH را با ()digitalWrite بسازد. این عمل ممکن است مقاومت pull up (پول آپ) 20k داخلی را فعال کند. مقاومتی که پین ورودی را به HIGH در خواندن میبرد، مگر بهوسیلهی مدار خارجی LOW شود. این طرز کارکرد INPUT_PULLUP است که در پایین با جزئیات بیشتر توضیح داده شده است.
وقتیکه یک پین با ()pinMode به OUTPUT پیکربندی شود و با ()digitalWrite به HIGH تنظیم (ست) شود، پین در حالات زیر است:
- 5 ولت (بردهای 5V)
- 3.3 ولت (بردهای 3.3V)
در چنین حالتی، این پین میتواند منبع جریان باشد؛ برای مثال روشن کردن یک LED که بهوسیلهی یک سری مقاومت به زمین متصل است.
LOW
معنی LOW نیز بسته به اینکه پین در وضعیت INPUT ست شده یا OUTPUT، متفاوت است. وقتیکه پین بهعنوان INPUT با ()pinMode پیکربندی میشود و با ()digitalRead میخواند، آردوینو (Atmega) اگر شرایط زیر باشد، LOW را گزارش میدهد:
- ولتاژ کمتر از 1.5V در پین وجود دارد. (بردهای 5V)
- ولتاژ کمتر از 1.0V (تقریبا) در پین وجود دارد. (بردهای 3.3V)
وقتیکه یک پین با ()pinMode به OUTPUT پیکربندی شود و با ()digitalWrite به LOW تنظیم (ست) شود، پین در حالت 0 ولت است (در بردهای 5V و 3.3V). در چنین حالتی، این پین میتواند جریان را کاهش دهد؛ برای مثال روشن کردن یک LED که بهوسیلهی یک سری مقاومت 5+ ولت (یا 3.3+ ولت) متصل است.
تعریف مد پینهای دیجیتال: INPUT, INPUT_PULLUP, and OUTPUT
از پینهای دیجیتال میتوان بهعنوان INPUT , INPUT_PULLUP, یا OUTPUT استفاده کرد. تغییر یک پین با ()pinMode، رفتار الکتریکی پین را تغییر میدهد.
پینهای تنظیمشده بهعنوان INPUT
گفته میشود که پینهای آردوینو (Atmega) که بهعنوان INPUT با ()pinMode تنظیمشدهاند، در حالت آمپدانس بالا هستند. پینهای تنظیمشده بهعنوان INPUT جریان بسیارکمی از مداری که در حال نمونهبرداری هستند را میکشند؛ معادل یک سری از مقاومتهای 100 مگااهمی در مقابل پین. این امر اینها را برای خواندن یک سنسور، مناسب میسازد.
اگر شما پینتان را بهعنوان INPUT تنظیم کردهاید و در حال خواندن یک سوییچ هستید، وقتیکه سوییچ در وضعیت باز (open) باشد، پین input شناور خواهد بود و نتیجهای غیرقابلپیشبینی را خواهد داد. برای مطمئن بودن از انجام صحیح عمل خواندن (read) هنگامیکه سوییچ open است، یک مقاومت pull-up یا pull-down باید استفاده شود. هدف استفاده از این مقاومتها، قرار دادن پین در وضعیتی شناختهشده، هنگامی open بودن سوییچ است. معمولا یک مقاومت 10K اهمی انتخاب میشود؛ چراکه مقداری است بهاندازهی کافی کم (low)، که باعث میشود پایه از حالت شناور خارج شود و همزمان مقداری است بهاندازهی کافی زیاد (high)، که هنگام بسته (close) شدن سوییچ، جریان زیادی از آن عبور نکند. برای اطلاعات بیشتر آموزش Digital Read Serial را ببینید.
اگر از مقاومت pull-down استفاده شود، وقتیکه سوییچ باز (open) است، پین LOW و وقتیکه سوییچ بسته (close) است، پین HIGH خواهد بود.
اگر از مقاومت pull-up استفاده شود، وقتیکه سوییچ باز (open) است، پین HIGH و وقتیکه سوییچ بسته (close) است، پین LOW خواهد بود.
پینهای تنظیمشده بهعنوان INPUT_PULLUP
میکروکنترلر Atmega روی آردوینو مقاومت pull-up درونی دارد (مقاومتهایی که بهصورت داخلی به پاور متصل هستند) که شما میتوانید به آن دسترسی داشته باشید. اگر شما ترجیح میدهید که از این مقاومتها بهجای مقاومتهای pull-up خارجی استفاده کنید، از آرگومان INPUT_PULLUP در ()pinMode استفاده کنید.
شاید برای شما مفید باشد: ترانزیستور GaN چیست و چه کاربردی دارد؟
برای مشاهده مثال کاربردی، به آموزش Input Pullup Serial مراجعه کنید.
پینهای تنظیمشده بهعنوان ورودی، چه با INPUT، چه با INPUT_PULLUP، اگر به ولتاژ منفی (ولتاژ زمین) یا ولتاژ بیش از ولتاژ کاری برد (5V or 3V) وصل شوند، ممکن است آسیب ببینند و یا حتی از کار بیفتند.
پینهای تنظیمشده بهعنوان Outputs
گفته میشود پینهای که بهعنوان OUTPUT با ()pinMode تنظیم شدهاند، در حالت آمپدانس پایین هستند؛ به این معنی که فقط میتوانند مقدار اساسی جریان را برای مدارهای دیگر تأمین کنند. پینهای Atmega میتوانند تا 40mA (میلیآمپر) جریان را برای مدار/دستگاههای دیگر تأمین(source) و یا جذب(sink) کنند؛ همین باعث میشود که اینها برای تأمین توان الایدیها مناسب باشند؛ چراکه الایدیها معمولاً کمتر از 40mA مصرف دارند.
لودهای بیشتر از 40mAA (مثل موتورها) به ترانزیستور یا دیگر مدارهای رابط نیاز خواهند داشت.
پینهای تنظیمشده بهعنوان Outputs اگر به ولتاژ منفی (ولتاژ زمین) یا ولتاژ بالای ریل پاور وصل شوند، ممکن است آسیب ببینند و یا حتی از کار بیفتند.
تعریف توکارها: LED_BUILTIN
بیشتر بردهای آردوینو در سریهای شامل مقاومت (رزیستور)، یک پین متصل به یک LED توکار دارند. ثابت LED_BUILTIN شمارهی پینی است که LED توکار به آن متصل است. در بیشتر بردها این LED به پین دیجیتال 13 وصل است.