آردوینومقدماتی۷ دقیقه مطالعهArduino IDE 2.x

کار با کتابخانه‌ها

کتابخانه در آردوینو چیست و چرا به آن نیاز دارید؛ نصب از Library Manager و نصب دستی و ZIP؛ ساختار پوشهٔ کتابخانه، تفاوت include با گیومه و علامت کوچک‌تر و جدول کتابخانه‌های پرکاربرد.

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

  • مفهوم کتابخانه و نقش include را توضیح دهید
  • کتابخانه را گام‌به‌گام از Library Manager در IDE 2.x نصب کنید
  • نصب دستی و نصب ZIP را در پوشهٔ libraries انجام دهید
  • خطای No such file or directory را بر اساس علت اصلی رفع کنید
نویسنده: تیم داکنامه · بازبینی: ۲۰۲۶-۱۰-۳۱
فهرست مطالب

سنسور دما را در نظر بگیرید: برای خواندنش باید پالس‌های زمان‌سنجی دقیق بفرستید، پاسخ را بیت‌به‌بیت بخوانید و عدد نهایی را از دل داده‌های خام دربیاورید. این کار صدها خط کد تخصصی می‌خواهد — و هر سازندهٔ سنسور محبوبی همین کار را یک بار کرده و نتیجه را به‌شکل «کتابخانه» (Library) در اختیار همه گذاشته است. کتابخانه بسته‌ای از کد آماده است که با یک #include به اسکچ شما می‌چسبد و جعبه‌ابزارتان را یک‌شبه بزرگ می‌کند. در این درس یاد می‌گیرید کتابخانه را از کجا بگیرید، چطور نصبش کنید و وقتی نصب «انجام شده» اما کد کامپایل نمی‌شود، چه بکنید.

کتابخانه چیست و چطور وارد اسکچ می‌شود؟

کتابخانه از نظر فنی مجموعه‌ای از فایل‌های کد C++ است: فایل سرآیند با پسوند .h که فهرست امکانات را معرفی می‌کند، و فایل پیاده‌سازی با پسوند .cpp که بدنهٔ توابع را دارد. شما فقط به سرآیند نگاه می‌کنید؛ خط زیر در بالای اسکچ، کل امکانات کتابخانه را در دسترس می‌گذارد:

cpp
#include <Servo.h>

دو شکل include را از هم تشخیص دهید: علامت < > یعنی «کتابخانه‌ای که در پوشه‌های کتابخانهٔ سیستم نصب است» و گیومهٔ " " یعنی «فایلی کنار همین اسکچ»، مثل "myHelper.h". اشتباه‌گرفتن این دو یکی از علت‌های رایج خطای کامپایل است.

نصب از Library Manager (روش اصلی)

Arduino IDE 2.x مدیر بستهٔ داخلی دارد و تقریباً همهٔ کتابخانه‌های مشهور آنجا هستند:

  1. IDE را باز کنید و از منوی Tools گزینهٔ Manage Libraries را بزنید (کلید میان‌بر Ctrl+Shift+I).
  2. در کادر جست‌وجوی بالا نام کتابخانه را بنویسید؛ مثلاً DHT sensor library.
  3. در فهرست نتایج، نسخهٔ سازندهٔ معتبر را انتخاب کنید (برای این مثال، Adafruit) و از منوی کنار دکمه، نسخه را بگذارید Latest مگر دلیل دیگری داشته باشید.
  4. دکمهٔ Install را بزنید.
  5. اگر پنجره‌ای باز شد و از نصب وابستگی‌ها (Dependencies) پرسید، Install All را بزنید؛ بعضی کتابخانه‌ها روی کتابخانه‌های دیگر سوارند و ردکردن این پنجره یعنی کامپایل بعدی شکست می‌خورد.

پس از پایان، نام کتابخانه باید در فهرست File ← Examples ← کتابخانه‌های نصب‌شده دیده شود؛ همین، تأیید موفقیت نصب است. IDE نیازی به ری‌استارت ندارد.

نصب دستی و نصب ZIP

بعضی کتابخانه‌ها در Library Manager نیستند — مثلاً نسخهٔ آزمایشی از صفحهٔ GitHub سازنده. دو راه دارید:

  • فایل ZIP: از منوی Sketch به Include Library و بعد Add .ZIP Library بروید و فایل ZIP دانلودشده را انتخاب کنید؛ IDE خودش آن را استخراج و در جای درست می‌گذارد.
  • پوشهٔ دستی: پوشهٔ کتابخانه را در مسیر Documents/Arduino/libraries کپی کنید. هر کتابخانه باید پوشهٔ خودش را داشته باشد، مثلاً Documents/Arduino/libraries/MFRC522. بعد از کپی، اگر IDE باز بود ببندید و دوباره باز کنید.

ساختار یک پوشهٔ کتابخانه

پوشهٔ استاندارد کتابخانه چنین شکلی دارد:

مسیر نقش
Servo.h (یا src/Servo.h) سرآیند؛ همان که include می‌کنید
src/ یا فایل‌های .cpp پیاده‌سازی توابع
examples/ نمونه‌اسکچ‌های سازنده، از منوی File ← Examples
library.properties شناسنامهٔ کتابخانه: نام، نسخه، سازنده

