جلسه دوازدهم دوره آموزشی آردوینو – ارتباط سریال در آردوینو
مقدمه
با سلام خدمت همه شما کاربران گرامی. در ادامه مجموعه جلسات دوره آردوینو این بار میخواهیم بحث مهم و پرکاربرد ارتباط سریال رو با هم یاد بگیریم. مثل همیشه مستقیم میریم سر اصل مطلب.
معرفی ارتباط سریال
در ابتدای این دوره ما یادگرفتیم که برد آردوینو با استفاده از پورت USB به لپتاپ وصل میشه و ما از اون طریق میتونیم کدهامون رو روی پردازنده ی اون بریزیم. یه اتفاق خوبی که این وسط میفته اینه که با استفاده از همین راه ارتباطی میتونیم داده هایی رو از برد آردوینو به کامپیوترمون بفرستیم و در اونجا نمایش بدیم. یعنی مثلا به برد آردوینو یه سنسور دما وصل هست و ما میتونیم دماها رو بخونیم و اون رو به کامپیوتر ارسال کنیم و در کامپیوترمون به نمایش در بیاریم.
برای این که این موضوع رو بهتر متوجه بشیم میخوایم در این مورد یه مثال بزنیم.
فرض کنید میخوایم یه فتوسل رو راه اندازی کنیم و داده های اون رو روی کامپیوتر خودمون نشون بدیم. ابتدا مداری مطابق با شکل زیر ببنیدید:
کد مربوط به این راه اندازی در شکل زیر اومده. توی این که هیچ نکته خاصی وجود نداره مگر دستورات مربوط به ارتباط سریال که البته دو تا دستور خیلی مهمه
دستور Serial.begin(9600) :
با استفاده از این دستور پورت سریال باز میشه و داده ها از طریق برد آردوینو به کامپیوتر انتقال پیدا میکنن. نکته ای که اینجا وجود داره عدد 9600 هست. حالا مفهوم این عدد چی هست:
این عدد که به baud rate معروفه نشون دهنده ی” تعداد بیت های ارسالی در هر ثانیه ” است. یعنی در اینجا ما در هر ثانیه 9600 بیت رو ارسال می کنیم.
البته بدیهی هست که ما میتونیم این مقدار رو تغییر بدیم و مقدار دلخواه دیگه ای رو قرار بدیم ولی پیشنهاد ما بر این هست که اگه در نرخ های پایین میخواید داده ازسال کنید از 9600 و اگه در نرخ های بالا میخواید داده ارسال کنید از نرم 115200 استفاده کنید.
دستور Serial.Println() :
در این دستور ما مقداری که از پورت سریال رو میخونیم ( یعنی مقداری رو که برد آردوینو فرستاده روی پنجره مربوط به پورت سریال نمایش می دیم. توجه داشته باشید اگه عبارتی که در آرگومان این تابع قرار میگیره داخل دابل کوتیشن ( یعنی “”) قرار بگیره همون عبارت بدون هیچ تغییری نشون داده میشه و اگه نام یه متغیر قرار بگیره مقدار متغیر نشون داده میشه.
تعداد دستورات مربوط به پورت سریال زیاده و اصلا در یک جلسه نمی گنجه که گفته بشه. با بعضی هاشون هم ما تا خیلی وقت کاری نداریم. به همین خاطر از گفتن بقیه دستورات اضافی در اینجا خودداری میکنیم ولی تاکید میکنیم در پروژه هایی که در آینده در مورد آردوینو در سایت قرار داده میشه حتما بقیه دستورات هم آروم آروم گفته میشه.
خوب حالا تا انیجا گفتیم که چطوری داده ها رو از طریق پورت سریال ارسال کنیم. حالا سوالی که اینجا مطرح میشه اینه که چطوری این داده ها رو میتونیم در کامپیوترمون نمایش بدیم. برای این کار بعد از باز کردن نرم افزار باید گزینه مشخص شده در شکل زیر رو بزنیم تا پنجره مربوط به ارتباط سریال نمایش داده بشه.
در این پنجره دو تا گزینه قابل تغییر که البته یه گزینه اش برای ما خیلی مهم هست و با گزینه دوم فعلا کاری نداریم.( البته در آینده اون رو هم بررسی می کنیم)
داده هایی هم که در اینجا در این پنجره نشون داده شده همون داده های مربوط به فتوسل هست.
این گزینه مقدار baud rate هست که البته حضور این گزینه بسیار ضروری هم هست. تا اینجا کاری که ما کرده بودیم این بود که میگفتیم برد آردوینو با چه نرخی ارسال کنه داده ها رو و از این طرف هم باید بگیم کامیپوتر با چه نرخی داده ها رو دریافت کنه. این گزینه رو هم باید مطابق با مقداری که در کد تنظیم شده قرار داده بشه.
قبل از این که این بحث رو ببندم این نکته رو در اینجا تاکید میکنم که هر گونه ابهام و سوالی که دارید ( حتی اگه فک می کنید سوالتون خیلی ساده است) در زیر همین پست این سوال رو بپرسید. چون این جلسه ، جلسه بسیار مهمی هست و تقریبا همیشه ما با این ارتباط سریال کار داریم.
مثل همیشه میتونید ما رو در تلگرام و یا اینستاگرام دنبال کنید.
20 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
با عرض سلام و احترام
چطور میشه بی وقفه داده های محاسبه شده توسط آردوینو رو همزمان در متلب رسم کرد؟؟؟
با سلام و احترام.
این موضوع نیازمند جلسه ای جداگانه می باشد که در آینده در مورد آن صحبت خواهد شد.
سلام، من این کدی که اینجا آموزش دادین وارد کردم اما این خطارو بهم میده،
Arduino: 1.8.5 (Windows 8.1), Board: “Arduino/Genuino Uno”
C:\Users\daviran.e\Documents\Arduino\gsr\gsr\gsr.ino: In function ‘void loop()’:
gsr:20: error: ‘analogReadResolution’ was not declared in this scope
value=analogReadResolution(sensor);
^
exit status 1
‘analogReadResolution’ was not declared in this scope
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
چیکار باید کنم؟
با سلام و احترام.
لطفا بفرمایید که از چه بردی استفاده می کنید ؟ آیا تنظیمات مربوط به پورت سریال را درست انجام داده اید ؟
با تشکر.