جلسه ششم: استفاده از کنسول آردوینو

سلام رسیدیم به جلسه 6.
این جلسه میخوایم تمرکز کنیم روی کنسول آردوینو. تا حالا کنسول آردوینو رو باز کردید اصن؟ خب بیاید روی این آیتم: Untitled

وقتی که روی شکل کلیک می کنید وارد صفحه اصلی کنسول میشید. Untitled

خب اصن این کنسول به چه دردی میخوره؟
یکی از کاربردها استفاده از کنسول به عنوان نمایشگر هست. فرض کنید یه GPS داریم که میخوایم اطلاعات مربوط به اون رو مشاهده کنیم.یه راه اینه که LCD بزاریم و داده ها رو روش چاپ کنیم. یه موقع کاربری که داره کار می کنه نیازی نداره که داده روی LCD براش چاپ بشه همین که داده رو روی کامپیوتر ببینه براش کافیه. تو این شرایط بهترین و بی هزینه ترین روش اینه که از کنسول آردوینو استفاده کنه. یه نمونه از چاپ داده GPS رو میتونید تو شکل زیر ببینید: Read_data_from_serial_monitor

ما از همین ویژه گی کنسول برای دیباگ کردن برنامه هامون هم استفاده می کنیم. یه موقع پروژه اینه که داده های سنسور دما رو روی یه سون سگمنت چاپ کنیم. کد رو می نویسیم و آپلود می کینم. به ظاهر همه چیز خوب پیش رفته و کامپایلر هم ارور نداده ولی می بینیم روی سون سگمنت هیچ عددی نمایش داده نمیشه. یکی از احتمالاتی که وجود داره اینه که داده سنسور یه جایی از بین رفته باشه(خطای کد نویسی). با استفاده از همین کنسول سریال میتونیم خط به خط برناممون رو دیباگ کنیم و ببینیم کجا داده سنسور از دست رفته(در جلسه های بعد مثال عملی می زنیم).
بیاین یه مثال عملی بزنیم. یه کد بنویسیم که هر کسی اسمشو توی کنسول آردوینو چاپ کنه. خب اسکچ رو باز کنید. با این صحنه مواجه میشید: Untitled