بخش examples/ گنج بی‌بدیل یادگیری است: تقریباً هر کتابخانه‌ای برای هر قابلیتش یک نمونهٔ اجراشدنی دارد. عادت حرفه‌ای: پیش از نوشتن هیچ کدی، اول نمونهٔ کتابخانه را آپلود و اجرا کنید تا مطمئن شوید سخت‌افزار و اتصال‌ها درست‌اند.

کتابخانه‌های پرکاربرد

کتابخانه نوع کاربرد
LiquidCrystal همراه هسته نمایشگر کاراکتری 16x2 حالت موازی
Servo همراه هسته کنترل سرووموتور
Wire همراه هسته ارتباط I2C
SPI همراه هسته ارتباط SPI
EEPROM همراه هسته ذخیرهٔ ماندگار در حافظهٔ EEPROM
DHT sensor library Adafruit (نصب از مدیر بسته) سنسورهای دما و رطوبت DHT11 و DHT22
RTClib Adafruit (نصب از مدیر بسته) ماژول‌های ساعت واقعی مثل DS3231
MFRC522 جامعهٔ کاربران (GitHub) ماژول خوانندهٔ RFID RC522

کتابخانه‌های «همراه هسته» پیش‌نصب‌اند و include کافی است؛ بقیه را یک بار نصب می‌کنید.

اشتباهات رایج و عیب‌یابی

خطا یا نشانه علت رایج راه‌حل
خطای No such file or directory هنگام کامپایل کتابخانه نصب نیست، نام include اشتباه است یا کلاه‌بردار < > و " " جابه‌جا شده نام سرآیند را از examples همان کتابخانه چک کنید و نصب را در Library Manager تأیید کنید
چند نسخه از یک کتابخانه نصب شده و رفتار عجیب یا خطای تعریف تکراری کپی دستی + نسخهٔ مدیر بسته هم‌زمان موجودند نسخهٔ اضافه را از Documents/Arduino/libraries حذف کنید و فقط یکی نگه دارید
کتابخانه قدیمی با IDE یا هستهٔ جدید نمی‌سازد نسخهٔ خیلی قدیمی یا خیلی جدید با وابستگی‌های ناسازگار در مدیر بسته نسخه را عوض کنید؛ نسخهٔ قبلی پایدار را از منوی نسخه انتخاب کنید
examples کتابخانه در منوی Examples دیده نمی‌شود پوشهٔ examples جابه‌جا شده یا IDE پیش از کپی باز بوده ساختار پوشه را با الگوی استاندارد مقایسه کنید و IDE را یک بار ری‌استارت کنید

تمرین‌ها

تمرین

تمرین ۱ — نصب Servo و حرکت رفت‌وبرگشتی

کتابخانهٔ Servo را از Library Manager نصب کنید و اسکچی بنویسید که یک سرووموتور روی پین ۹ بگیرد و بازویش را پیوسته از زاویهٔ ۰ تا ۱۸۰ و برعکس بچرخاند؛ هر پله ۱۵ میلی‌ثانیه فاصله داشته باشد.

نمایش راه‌حل

الگوی حلقه‌های رفت و برگشت مثل درس PWM است؛ فقط به‌جای analogWrite از توابع Servo استفاده می‌شود:

servo-sweep.ino
#include <Servo.h>

Servo myServo;   // Create a servo object

void setup() {
  myServo.attach(9);  // Signal wire on pin 9
}

void loop() {
  for (int angle = 0; angle <= 180; angle += 5) {
    myServo.write(angle);
    delay(15);
  }
  for (int angle = 180; angle >= 0; angle -= 5) {
    myServo.write(angle);
    delay(15);
  }
}

توضیح: Servo myServo یک شیء می‌سازد؛ attach(9) پین سیگنال را معرفی می‌کند و write(angle) بازو را به همان زاویه می‌فرستد. سیم سیگنال به پین ۹، تغذیهٔ سرو به 5V و GND مشترک — و برای سروهای بزرگ‌تر، تغذیهٔ خارجی را در درس موتورها دنبال کنید.

:::

خلاصه

  • کتابخانه بستهٔ کد آماده است؛ #include <Name.h> امکاناتش را به اسکچ اضافه می‌کند و < > برای کتابخانهٔ نصب‌شده و " " برای فایل کنار اسکچ است.
  • روش اصلی نصب، Library Manager با Ctrl+Shift+I است؛ پنجرهٔ وابستگی‌ها را همیشه با Install All بپذیرید.
  • نصب ZIP از Sketch ← Include Library و نصب دستی در Documents/Arduino/libraries برای کتابخانه‌های خارج از مدیر بسته است.
  • پوشهٔ استاندارد کتابخانه سرآیند .h، پیاده‌سازی .cpp یا src/ و پوشهٔ examples/ دارد؛ نمونه‌ها بهترین نقطهٔ شروع‌اند.

حالا ابزار هر کتابخانه‌ای را می‌توانید به اسکچ اضافه کنید؛ در درس بعدی با I2C آشنا می‌شوید، پروتکلی که بیشتر کتابخانه‌های ماژول‌ها روی آن سوارند.

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