در قسمت سوم از آموزش آردوینو به بررسی کامل مراحل راهاندازی برد آردوینو پرداختیم. در این قسمت قصد داریم به بررسی طریقه ساخت یک آردوینو اسکچ با استفاده از IDE (Integrated Development Environment) و نکات مربوط به ساخت و ذخیره فایلهای اسکچ بپردازیم. پس تا پایان این مطلب با سیسوگ همراه باشید.
استفاده از IDE برای ساخت آردوینو اسکچ
در این مطلب درباره فرایند کامپایل آردوینو، مشکلات آن و پیغامهای خطایی که ممکن است داشته باشد، صحبت خواهیم کرد.
اسکچ (sketch) چیست؟
برنامه نوشته شده در آردوینو بهعنوان اسکچ (sketch) شناخته میشود. فرایندی که یک اسکچ را به فایلی (باینری یا هگز) تبدیل میکند که بر روی برد کار کند یا به اصلاح برد را پروگرام کند، کامپایل نام دارد. شما میتوانید از آردوینو IDE برای ایجاد، باز کردن و ادیت اسکچهایی که مشخص میکنند که برد چه کاری انجام خواهد داد، استفاده کنید. همچنین، شما میتوانید از دکمههای بالای IDE برای انجام این عملیات استفاده کنید (در شکل 1 نشان داده شده است)، یا میتوانید از منوها یا میانبرهای کیبورد استفاده کنید. (در شکل 2 نشان داده شده است)
ادیتور اسکچ (Sketch Editor area) جایی است که شما میتوانید کد اسکچ را در آن مشاهده و ویرایش کنید. این قسمت از میانبرهای متداول ویرایش متن پشتیبانی میکند، مانند Ctrl-F (⌘+F در مک) برای جستجو، Ctrl-Z (⌘+Z در مک) برای Ctrl-C ،undo(⌘+C در مک) برای کپیکردن متن مشخص شده و Ctrl-V (⌘+V در مک) برای پیست کردن متن انتخاب شده. این ابزارها به شما کمک میکنند که بهراحتی کد خود را ویرایش و تغییرات لازم را اعمال کنید.
شکل 1 نشان میدهد که چگونه اسکچ Blink (اسکچی که به طور پیشفرض در برد آردوینو load شده است) را لود (load) کنید.
همانطور که در شکل 1 نشان داده شده است، بعد از اجرای نرمافزار آردوینو، به منوی File رفته و گزینه Examples را انتخاب کنید و سپس از بخش Basics گزینه 01 Blink را انتخاب نمایید. کد چشمکزدن LED داخلی (built-in) در پنجره ادیتور اسکچ نمایش داده میشود. (به شکل 2 توجه کنید)
قبل از ارسال برنامه به برد، باید آن را به دستوراتی تبدیل کنید که توسط میکروکنترلر آردوینو، قابل خواندن و اجرا باشد؛ این عمل را کامپایل کردن مینامند. برای انجام این کار، دکمه کامپایل (دکمه بالا سمت چپ) را کلیک کنید، یا از منوی Sketch → Verify/Compile (Ctrl-R; ⌘+R در مک) استفاده کنید.
اکنون باید پیغام “در حال کامپایل کردن اسکچ… ” را ببینید. بعد از یک الی دو ثانیه، پیغام “کامپایل انجام شد” ظاهر میشود. در ناحیه بلک کنسول، پیغام زیر ظاهر میشود:
Sketch uses 930 bytes (2%) of program storage space. Maximum is 32256 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 2039 bytes for local variables. Maximum is 2048 bytes.
ممکن است پیغام بسته به برد و نسخه آردوینو، متفاوت باشد. این پیغام به شما میگوید اسکچ جاری چه مقدار از منابع برد شما را مصرف کرده است.
نرمافزار IDE از تعدادی ابزار command-line برای کامپایل کردن اسکچ استفاده میکند.
پیغام نهایی که اندازه اسکچ را مشخص میکند، نشاندهنده مقدار حافظه برنامه است. اگر اندازه اسکچ کامپایل شده از حافظه برد بیشتر باشد، پیغام خطای زیر نمایش داده میشود:
Sketch too big; see http://www.arduino.cc/en/Guide/Troubleshooting#sizefor tips on reducing it
اگر این اتفاق افتاد، باید اندازه اسکچ خود را کوچکتر کنید تا بتوانید آن را بر روی برد قرار دهید یا اینکه باید یک برد با ظرفیت حافظه فلش بیشتر تهیه کنید. اگر متغیرهای global شما از ظرفیت رم بیشتر باشد، بهجای پیغام قبلی، یک پیغام خطای متفاوت به شکل زیر مشاهده خواهید کرد:
Not enough memory; see http://www.arduino.cc/en/Guide/Troubleshooting#size
for tips on reducing your footprint.
در این صورت، باید کد خود را بررسی کرده و مقدار حافظهای که به متغیرهای global اختصاص میدهید را کاهش دهید یا یک برد با ظرفیت حافظه SRAM (حافظه داینامیک) بیشتر تهیه کنید.
نکته:
“برای جلوگیری از اشتباه نوشتن کد مثال، نرمافزار آردوینو اجازه ذخیره تغییرات در اسکچهای مثال برد داخلی (built-in) را نمیدهد و شما باید نام آنها را با استفاده از گزینه File → Save As تغییر دهید. اما اسکچهایی که خودتان نوشتهاید را میتوانید از طریق گزینه Save ذخیره کنید.”
اگر در برنامه، خطاهایی وجود داشته باشد، کامپایلر یک یا چند پیغام خطا را در پنجره کنسول، پرینت میکند. این پیغامها میتوانند به شناسایی خطا کمک کنند.
علاوه بر خطاها، اگر در اسکچ شما ویژگیهایی باشد که احتمالش وجود داشته باشد که مشکلاتی ایجاد کنند، کامپایلر میتواند هشدارهایی نیز تولید کند. این هشدارها میتوانند به شما کمک کنند تا از مواردی که ممکن است در آینده باعث مشکل شوند، جلوگیری کنید. همچنین، شما میتوانید سطح هشدارهای خود را از طریق منوی File → Preferences (در ویندوز یا لینوکس) یا Arduino → Preferences (در macOS) تنظیم کنید و Compiler Warnings را روی None، Default، More یا All تنظیم کنید. آردوینو به طور پیشفرض با نام None تنظیم شده است. اما ما پیشنهاد میکنیم که آن را با نام Default یا More ذخیره کنید.
برنامهای که بر روی برد آپلود میشود، نمیتواند توسط کامپیوتر شما مجددا دانلود شود؛ بنابراین، مطمئن شوید که کد اسکچ را حتما روی کامپیوتر خود ذخیره کردهاید. همچنین، اگر میخواهید تغییراتی که در فایلهای مثال ایجاد کردهاید را ذخیره کنید، باید از گزینه Save As استفاده کنید و به فایل جدید که تغییرات روی آن اعمال شده است، نام دیگری بدهید.
طریقه ساخت و ذخیره فایلهای اسکچ
در ادامه این قسمت قصد داریم درباره چگونگی ساخت و ذخیره یک اسکچ بر روی کامپیوتر صحبت کنیم.
برای باز کردن پنجره ادیتور جدید، ابتدا نرمافزار Arduino IDE را اجرا کنید. سپس به منوی File رفته و گزینه New را انتخاب کنید. کد پیشفرض در پنجره ادیتور را حذف کنید و کد زیر را جایگزین آن کنید (این کد شبیه به کد Blink است، با این تفاوت که فاصلهی بین روشن و خاموش بودن LED دوبرابر شده است):
1 2 3 4 5 6 7 8 9 10 11 | void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); // set the LED on delay(2000); // wait for two seconds digitalWrite(LED_BUILTIN, LOW); // set the LED off delay(2000); // wait for two seconds } |
برای کامپایل کردن کد، میتوانید دکمهی کامپایل که دکمهی سمت چپ است را فشار دهید. همچنین، میتوانید به منوی Sketch رفته و گزینه Verify/Compile را انتخاب کنید.
سپس کد را با کلیک بر روی دکمه آپلود، یا انتخاب گزینه File→Upload to I/O board آپلود کنید. پس از آپلود، LED باید با هر فلاش، دو ثانیه روشن شود.
شما میتوانید با کلیک بر روی دکمه Save یا انتخاب گزینه Save از منوی File، این اسکچ را در کامپیوتر خود ذخیره کنید. همچنین، شما میتوانید با انتخاب گزینه Save As، آن را با نام جدیدی ذخیره کنید؛ اگر این گزینه را انتخاب کنید، یک باکس روی صفحه ظاهر میشود که در آن میتوانید نام جدید فایل را وارد کنید.
زمانی که میخواهید یک فایل را در IDE ذخیره کنید، یک پنجره روی سیستم شما باز میشود که پیشنهاد میدهد که اسکچ خود را در یک پوشه به نام Arduino در پوشه My Documents (یا پوشه Documents در سیستمعامل Mac) ذخیره کنید. شما میتوانید نام پیشفرض اسکچ خود را به نامی که می خواهید، تغییر دهید. سپس برای ذخیره فایل، روی دکمه Save کلیک کنید.
نکته
“به طور کلی، نام پیشفرض هر اسکچ ایجاد شده، کلمه sketch و تاریخ فعلی است. تغییر نام پیشفرض اسکچ به نامی مناسب، به شما کمک میکند تا در آینده بهراحتی موضوع فایل اسکچ خود را تشخیص دهید.”
اگر در تغییر نام فایل اسکچ از کاراکترهایی استفاده کنید که برای IDE قابلقبول نیست (مانند کاراکتر فاصله)، IDE خود بهصورت اتوماتیک آنها را با کاراکترهای دیگر جایگزین میکند.
اسکچهای آردوینو با چه پسوندی ذخیره می شوند؟
اسکچهای آردوینو بهصورت فایلهای متنی با پسوند .ino ذخیره میشوند. نسخههای قدیمیتر از IDE از پسوند .pde نیز استفاده میکردند که توسط Processing هم استفاده میشود. این اسکچها بهصورت اتوماتیک در یک پوشه با همان نام اسکچ ذخیره میشوند.
شما میتوانید اسکچهای خود را در هر پوشهای ذخیره کنید، اما اگر از پوشه پیشفرض (پوشه Arduino در پوشه My Documents؛ پوشه ~/Arduino در لینوکس) استفاده کنید، اسکچهای شما در منوی Sketchbook نرمافزار Arduino نمایش داده میشوند و پیداکردن آنها آسانتر خواهد بود.
اگر یکی از مثالهای داخلی را ویرایش کردهاید، نمیتوانید فایل تغییریافته را به صورت جداگانه در پوشه مثالها ذخیره کنید؛ بنابراین باید آن را در یک پوشه متفاوت ذخیره کنید.
بعد از اعمال تغییرات، یک پنجره روی سیستم شما ظاهر میشود که در آن از شما پرسیده میشود که آیا میخواهید اسکچ خود را ذخیره کنید یا خیر. نماد § که بعد از نام اسکچ در نوار بالای پنجره IDE قرار دارد، نشان میدهد که کد اسکچ، تغییراتی کرده است که هنوز در کامپیوتر ذخیره نشدهاند. این نماد بعد از ذخیره اسکچ حذف میشود.
البته در نسخه های جدید مثل 2.2.1 که مبتنی بری vscode شده برای این حالت یک نقطه ظاهر میشه.
ولی در نسخه های قبلی مثل 1.8 این شکل § ظاهر میشه.
استفاده از سیستم کنترل نسخه گیت (Git) برای یک اسکچ
همانطور که در حال ادیت یک اسکچ هستید و تغییرات لازم را در آن اعمال میکنید، باید به دنبال یک راه برای اطمینان از اینکه این تغییرات اعمال شده اند نیز باشید. راههای مختلفی برای انجام این کار وجود دارد که راحتترین آنها، استفاده از سیستم کنترل نسخه گیت (Git) است. Git بهراحتی به رابط command-line دسترسی پیدا میکند. روش قراردادن یک اسکچ در سیستم کنترل نسخه گیت (Git) به شرح زیر است:
- برای پیداکردن پوشه اسکچ خود، میتوانید از قسمت Sketch→Show Sketch Folder استفاده کنید. از طریق این گزینه، پوشه اسکچ در بخش فایل منیجر کامپیوتر باز می شود.
- برای باز کردن خط فرمان (Command line)، در ویندوز از Command Prompt و در لینوکس یا macOS ازTerminal استفاده می شود. برای تغییر پوشهای که اسکچ در آن قرار دارد، از کامند cd استفاده کنید. برای مثال، اگر یک اسکچ به نام Blink را در محل پیشفرض پوشه اسکچ ذخیره کردهاید، با استفاده از مسیر های زیر، میتوانید به آن دایرکتوری بروید: (به ترتیب از بالابهپایین برای سیستمعاملهای macOS، لینوکس و ویندوز)
$ cd ~/Documents/Arduino/Blink
$ cd ~/Arduino/Blink
> cd %USERPROFILE%\Documents\Arduino\Blink
- با کامند git init مخزن Git را راهاندازی کنید.
- فایل اسکچ خود را به Git با استفاده از گزینه git add Blink اضافه کنید. (به جای no نام اسکچ خود را قرار دهید). برای اضافه کردن فایل های بیش تر به پوشه اسکچ، می توانید از کامند git add filename استفاده کنید.
- بعد از اعمال تغییرات، کامند git commit -a -m “your comment here” را تایپ کنید. در قسمت “your comment here” تغییراتی که ایجاد کردهاید را جایگزین کنید.
بعد از اینکه تغییرات موردنظر را در Git انجام دادید، میتوانید از git log برای مشاهده تاریخچه تغییرات خود استفاده کنید. هر یک از این تغییرات دارای یک commit hash مرتبط با آن خواهد بود:
$ cd 87e962e54fe46d9e2a00575f7f0d1db6b900662a (HEAD -> master)
Author: Brian Jepson <bjepson@gmail.com>
Date: Tue Jan 14 20:58:56 2020 -0500
made massive improvements
commit 0ae1a1bcb0cd245ca9427352fc3298d6ccb91cef (HEAD -> master)
Author: Brian Jepson <bjepson@gmail.com>
Date: Tue Jan 14 20:56:45 2020 -0500
your comment here
با استفاده از این hashها، شما میتوانید با نسخههای قدیمیتر فایلها کار کنید (البته نیازی به hash full ندارید و برای تفکیک نسخهها، فقط کافی است یک بخش کوچک از آن را داشته باشید). شما میتوانید یک نسخه قدیمی را با کامند git checkout hash filename، بهعنوانمثال git checkout 0ae1 Blink.ino، بازیابی (restore) کنید. همچنین، میتوانید نسخهها را با کامند git diff firsthash…secondhash، بهعنوانمثال git diff 0ae1…7018، مقایسه کنید.
برای کسب اطلاعات بیشتر در مورد Git به سایت https://git-scm.com/doc مراجعه کنید.
اگر به دنبال یادگیری کامل سیستم کنترل نسخه گیت Git هستید. این سری آموزشی که لینکش رو پایین میزارم تقریبا کامل ترین دوره آموزشی فارسی هست که میتونید ببینید و تهیه کنندش آقای جادی هستن… ✨🙂
بهترین روش بررسی خطاها چیست؟
هنگامی که کد را ویرایش میکنیم، بهترین روش برای بررسی خطاها، کامپایل کردن مکرر آن است. به دلیل اینکه خطاها معمولاً مربوط به موارد جدیدی هستند که شما اضافه کردهاید. این کار به شما کمک میکند تا خطاها را بهراحتی پیدا کرده و آنها را برطرف کنید.
نکته
“بعد از آپلودکردن یک اسکچ بر روی برد، هیچ راهی برای دانلودکردن آن وجود ندارد؛ بنابراین، حواستان باشد هر تغییری که انجام میدهید، حتما آن را ذخیره کنید.”
اگر سعی کنید یک فایل اسکچ را در یک پوشه با نامی متفاوت با اسکچ ذخیره کنید، IDE به شما پیغام میدهد که این فایل بهصورت مستقیم باز نمیشود و به شما پیشنهاد میشود که روی گزینه OK کلیک کرده و برای ذخیره فایل اسکچ، پوشهای با همان نام ایجاد کنید.
به طور کلی اسکچ ها باید در پوشه ای با همان نام قرار داشته باشند. بعد از ذخیره یک اسکچ جدید، IDE خود پوشه جدید را به صورت اتوماتیک ایجاد می کند.
فایلهای اسکچ ایجاد شده در نسخههای قدیمیتر نرمافزار آردوینو، دارای پسوند متفاوتی هستند که این پسوند (.pde) است. IDE این فایلها را باز میکند و هنگام ذخیره اسکچ، یک فایل با پسوند جدید (.ino) ایجاد میکند. کدهای نوشته شده برای نسخههای قدیمیتر IDE ممکن است در نسخه 1.0 قابل کامپایل کردن نباشند. اما اعمال اکثر تغییرات در کدهای قدیمی، آسان تر است.
این قسمت از آموزش آردوینو هم به پایان رسید. امیدواریم که براتون مفید واقع شده باشد.🌹 خوشحال میشیم که در ادامه مقالات آموزش آردوینو سیسوگ را همراهی کنید.