آردوینو Arduinoمطالب آموزشیمطالب علمی

آموزش گام به گام آردوینو بخش دوم: مبانی برنامه‌نویسی آردوینو (زبان C/C++)

در بخش اول، با مفاهیم پایه الکترونیک و راه‌اندازی آردوینو آشنا شدیم و اولین پروژه خود یعنی چشمک زدن LED را اجرا کردیم. حالا نوبت به یادگیری عمیق‌تر زبان برنامه‌نویسی آردوینو می‌رسد. این بخش، هسته اصلی برنامه‌نویسی را تشکیل می‌دهد و شما را با ساختارها و دستورات مهم کدنویسی آشنا می‌کند.


فهرست محتوای بخش دوم


فصل ۱: ساختار زبان و توابع پایه

۱.۱ آناتومی یک برنامه آردوینو (اسکچ)

همانطور که در بخش اول دیدیم، هر برنامه آردوینو از دو بخش اصلی تشکیل شده است. این ساختار الزامی است و بدون آن برنامه اجرا نمی‌شود:

۱.۲ توابع پایه کار با پین‌های دیجیتال

برای کار با ورودی و خروجی‌های دیجیتال، سه تابع اصلی داریم که باید مانند جدول ضرب آنها را حفظ کنید .

تابع pinMode(pin, mode)

این تابع برای تنظیم حالت پین‌ها استفاده می‌شود و معمولاً در تابع setup قرار می‌گیرد .

  • پارامتر اول (pin): شماره پین مورد نظر (مثلاً ۱۳ برای پین دیجیتال ۱۳)
  • پارامتر دوم (mode): حالتی که برای پین تعریف می‌کنیم:
    • OUTPUT: برای خروجی (مثل LED)
    • INPUT: برای ورودی (مثل دکمه)
    • INPUT_PULLUP: ورودی با مقاومت داخلی pull-up
تابع digitalWrite(pin, value)

این تابع برای تنظیم ولتاژ خروجی پین‌هایی که به عنوان OUTPUT تعریف شده‌اند استفاده می‌شود .

  • پارامتر اول (pin): شماره پین مورد نظر
  • پارامتر دوم (value): مقدار ولتاژ خروجی:
    • HIGH: ولتاژ بالا (۵ ولت در آردوینو Uno)
    • LOW: ولتاژ پایین (۰ ولت)
تابع digitalRead(pin)

این تابع برای خواندن وضعیت یک پین ورودی استفاده می‌شود و مقدار HIGH یا LOW را برمی‌گرداند .

  • پارامتر ورودی: شماره پین مورد نظر
  • خروجی: HIGH (۵ ولت) یا LOW (۰ ولت)

۱.۳ تابع delay

این تابع برنامه را به مدت مشخصی (به میلی‌ثانیه) متوقف می‌کند. ۱۰۰۰ میلی‌ثانیه = ۱ ثانیه.

 

برد آردوینو پرو میکرو Arduino Pro Micro دارای ورودی USB Type-C

برد آردوینو پرو میکرو Arduino Pro Micro دارای ورودی USB Type-C

🛒 خرید از ECA

آردوینو نانو مینی Arduino Nano mini با ورودی USB Type-C و رابط سریال CH340

آردوینو نانو مینی Arduino Nano mini با ورودی USB Type-C و رابط سریال CH340

🛒 خرید از ECA

برد آردوینو پرو میکرو Arduino Pro Micro

برد آردوینو پرو میکرو Arduino Pro Micro

🛒 خرید از ECA

 

فصل ۲: متغیرها و انواع داده

متغیرها مکان‌هایی در حافظه هستند که داده‌ها را ذخیره می‌کنند. در آردوینو، قبل از استفاده از هر متغیر باید نوع آن را مشخص کنیم.

۲.۱ انواع داده اصلی

نوع داده اندازه محدوده مقادیر کاربرد
int ۲ بایت ۳۲۷۶۷- تا ۳۲۷۶۷ اعداد صحیح (مثل شماره پین‌ها)
float ۴ بایت ۳.۴-۱۰ × ۳.۴۸- تا ۳.۴-۱۰ × ۳.۴۸ اعداد اعشاری (مثل دما)
boolean ۱ بایت true یا false وضعیت‌های روشن/خاموش
char ۱ بایت ۱۲۸- تا ۱۲۷ کاراکترها (حروف)
byte ۱ بایت ۰ تا ۲۵۵ اعداد کوچک مثبت
long ۴ بایت ۲,۱۴۷,۴۸۳,۶۴۷- تا ۲,۱۴۷,۴۸۳,۶۴۷ اعداد صحیح بزرگ
unsigned int ۲ بایت ۰ تا ۶۵,۵۳۵ اعداد مثبت (مثل زمان)

۲.۲ حوزه عملکرد متغیرها (Scope)

متغیرها دو نوع حوزه عملکرد دارند:

متغیرهای سراسری (Global): خارج از توابع تعریف می‌شوند و در همه جای برنامه قابل استفاده هستند.

متغیرهای محلی (Local): داخل یک تابع تعریف می‌شوند و فقط در همان تابع قابل استفاده هستند.

۲.۳ آشنایی با آرایه‌ها

آرایه مجموعه‌ای از متغیرها با یک نام و نوع یکسان است. برای دسترسی به هر عضو از اندیس (شماره) استفاده می‌کنیم که از ۰ شروع می‌شود .


فصل ۳: ساختارهای کنترلی

ساختارهای کنترلی به ما اجازه می‌دهند جریان اجرای برنامه را کنترل کنیم.

