در این مقاله میخواهیم به آموزش برنامه نویسی آردوینو از صفر بپردازیم. همانطور که میدانید هر برنامهای را میتوان را زبانهای مختلف برنامهنویسی نوشت. تفاوت هرکدام از زبانها در دسترسیهایی است که در هر بخش در اختیار برنامهنویس و کاربر قرار میدهد. بردهای آردوینو را نیز میتوان با IDEهای مختلفی برنامهنویسی کرد، اما بهترین گزینه برای این کار، استفاده از IDE طراحی شده شرکت آردوینو است.
در این مقاله مروری بر زبانهای برنامهنویسی آردوینو میکنیم و سپس به معرفی کتابخانههای آردوینو و شروع برنامه نویسی برای آن میپردازیم.
زبان برنامهنویسی آردوینو چیست؟
پایه زبان برنامهنویسی بردهای آردوینو، زبان C است، یعنی تمام دستورات زبان C را میتوان در IDE آردوینو استفاده کرد. البته در این IDE توابع دیگری نیز برای ارتباط ما با سختافزارهای سوار شده بر روی نیز تعریف شدهاند. توابعی همچون pinMode()، digitalWrite()، و …
شما می توانید برای خرید انواع سلف از جم ترونیک کلیک کنید.
دلیل انتخاب زبان C برای برنامهنویسی آردوینو
همانطور که میدانید زبانهای برنامهنویسی سطحبندی دارند. مطابق شکل زیر ما سه سطح برنامهنویسی داریم. سطح پایین برنامهنویسی کدهای باینری و ماشین است که مستقیماً به سختافزار داده میشود. سطح متوسط برای زبان Assembly و C است. زبان Assembly، کدهای برنامهنویسی را با استفاده از Assembler به کدهای ماشین تبدیل میکند و به سختافزار میدهد. زبان C، این کار را با compiler انجام میدهد.
زبانهای سطح بالاتر همچون Java، Javascript، Python این کار را با استفاده از Complier یا Interpreter انجام میدهد، اما سرعت انجام آن به نسبت زبانهای سطح متوسط کمتر است. دستورات این زبانها سادهتر و به زبان انسان نزدیکتر است. هر چه یک زبان برنامهنویسی به زبان انسان نزدیکتر باشد کندتر است و کد آن فضای بیشتری را اشغال میکند.
بنابراین، به دلیل محدودیتهای حافظه و سرعت پردازش، یک برد میکروکنترلر نسبت به یک کامپیوتر، تقریباً تمامی بردهای میکروکنترلر را با زبان C برنامهنویسی میکنند و کتابخانههای مختص هر برد و ماژولهای متصل به آن را در ابتدای کد اضافه میکنند.
البته برنامهنویسی آردوینو را با زبانهای دیگری هم میتوانید انجام بدهید.
در این زمینه میتوانید مقاله بهترین زبانهای برنامهنویسی آردوینو را بخوانید.
محیط Arduino IDE
Arduino IDE 1
معمولاً از IDE ورژن 1 برای کدنویسی آردوینو که محیط آن را در شکل زیر مشاهده میکنید استفاده میشود. این IDE بهترین گزینه برای شروع یادگیری است. اما برای برنامهنویسی حرفهای چندین عیب دارد. از جمه این که:
- توابع برنامهنویسی هیچگونه توضیحی ندارند، در IDEهای دیگری همچون Visual Studio وقتی شما نام یک تابع را مینویسید، اگر کرسر را داخل پرانتز نگه دارید، درصورتیکه کتابخانه موردنیاز تابع تعریف شده باشد کامپایلر توضیحات تابع ورودی و خروجی آن را به شما میدهد.
- شما نمیتوانید از طریق نوشتن اسم یک تابع، به فایل کتابخانه دسترسی داشته باشید. از روشهای دیگر نیز نمیتوانید، مگر این که فایل کتابخانه را پیدا کنید و مستقیماً آن را با IDE باز کنید.
Arduino IDE 2
مزیتهای ورژن ۲ نسبت به ۱ عبارتند از:
- قابلیت تغییر تم محیط IDE : شاید ابتدا بیاهمیت به نظر برسد، اما تعداد برنامهنویسهای حرفهای که در تم تاریک دوست دارند برنامهنویسی کنند بسیار بیشتر از بقیه است.
- گزینه auto-complete: همانند سایر IDE ها، در این IDE میتوانید بخشی از اسم یک تابع را بنویسید و IDE آن را پیشبینی کند و شما با زدن دکمه TAB، آن را برایتان کامل کند.
- در این IDE، میتوانید به محل تعریف توابع در کتابخانههایشان بروید و اطلاعات بیشتری درباره آن به دست آورید.
- یک گزینه Debugger نیز برای دیباگ و رفع مشکل کد در این ورژن وجود دارد.
در شکل زیر محیط IDE آردوینو ورژن 2 را مشاهده میکنید. قابلیتهای متعددی نسبت به ورژن 1 به آن اضافه شده است که کار را برای برنامهنویسهای حرفهای آردوینو راحتتر کرده است.
راهاندازی بردهای آردوینو
برای راهاندازی بردهای آردوینو و ESP که با این IDE برنامهنویسی میشوند، باید دو کار را انجام دهید:
- طبق مسیر زیر ابتدا پورت سریالی که میخواهید از طریق آن برد آردوینو را برنامهنویسی کنید مشخص کنید.
2. شماره COM پورت سریالتان متغیر نیست، اما در لپتاپهای مختلف متفاوت است. برای فهمیدن آن ابتدا مطابق شکل زیر در بخش searchتان عبارت Device Manager را سرچ کنید.
3. مطابق شکل زیر در محیط Device Manager، در بخش Ports (COM & LPT) شماره COM پورت سریال را مشاهده میکنید. مثلاً اینجا شماره COM آردوینو 10 است. این شماره را بهخاطر بسپارید و در محیط IDE، آن را انتخاب کنید.
معرفی کتابخانهها
محیط Arduino IDE بر خلاف IDE های دیگر زبان C، بسیار دوستانه است. کتابخانههای زیادی به طور پیشفرض در آن تعریف شده است. آردوینو با خیلی از سیستمها سازگار است و برای بسیاری از سختافزارها کتابخانههای مفیدی دارد. بعضی از کتابخانهها در کد شما لحاظ نشدهاند؛ اما از طریق IDE میتوان آنها را ساخت.
از مسیری که در شکل زیر مشخص شده است، میتوانید کتابخانه نصب شده و نصب نشده را مشاهده کنید.
سپس فضای شکل زیر را مشاهده خواهید کرد که کتابخانه نصب شده را INSTALLED و کتابخانههایی که نیاز به نصب دارد، دکمه Install برای آنها فعال است. همچنین کتابخانههایی هستند که باید بهروزرسانی شوند. آردوینو در هنگامی که اینترنت شما وصل باشد، از شما میپرسد که آیا میخواهید آنها را بهروزرسانی کنید یا خیر.
معرفی توابع برای برنامه نویسی Arduino
همانطور که پیشتر گفته شد، تمامی توابع پیشفرض زبان برنامهنویسی C را میتوان در IDE قابلاستفاده است و آردوینو توابع پیش فرضی برای کار با سختافزار تعریف کرده است.
setup() : در این تابع حالت پینها و تنظیمات اولیه، راهاندازی و مقداردهی اولیه صورت میگیرد، زیرا کد آن یکبار قبل از اجرای تابع loop() اجرا میشود. این تابع void است و ورودی ندارد
loop() : کدهای این بخش مدام در حال اجرا است. سرعت اجرای کدهای آن را با یک تابع delay() میتوان تغییر داد. عموماً بخش اصلی کدها در اینجا قرار میگیرد که آردوینو مدام در حال اجرای کد باشد. این تابع void است و ورودی ندارد.
delay() : عموماً برای ایجاد تأخیر استفاده میشود. ورودی آن زمان موردنظر برای تأخیر بر حسب میلیثانیه است.
pinMode() : از این تابع برای تعیین حالت پینهای ورودی/ خروجی دیجیتال آردوینو (پینهای 0 تا 13) استفاده میشود. ورودی اول آن شماره پین و ورودی دوم وضعیت حالت INPUT (ورودی) و OUTPUT (خروجی) است.
digitalWrite() : برای تعیین وضعیت پینهای دیجیتال آردوینو است. ورودی اول شماره پین و ورودی دوم آن وضعیت پین HIGH (روشن) و LOW (خاموش) است.
analogeWrite() : برای تعیین وضعیت پینهایی است که توانایی تولید سیگنال PWM را دارند. (پینهای 3،5،6،9،10،11) ورودی اول آن شماره پین و ورودی دوم میزان Duty cycle سیگنال PWM است.
analogRead() : برای خواندن مقدار یک پین ورودی آنالوگ یا سیگنالهای دیجیتال PWM دار است. تنها یک ورودی دارد و آن شماره پین است.
digitalRead() : برای خواندن مقدار یک پین ورودی دیجیتال است. تنها یک ورودی دارد و آن شماره پین است.
Serial.begin() : برای تعیین میزان Baud rate در ارسال و خواندن با پورت سریال است.
Serial.print() : با استفاده از این تابع یک مقدار را میتواند روی پورت سریال ارسال کنید. این تابع فقط آن مقدار را بهعنوان ورودی دریافت میکند.
Serial.println() : همانند تابع بالایی است، با این تفاوت که هر بار که داده ارسال میکند، داده بعدی در خط بعدی نمایش داده میشود.
خروجی دو تابع فوق را میتوان در مسیر Tools -> Serial Monitor/Serial Plotter مشاهده کرد.
جمعبندی
در این مقاله با محیط برنامهنویسی آردوینو آشنا شدیم اما تا اینجا فقط مفاهیم اولیه و توابع پیشفرض آردوینو را آموزش دادهایم. شما برای آموختن بهتر باید پروژههای متعددی را انتخاب و برنامهنویسی کنید و کار با توابع موجود در کتابخانههای موردنیاز آن را در پروژه یاد بگیرید. این شناخت اولیه به شما کمک میکند که با آگاهی نسبت به زبانی که دارید برنامهنویسی میکند شروع به انجام پروژههای متعدد بکنید. پیشنهاد میکنیم اگر سوالی درباره شروع برنامهنویسی آردوینو دارید زیر همین پست از ما بپرسید. همچنین میتوانید از مجله جم ترونیک، سایر پروژههایی که میتوانید با استفاده از آردوینو برنامه نویسی و اجرا کنید را ببینید.
شما می توانید برای خرید برد آردوینو همی حالا کلیک کنید.