ارتباط سریال نرم افزاری در آردوینو – آموزش آردوینو جلسه پنجم

ارتباط سریال نرم افزاری در آردوینو رو جلسه پیش که موضوعش ارتباط سریال در آردوینو بود توضیح مختصر دادم ،گفتم میشه بجز پایه های صفر و یک که پایه های سریال هستند از پایه های دیگه هم با کتابخونه ی SoftwareSerial.h بعنوان سریال تعریف کنیم و ازش استفاده کنیم؟ به خاطر اینکه پایه ها واقعا حالت سریال ندارن و ما به شکل ارتباط سریال نرم افزاری داریم اونارو تبدیل به سریال میکنیم به این نوع ارتباط سریال میگن ارتباط سریال نرم افزاری .
در برد های سری mega فقط پایه های :

10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8, A9, A10, A11, A12, A13, A14, A15

توانایی استفاده شدن بعنوان RX رو دارن.

و توی برد Leonardo فقط پایه های زیر میتونن بعنوان RX تعریف بشن:
8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI)

برای اینکار از تابع زیر استفاده میکنیم.

تابع SoftwareSerial(rxPin,txPin) :

که پایه ی

rxPin معادل پایه ی RXD یا گیرنده هست و

txPin معادل TXD یا فرستنده.

البته میشه اون define  ها رو هم ننوشت ، اما اینا قرار دادهایی نانوشته هستند بین برنامه نویس های آردوینو توی همه ی جهان که سعی میکنن شبیه به سایت اصلی آردوینو کد بزنن ، اینطوری کدهاتون رو میتونین خیلی راحت تر با بقیه ی مردم جهان به اشتراک بزارین و هرکسی که کدتون رو دید خیلی راحت تر و سریع تر مفهوم کدتون رو بفهمه و حتی بخودتون کمک میکنه، مثلا اگه جایی از کدتون مشکلی داشت بخاطر نظم توی نوشتارتون باگ رو پیدا کنید و رفعشون کنید.

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

توابع ارتباط سریال نرم افزاری در آردوینو

تابع mySerial.begin

این تابع سرعت ارتباط سریال نرم افزاری رو برحسب بیت بر ثانیه تایین میکنه که سرعت های تعریف شده این ها هستن:
300,1200,2400,4800,9600,14400,19200,28800,31250,38400,5760,115200
اگه مطلب براتون گنگ بوده سعی کنین این مثالو بفهمین همه چی حل میشه:
مثال:پورت سریال نرم افزاری با سرعت 9600 بیت بر ثانیه در پایه های 3 و 4 رو تعریف کنید.(اول خوتون سعی کنید و بنویسید ، بعد جواب رو نگاه کنید. تا کدنویسی رو خودتون شروع نکنید با تنها خوندن کدها ، هیچوقت برنامه نویس نمیشین!)

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

 
این کد بالا کاری نمیکنه جز اینکه پایه های 3 و4 رو برای ارتباط سریال کانفیگ میکنه.
نکته مهم دیگه هم اینکه،  mySerial اسم ارتباطیه که ایجاد کردین و اگر 2 تا ارتباط سریال همزمان میخواین ایجاد کنید باید برای ارتباط دوم هم یک اسم اختصاص بدین.این اسم ها هر چیزی میتونن باشن ، مثل نامگذاری متغیر ها .

تابع SoftwareSerialName.available

که بجای SoftwareSerialName ، اسمی که برای سریال انتخاب کردیم قرار میگیره.
و روش کار تابع available به این شکله که تعداد بایت های موجود برای دریافت رو نشون میده و برمیگردونه.

تابع SoftwareSerialName.read

این تابع هم برای خوندن اطلاعات به کار میره.

 
تو این برنامه ،در حلقه ی loop اون if رو قرار میدیم و شرط میکنیم که اگر ورودی سریال  اصطلاحا available  بود و دیتایی دریافت میشد تابع read کار خودش رو شروع کنه و اون دیتا رو بخونه.

تابع SoftwareSerialName.print(data)

تابع بالا هم معرف حضور هستن و برای  نمایش دیتا روی پرت سریال به کار میرن.

تابع SoftwareSerialName.println

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

تابع SoftwareSerialName.write

این تابع هم برای ارسال دیتا به پورت سریال نرم افزاریِ ایجاد شده کاربرد داره.

 

تابع listen

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

تابع isListening

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

تابع overflow

این تابع سرریز شدن بافر ورودی رو بررسی میکنه و متغیر خروجی اون هم متغیر بولی هست.

 

تابع peek

این تابع داده ی دریافت شده در پایه ی rxPin  رو میده ، برخلاف تابع read ، اگر این تابع رو چند بار فراخوانی کنیم ، متغیر یکسانی میده.

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

 

حمیدرضا مودت

یک مهندس الکترونیک ، علاقه مند به یاد دادن و یاد گرفتن پیرامون دانش برق و الکترونیک

شما ممکن است این را هم بپسندید

2 پاسخ‌ها

  1. محمد گفت:

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

    • حمید گفت:

      سلام مجدد 😀
      1- با کلید های ctrl+alt+s جایی که کدتون رو سیو کردین خروجی hex هم سیو میشه

      2-چرا میشه . از منوی file گزینه ی preference بخش edit font size میتونین مقدارش رو تغییر بدین
      موفق باشین

پاسخ دهید

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