آردوینومقدماتی۶ دقیقه مطالعهArduino IDE 2.x / Uno R3

ورودی و خروجی دیجیتال — چشمک‌زن

پین‌های دیجیتال Uno را با pinMode و digitalWrite کنترل می‌کنید، چشمک‌زن LED می‌سازید و دکمه را با INPUT_PULLUP می‌خوانید.

آنچه در این درس می‌آموزید

  • پین دیجیتال را با pinMode و digitalWrite به‌عنوان خروجی کنترل کنید
  • LED خارجی را با مقاومت ۲۲۰ اهم به برد وصل کنید
  • حالت دکمه را با INPUT_PULLUP بخوانید و به روشن‌وخاموش LED وصل کنید
نویسنده: تیم داکنامه · بازبینی: ۲۰۲۶-۱۰-۳۰
فهرست مطالب

دنیای دیجیتال فقط دو حالت می‌شناسد: HIGH (۵ ولت) و LOW (صفر ولت). همهٔ کارهای این درس با همین دو حالت انجام می‌شود: روشن‌وخاموش‌کردن LED و خواندن وضعیت دکمه.

«چشمک‌زن» (Blink) همان «سلام دنیا» دنیای سخت‌افزار است؛ شما آن را هم روی LED داخلی برد و هم روی مدار خارجی خودتان می‌سازید و بعد دکمه را به‌عنوان ورودی اضافه می‌کنید.

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

Uno تعداد ۱۴ پین دیجیتال (D0 تا D13) دارد که هر کدام می‌توانند خروجی یا ورودی باشند:

پین‌ها کاربرد نکته
D0 و D1 ارتباط سریال با رایانه برای مدار خودتان رزرو نکنید
D2 تا D13 ورودی/خروجی عمومی D13 به LED داخلی برد وصل است
پین‌های با علامت ~ خروجی PWM در درس PWM به‌کار می‌آید

چشمک‌زن روی LED داخلی

LED داخلی برد روی پین ۱۳ نصب است و ثابت LED_BUILTIN همان پین را نشان می‌دهد. این کد بدون هیچ سیمی کار می‌کند:

blink.ino
void setup() {
  pinMode(LED_BUILTIN, OUTPUT);     // Set pin 13 as output
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);  // On: 5 volts
  delay(1000);                      // Wait one second
  digitalWrite(LED_BUILTIN, LOW);   // Off: 0 volts
  delay(1000);
}

توضیح خط‌به‌خط:

  1. pinMode(LED_BUILTIN, OUTPUT) در setup() به میکروکنترلر می‌گوید این پین به‌عنوان خروجی به‌کار می‌رود.
  2. digitalWrite(pin, HIGH) پین را به ۵ ولت و digitalWrite(pin, LOW) آن را به صفر ولت می‌برد.
  3. delay(1000) برنامه را ۱۰۰۰ میلی‌ثانیه نگه می‌دارد؛ در این مدت برد هیچ کار دیگری نمی‌کند.
  4. چون loop() بی‌نهایت تکرار می‌شود، LED تا ابد هر ثانیه حالتش عوض می‌شود.

اتصال LED خارجی

برای ساخت مدار خودتان، LED و مقاومت ۲۲۰ اهم روی برد سرهم‌بندی (Breadboard) بگذارید:

پین آردوینو اتصال توضیح
D12 یک پایهٔ مقاومت ۲۲۰ اهم خروجی برنامه
پایهٔ دیگر مقاومت آند LED (پایهٔ بلند) جریان از پین به LED می‌رسد
GND کاتد LED (پایهٔ کوتاه) مسیر بازگشت جریان

مقاومت سری جریان را محدود می‌کند: از اختلاف ۵ منهای ۲ ولت روی ۲۲۰ اهم، جریان حدود ۱۳٫۶ میلی‌آمپر می‌گذرد که هم برای LED و هم برای پین برد امن است. در کد فقط کافی است LED_BUILTIN را با عدد ۱۲ عوض کنید.

خواندن دکمه با INPUT_PULLUP

پین دیجیتال می‌تواند ورودی هم باشد. مشکل ورودی بدون اتصال مشخص این است که حالتش شناور و نامطمئن است؛ راه‌حل استاندارد، «مقاومت کشیده به بالا» (Pull-up) است و آردوینو این مقاومت را داخل خودش دارد:

پین آردوینو اتصال توضیح
D2 یک پایهٔ دکمه ورودی برنامه
پایهٔ دیگر دکمه GND با فشردن دکمه، پین به زمین وصل می‌شود

با INPUT_PULLUP پین به‌طور پیش‌فرض HIGH است و با فشردن دکمه LOW می‌شود:

button-led.ino
const int buttonPin = 2;
const int ledPin = 12;

void setup() {
  pinMode(buttonPin, INPUT_PULLUP);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  if (digitalRead(buttonPin) == LOW) {
    digitalWrite(ledPin, HIGH);   // Button pressed: LED on
  } else {
    digitalWrite(ledPin, LOW);    // Button released: LED off
  }
}

منطق برعکس به نظر می‌رسد اما درست است: مقاومت داخلی پین را به ۵ ولت «می‌کشد» (پس حالت عادی HIGH)، و دکمهٔ فشرده‌شده پین را به GND وصل می‌کند (LOW).

تمرین‌ها

تمرین

تمرین ۱ — الگوی دوبل

چشمک‌زنی بنویسید که LED داخلی در هر دوره، دو بار کوتاه روشن شود (هر بار ۲۰۰ میلی‌ثانیه روشن با ۲۰۰ میلی‌ثانیه فاصله) و سپس یک مکث بلند ۱ ثانیه‌ای داشته باشد.

cpp
// Write your code here
نمایش راه‌حل
cpp
void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(200);
  digitalWrite(LED_BUILTIN, LOW);
  delay(200);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(200);
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);
}

:::

خلاصه

  • خروجی دیجیتال فقط دو حالت دارد: HIGH یعنی ۵ ولت و LOW یعنی صفر ولت.
  • pinMode حالت پین را تعیین می‌کند؛ digitalWrite و digitalRead آن را می‌نویسند یا می‌خوانند.
  • LED خارجی همیشه با مقاومت سری (رایج: ۲۲۰ اهم) به پین وصل می‌شود.
  • INPUT_PULLUP مقاومت داخلی را فعال می‌کند: حالت عادی پین HIGH و با فشردن دکمه LOW می‌شود.
  • delay کل برنامه را متوقف می‌کند و millis() جایگزین بدون توقف آن است.

دو حالت HIGH و LOW را کنترل می‌کنید؛ در درس بعدی می‌بینید چطور با ترفند PWM از همین پین‌های دیجیتال، خروجی «شبه‌آنالوگ» و نور متغیر بسازید.

منابع و ارجاع‌ها

درس‌های مرتبط