قدم اول برای ایجاد ارتباط سریال بین آردوینو و کامپیوتر، تعیین کردن نرخ ارسال داده (Baude Rate) هست به عبارت دیگه باید نرخ ارتباط سریال رو کانفیگ کنیم. دستوری که باهاش این کار رو انجام میدیم Serial.begin هست. خب از اسم دستور معلومه یعنی کامپیوتر عزیز ارتباط سریال رو شروع کن. این دستور یه آرگومان عددی داره که بیانگر Baude Rate مربوط به ارتباط سریال هست مثلا 9600. بنابراین برای کانفیگ کردن ارتباط سریال بین آردوینو و کامپیوتر از دستور (Serial.begin(9600 استفاده می کنیم. حالا این دستور کجا باید نوشته بشه؟ توی setup یا loop ؟ این سوال رو خودتون باید بتونید جواب بدید. به خاطر این که داریم کانفیگ می کنیم و تنها یک بار لازمه این تنظیم رو انجام بدیم این دستور توی تابع setup نوشته میشه. Untitled

قدم بعد (قدم آخر) باید یه دستور بنویسیم که اسممون رو توی کنسول چاپ کنه. از دستور Serial.print یا Serial.println استفاده میکنیم. دستور Serial.print هر چیزی که به عنوان آرگومانش بهش داده بشه پشت سر هم چاپ می کنه میره. اما دستور Serial.println بعد از چاپ آرگومانش میره خط بعدی. این دستورها تنها یه آرگومان به عنون ورودی میگیرن که باید حتما توی علامت دبل کوتیشن نوشته بشه مثلا (“Serial.println(“aftab . حالا من میخوام هر بار که قراره اسمم چاپ بشه بره تو یه خط جدید اجرا بشه بنابراین از دستور Serial.println استفاده میکنم. خب بازم سوالی که پیش میاد اینه که دستور Serial.println کجا نوشته بشه؟ setup یا loop ؟ این دفعه بزارین هر دو مورد رو امتحان کنیم تا فرقشو کامل متوجه بشید. اول دستور رو میزاریم تو تابع loop. کد رو اپلود میکنیم.
Untitled

خروجی توی کنسول آردوینو به اینصورت میشه(نترسید): Untitled

همونطور که قبلا هم در موردش حرف زدیم دستوراتی که توی تابع loop نوشته میشن تا زمان ابد تکرار میشن و ادامه دارن.
حالا دستور رو توی تابع setup می نویسیم و آپلود می کنیم:
Untitled

و خروجی کنسول:
Untitled
می بینید که تنها و تنها یک بار چاپ میشه و تا هزار سال دیگه هم که بشینید هیچ خبری نمیشه. فکر کنم الان کاملا با تفاوت تابع setup و loop آشنا شده باشید.
حالا اگه خواستیم با فاصله زمانی یک ثانیه اسممون رو چاپ کنیم چطوری کد بنویسیم؟
Untitled

خب بدون شک میریم تو تابع loop ، دستورچاپ رو مینویسیم فقط یه تاخیر 1 ثانیه ای بینش قرار میدیم . با این کد نویسی اول تابع Serial.println اجرا میشه و روی کنسول نمایش داده میشه بعد به مدت 1 ثانیه روی همون دستور می ایسته و دوباره بر میگرده به اول تابع loop و تکرار روند.

پایان جلسه

One thought on “جلسه ششم: استفاده از کنسول آردوینو

  1. با درود بشما اقا محمد حسن دست شما درد نکنه نوشتارشما بسیار مفید بود ولی اینجا یک سئوال برای من پیش امده و اونم ورش نوشتاری شماست میشه بفرمائید که وازه اصن رو از کدام واژه نگار پیداکردید و ازش در یک جایگاه همگانی سود میبرید !!!!!! ؟؟؟؟؟؟
    درصورتیکه جواب و دلیل درستی باشه من حرفم رو پس میگیرم !!!

    1. دوست عزیز.
      این بلاگ هدفش آموزش همراه با سرگرمی است. اگر لذت نمی برید از این متن ها متاسفم چون روش کار این بلاگ دقیقا همینه. اصن شاید خودش بعدا یه کتاب لغت بشه

      1. اتفاقا به نظر من خيلي هم خزبه اين نوع نوشتار . اينطوري آدم بيشتر با آموزش ها همراه ميشه .
        واقعا جاي احسنت گفتن به شما وجود داره چون من خودم تجربه كردم آموزش دادن به ديگران خيلي حوصله ميخواد واقعا ممنون.

  2. سلام
    خسته نباشید
    من اینها رو نوشتن و موقعی که وریفای رو میزنم اروری نمیگیره ولی وقتی میخوام برم و ببینم که چجور خروجی میده و سریال مانیتور رو میزنم پایین ارور میده با این عنوان که “board at COM1 is not available”
    چرا اینجوریه کجای کارم میلنگه؟

  3. سلام
    همین کد ساده رو میزنم و verify هم میشه ولی وقتی سریال مانیتور رو میزنم error زیر رو میاره
    Error opening serial port ‘COM3’. (Port busy)
    لطفا راهنمایی کنید

  4. بسیار ارزنده و عملی بود.مرسی.
    برای اینکه نوشته ها تکرار نشهclear() را به خط اول برنامه اضافه کردم, باخطای خوشگل زیر مواجه شدم….
    Arduino: 1.8.1 (Windows 7), Board: “Arduino/Genuino Uno”

    F:\Arduino\Prog\konsol30.09\konsol30.09.ino: In function ‘void loop()’:

    konsol30.09:9: error: ‘clear’ was not declared in this scope

    clear();

    ^

    exit status 1
    ‘clear’ was not declared in this scope
    به من عاجز کمک کنید. مرسی.

پاسخ دادن به یاسین لغو پاسخ

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