۳.۱ ساختار شرطی if…else

از این ساختار برای تصمیم‌گیری بر اساس شرایط استفاده می‌کنیم.

مثال عملی: کنترل LED با دکمه

۳.۲ ساختار switch…case

وقتی چندین حالت مختلف داریم، به جای if…elseهای متعدد از switch استفاده می‌کنیم.

مثال: کنترل LEDهای مختلف با یک دکمه

۳.۳ حلقه for

از حلقه for برای تکرار یک بلوک کد به تعداد مشخص استفاده می‌کنیم .

مثال: روشن کردن ۵ LED به صورت متوالی

۳.۴ حلقه while

حلقه while تا زمانی که شرط برقرار است، تکرار می‌شود.

مثال: منتظر ماندن تا فشار دادن دکمه


فصل ۴: توابع پیشرفته و کتابخانه‌ها

۴.۱ نوشتن توابع شخصی‌سازی شده

گاهی نیاز داریم یک بلوک کد را چند بار در جاهای مختلف برنامه استفاده کنیم. به جای تکرار کد، یک تابع می‌نویسیم .

ساختار تابع:

مثال ۱: تابع بدون خروجی

مثال ۲: تابع با خروجی

۴.۲ مفهوم کتابخانه‌ها (Libraries)

کتابخانه‌ها مجموعه‌ای از توابع آماده هستند که کار با قطعات خاص را آسان می‌کنند. به جای نوشتن کدهای پیچیده برای راه‌اندازی یک سنسور، کتابخانه مربوطه را فراخوانی می‌کنیم .

نحوه وارد کردن کتابخانه:

مثال: استفاده از کتابخانه Servo برای کنترل موتور سروو

نصب کتابخانه‌های جدید:

  1. از منوی Sketch → Include Library → Manage Libraries
  2. در پنجره باز شده، نام کتابخانه مورد نظر را جستجو کنید
  3. روی Install کلیک کنید

پروژه عملی پایان بخش دوم: چراغ راهنمایی هوشمند

حالا وقت آن رسیده که همه مفاهیم یاد گرفته شده را در یک پروژه عملی ترکیب کنیم.

هدف پروژه: ساخت یک چراغ راهنمایی که با دکمه کنترل می‌شود. با هر بار فشردن دکمه، سیکل چراغ‌ها تغییر کند.

قطعات مورد نیاز:

  • برد آردوینو Uno
  • ۳ عدد LED (قرمز، زرد، سبز)
  • ۳ عدد مقاومت ۲۲۰ اهم
  • ۱ عدد پوش‌باتن (دکمه فشاری)
  • ۱ عدد مقاومت ۱۰ کیلو اهم (برای pull-down)
  • برد بورد و سیم جامپر

نحوه بستن مدار:

  • LED قرمز: پین ۸ ← مقاومت ۲۲۰Ω ← آند LED (پایه بلند) ← کاتد LED (پایه کوتاه) ← GND
  • LED زرد: پین ۹ ← مقاومت ۲۲۰Ω ← آند LED ← کاتد LED ← GND
  • LED سبز: پین ۱۰ ← مقاومت ۲۲۰Ω ← آند LED ← کاتد LED ← GND
  • دکمه: یک پایه به ۵ ولت، پایه دیگر به پین ۲ و از همان پایه یک مقاومت ۱۰k به GND (پیکربندی pull-down)

کد پروژه:

توضیح کد:

  1. رفع نویز (Debounce): دکمه‌های مکانیکی هنگام فشار دادن نوساناتی ایجاد می‌کنند. با استفاده از تکنیک debounce، این نوسانات را فیلتر می‌کنیم .
  2. تابع شخصی‌سازی شده: allLedsOff و setTrafficLight توابعی هستند که نوشته‌ایم تا کد خواناتر شود.
  3. آرایه: از آرایه ledPins برای مدیریت آسان‌تر پین‌ها استفاده کرده‌ایم.
  4. ساختار switch: برای مدیریت حالت‌های مختلف چراغ راهنمایی از switch استفاده شده است.
  5. حلقه for: در حالت‌های چشمک زن از حلقه for برای تکرار استفاده کرده‌ایم.

خلاصه بخش دوم

در این بخش یاد گرفتیم:

  • ساختار یک برنامه آردوینو شامل setup و loop را بشناسیم .
  • با توابع پایه pinMode، digitalWrite و digitalRead کار کنیم .
  • انواع داده مختلف مثل int، float، boolean و char را بشناسیم و استفاده کنیم.
  • مفهوم متغیرهای سراسری و محلی را درک کنیم.
  • با آرایه‌ها برای ذخیره مجموعه‌ای از داده‌ها آشنا شویم .
  • از ساختارهای شرطی if...else و switch...case برای تصمیم‌گیری استفاده کنیم .
  • با حلقه‌های تکرار for و while برنامه را کنترل کنیم .
  • توابع شخصی‌سازی شده بنویسیم تا کد ما خواناتر و قابل استفاده مجدد باشد.
  • با مفهوم کتابخانه‌ها و نحوه استفاده از آنها آشنا شویم .
  • یک پروژه عملی چراغ راهنمایی هوشمند با همه مفاهیم یاد گرفته شده پیاده‌سازی کنیم.

در بخش سوم، به سراغ کار با ورودی و خروجی‌های دیجیتال به صورت پیشرفته‌تر می‌رویم و با مفاهیم جدیدی مثل PWM و سنسورهای دیجیتال آشنا خواهیم شد.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا