چاپ دستورات -آموزش آردوینو

این جلسه مربوط به دوره قدیمی آردوینو وبسایت می باشد. برای دیدن دوره جدید به این لینک مراجعه فرمایید.

چاپ دستورات در سريال مانيتور

این جلسه میخوایم تمرکز کنیم روی سريال مانيتور آردوینو. اين پنجره سريال مانيتور همانند پنجره كنسول در ديگر نرم افزارهاست.

 

 

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

 


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

 

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

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

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

 

 

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

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

 

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

و خروجی کنسول:

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

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

در پناه حق باشید

لینک دانلود فایل pdf جلسه ششم:
دانلود

برای دریافت آخرین مطالب سایت  و همچنین مطالب منحصر به فرد دیگر که در سایت منتشر نمی شوند میتوانید در کانال تلگرام ما عضو شوید و یا در اینستاگرام ما را فالوو کنید:

پایان جلسه

منبع: http://blog.arduino.ir

شاید دوست داشته باشید مطالب زیر را نیز بخوانید:

17 نظر

  • افشین رادمهر

    سلام اقای قاسمی

    شما میتونید در مورد اینکه اطلاعاتی از برد اردوینو توسط بلوتوث انتقال بدیم به یه برنامه اندرویدی کمکم کنی

     

    الان من میتونم یه سری دستورا رو توسط بلوتوث گوشی به اردوینو انتقال بدم و اردیونو انجام بده

     

    ولی نمیتونم از طریق بلوتوث اردیونو اطلاعات رو به گوشی بفرستم

    ممنونم اگه کمکم کنی

    حق الزحمه شما هم هرچقدر باشه پرداخت می کنم چون یه پروژه دارم که باید حتما درستش کنم

    • حامد قاسمی

      با سلام خدمت شما.
      لطفا چند مورد زیر رو اعلام بفرمایید تا کمک های لازم انجام بشه :
      1- مدل ماژول بلوتوث مورد استفاده
      2- مدل برد آردوینو مورد استفاده
      3- نرم افزاری که در گوشی برای دریافت اطلاعات از برد آردوینو استفاده میکنید.
      4- منظورتون از انتقال اطلاعات از برد آردوینو به گوشی دقیقا چیست؟ آیا منظور شما دقیقا یک متن ساده است ؟ لطفا این موضوع را دقیقا اعلام فرمایید.
      5- لطفا عکسی از مدار خودتون هم ارسال کنید و کد مورد نظر خودتون رو هم اینجا بنویسید تا دقیق تر موضوع بررسی بشه ( عکسی که میفرستید حتما واضح باشه لطفا)

      پی نوشت: ما در اینجا هدفمون کمک به کاربرانمون هست و از این بابت حق الزحمه ای دریافت نمیکنیم.

      منتظر پاسخگویی شما هستم.
      موفق باشید.

  • علی عاقبتی

    سلام مهندس عزیز
    بله با نوشتن حرف بزرگs در اول کلمه سریال مشکل حل شد ممنون
    در ضمن هنوز برد اردینو مدل اونو را تهیه نکرده ام ایا شما قسمت فروش هم دارید؟
    با سپاس از راهنمایی هایتان موفق باشید

    • حامد قاسمی

      سلام. خیر فعلا قسمت فروش نداریم. در آینده قصد اضافه کردن آن را داریم.
      باید حتما برد رو بخرید و متصل کنید تا پورت مجازی رو شناسایی کنه.
      موفق باشید.

    • علی عاقبتی

      سلام مهندس
      آیا تفاوت عمده ای بین مدلهای فیک و ارژینال وجود دارد
      چون من واقعا فروشنده معتبری را نمیشناسم و معلوم نیست بردی که تهیه می کنیم چگونه ساخته شده

      • حامد قاسمی

        سلام. حقیقت بیشتر بردها فیک هستند و عمدتا اوریجینال نیستند. برای کار کردن هم به نظر مدل هایی که در بازار هستند جوابگو هستند و نیاز به تهیه یک برد اوریجینال نیت.
        موفق باشید.

  • علی عاقبتی

    مهندس سلام فرمایش شما را اجرا کردم ” #include را هم اول قرار دادم به همین هم ایراد گرفت فایل برنامه را خدمتتان
    آپلود می کنم کامپیوتر من پنتیوم4 رم 2.5 گیگ و 32 بیتی و ویندوز من 7 است
    ممنون بزرگوار

    http://s5.picofile.com/file/8282310168/a1.zip.html

    • حامد قاسمی

      دستوری که بنده گفتم “inculce “softwareserial بود. که ظاهرا کامنت من کامل نشون داده نشده بود. و بنده از این بابت از شما عذرخواهی میکنم. البته مشکل از این خط نبود. مشکل شما همون دستورSerial.begin و Serial.println هست که عبارت Serial باید با حرف بزرگ نوشته بشه و اگه این کار رو هم انجام بدید این عبارت به شکل نارنجی رنگ در میاد و این مشکل حل میشه.
      در مورد آردوینو هم پس از اتصال برد خودتون از Devicemanager کامپیوترتون یه عکس بگیرید و برای بنده ارسال کنید تا راهنمایی های بعدی صورت بگیره.
      موفق باشید.

  • علی عاقبتی

    با سلام مهندس سعی کردم عکس خطا را ارسال کنم موفق نشدم و در هنگام کامپایل این خطا را می گیرد.
    ممنون

    • حامد قاسمی

      ابتدا خط ” #include ” را در ابتدای برنامه ای اضافه کنید ببینید باز همین ارور رو میده. اگر باز با همین ارور مواجه شدید کد رو در یک فایل زیپ قرار بدید و در یکی از سایت های آپلود، آپلود کنید تا من هم اینجا با نرم افزار خودم تست کنم ببینم مشکل از کجاست.

    • علی عاقبتی

      با سلام چشم

    • علی عاقبتی

      عکس خطا را هم خدمتتان ارسال می کنم
      مهندس سال 67 ما میکروپروسسور z80میخواندیم مصیبتی بود که نگو یکبار محض رضای خدا هیچکداممان از پروژه ها
      جواب نگرفتیم حالا من 54 ساله هستم و از کم لطفی جوانان به امکانات متعجبم.
      در ضمن مهندس بعد از نصب نرم افزار آردینو کامپیوتر من هیچ در گاهی com را به این نرم افزار اختصاص نداده.

      • حامد قاسمی

        ممنون از شما. بله متاسفانه کسی قدر امکانات را نمی داند.
        دستوری که بهش ارور گرفته شده serial.println هست که به صورت serial.printin نوشته شده و آخر همین خط هم شما سمی کالن رو جا گذاشتید. این رو بذارید ببینید باز با همین ارور مواجه میشید یا خیر.
        در مورد پورت کام هم باید مشخصات سیستم و نوع سیستم عامل رو اعلام بفرمایید. و همچنین بفرمایید که از نسخه نصبی یا پرتابل آردوینو استفاده میکنید.
        این ها رو اعلام بفرمایید تا ادامه مشکل رو با هم پیش بریم.
        موفق باشید.

  • علی عاقبتی

    با سلام جناب مهندس قاسمی
    دستورات درس فوق را در اسکچ نوشتم خطای محدوده serial was not declared in this scopsرا گرفت به نظر جنابعالی مشکل از کجاست؟
    ممنون از پاسختان

    • حامد قاسمی

      با سلام. ارور در هنگام باز کردن پنجره سریال است یا کامپایل برنامه؟ لطفا از کد خودتون یه عکس بگیرید و در اینجا آپلود کنید تا ایرادش رو با هم دیگه بررسی کنیم.
      موفق باشید.

  • علي جعفرخاني

    با سلام
    ممنون از آموزش خوبتون
    آگر بخواهيم به جاي نمايش در LCD روي چاپگر پرينت بگيريم چه كار بايد انجام بديم

    • حامد قاسمی

      سلام.فکر نمیکنم این قابلیت هنوز توی آردوینو فعال باشه.

  • نوشتن نظر

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

    اضافه کردن تصویر ( فقط فرمت jpg)