
در آردوینو، INPUT، INPUT_PULLUP و OUTPUT سه ثابت پیشتعریفشده هستند که برای تعیین حالت یک پین دیجیتال با تابع pinMode() استفاده میشوند.
این تنظیم مشخص میکند که آیا پین برای خواندن سیگنال (ورودی) است یا برای ارسال سیگنال (خروجی)، و در صورت ورودی بودن، آیا نیاز به مقاومت بالاکش داخلی دارد یا خیر.
توضیح برای مبتدیها: فکر کنید هر پین آردوینو مثل یک دریچه دو طرفه است. با
pinMode()تصمیم میگیرید این دریچه فقط ورودی باشد (مثل گوش دادن به دکمه)، فقط خروجی باشد (مثل فرمان دادن به LED)، یا ورودی با یک «کمککننده داخلی» (مقاومت بالاکش) برای جلوگیری از سیگنالهای نامشخص.
وقتی یک پین را به عنوان OUTPUT تنظیم میکنید، آردوینو میتواند ولتاژ آن را کنترل کند:
— با digitalWrite(pin, HIGH) ولتاژ پین را به ۵ ولت (یا ۳.۳ ولت) میرساند.
— با digitalWrite(pin, LOW) ولتاژ پین را به ۰ ولت (زمین) متصل میکند.
pinMode(13, OUTPUT); // پین 13 خروجی است
digitalWrite(13, HIGH); // LED روشن میشود
این حالت برای کنترل LED، رله، بوزر و سایر قطعات فعال استفاده میشود.
در حالت INPUT، پین فقط ولتاژ خارجی را میخواند. اما اگر پین به هیچ چیز متصل نباشد، مقدار آن «شناور» (floating) است — یعنی ممکن است بهصورت تصادفی بین HIGH و LOW تغییر کند.
pinMode(2, INPUT); // پین 2 ورودی ساده است
int state = digitalRead(2);
توضیح برای مبتدیها: «شناور بودن» مثل این است که یک میکروفون را بدون پوشش روشن کنید — صداهای نامربوط (سر و صدا) گرفته میشود. برای جلوگیری از این مشکل، معمولاً از
INPUT_PULLUPاستفاده میشود.
در این حالت، آردوینو یک مقاومت داخلی (معمولاً ۲۰ تا ۵۰ کیلو اهم) بین پین و ولتاژ مثبت فعال میکند. این کار باعث میشود: — وقتی دکمه فشرده نشده باشد، پین به ولتاژ متصل است → digitalRead() مقدار HIGH برمیگرداند.
— وقتی دکمه فشرده شود (و به زمین وصل شود)، پین به زمین متصل میشود → مقدار LOW برمیگرداند.
pinMode(2, INPUT_PULLUP); // فعالسازی مقاومت بالاکش داخلی
int button = digitalRead(2); // اگر دکمه فشرده شود، LOW برمیگرداند
این روش رایجترین و سادهترین راه برای خواندن دکمههاست — چون نیازی به مقاومت فیزیکی خارجی ندارد.
// پین 13: خروجی (LED)
pinMode(13, OUTPUT);
// پین 2: ورودی با مقاومت بالاکش (دکمه)
pinMode(2, INPUT_PULLUP);
// پین 3: ورودی ساده (نیاز به مقاومت خارجی دارد)
pinMode(3, INPUT);
void loop() {
// کنترل LED
digitalWrite(13, HIGH);
// خواندن دکمه با INPUT_PULLUP
if (digitalRead(2) == LOW) {
Serial.println("دکمه فشرده شد!");
}
// خواندن سنسور با INPUT (فرض کنید مقاومت خارجی وجود دارد)
if (digitalRead(3) == HIGH) {
Serial.println("سنسور فعال است.");
}
}
مگر اینکه نیاز خاصی داشته باشید، همیشه از INPUT_PULLUP برای دکمهها و سوئیچها استفاده کنید. این کار: — از نیاز به مقاومت فیزیکی جلوگیری میکند.
— از خطاهای ناشی از پینهای شناور جلوگیری میکند.
— مدار شما را سادهتر و قابل اعتمادتر میکند.
پینهای خروجی آردوینو میتوانند حداکثر ۴۰ میلیآمپر جریان تأمین کنند. اگر LED یا قطعهای نیاز به جریان بیشتری دارد، حتماً از ترانزیستور یا درایور استفاده کنید — در غیر این صورت، آردوینو آسیب میبیند.
OUTPUT: برای کنترل قطعات (LED، رله)INPUT: ورودی ساده — نیاز به مقاومت خارجی داردINPUT_PULLUP: ورودی با مقاومت داخلی — ایدهآل برای دکمههاdigitalRead() یا digitalWrite()، پین را با pinMode() تنظیم کنیداین مطلب بر اساس مستندات رسمی Arduino از بخش INPUT, INPUT_PULLUP, OUTPUT – Language Reference تهیه شده است، با توضیحات سادهشده، مثالهای کاربردی و نکات طلایی منحصربهفرد برای جامعه فارسیزبان.
برچسب های مهم