ارتباط Serial و دستورات آن از مطالبی است که در این قسمت به آن پرداخته می شود. در ادامه مقداری هم در مورد برنامه processing صحبت خواهیم کرد.
ارتباط سریال
ارتباط سریال از پین های tx/rx و از سطح منطقی ttl استفاده می کند. نسبت به برد آردوینو این ولتاژ 5 ولت یا 3.3 ولت می باشد. این پین ها را نباید مستقیم به RS232 وصل کرد. چون RS232 با ولتاژ 12+ تا 15+ و 12- تا 15- استفاده می کند وبه برد آسیب می زند.
ارتباط سریال برای ارتباط بین آردوینو و کامپیوتر یا دستگاه های دیگری که این نوع سریال را دارند مورد استفاده قرار می گیرد. بردهای آردوینو حداقل یک پورت سریال که به اسمهای UART یا USART هم شناخته می شوند دارند. پین های 0 و 1 برای ارتباط سریال می باشند. وقتی که از این پین ها برای ارتباط سریال استفاده می شود، نمی توان از این پین ها به عنوان ورودی و خروجی دیجیتال استفاده کرد. شما از داخل خود برنامه آردوینو می توانید با کلیک بر گزینه مانیتور سریال و انتخاب بیت ریت مناسب، برد خود را مانیتور کنید.
در آردوینو MEGA و DUE و LEONARDO شما از پرتهای سریال بیشتری برخوردارید.
;()Serial.available:
وقتی که از پورت سریال اطلاعات دریافت می شود در یک بافر ذخیره می شود تا توسط برنامه خوانده شود. بافردارای 64 بایت می باشد.
این دستور تعداد بایت های بافر را که پر شده است بر می گرداند. اگر ما A,B,C,D,E,F,G,H را به صورت تک تک ارسال کنیم ولی نخوانیم. یا ABCDEFGH را ارسال کنیم هر دو 8 بایت را اشغال می کنند. و دستور Serial.available عدد 8 را بر می گرداند.
هر بار که از دستور Serial.read استفاده کنیم بافر خالی می شود. و Serial.available عدد صفر را بر می گرداند.
وقتی Serial.available عدد صفر را بر گرداند یعنی چیزی ارسال نشده که در بافر ذخیره شود. از این دستور برای این که کدهایی که ما برای ارتباط سریال نوشته ایم دائم تکرار نشود و سرعت اجرای برنامه ی مارا کند نکند استفاده می شود.
نتیجه: اگر ما بخواهیم جمله ای که بیشتر از 64 کارکتر دارد را با ارتباط سریال ارسال کنیم. فقط 64 کارکتر آن در بافر می ماند و بقیه از بین خواهند رفت.
{….}()while
یک حلقه تکرار شونده ایجاد می کند که تا شرط داخل پرانتز درست باشد تکرار می شود. درست بودن شرط همان برگرداندن TRUE می باشد که در جلسات قبل به آن پرداخته ایم.
()Serial.read
اطلاعاتی که در بافر ذخیره شده است را می خواند. کد اسکی کارکتر های ارسال شده را بر می گرداند. بایت اول از بافر را برمی گرداند و اگر چیزی ارسال نشده باشد 1- را بر می گرداند.
جدول کد اسکی:
![asciifull](http://www.eleknow.com/wp-content/uploads/2017/09/asciifull-0-1.jpg)
asciifull
()Serial.print
این دستور تنوع زیادی برای استفاده دارد.ولی به دو شکل کلی می توان این دستور را استفاده کرد.
Serial.print(val)
Serial.print(val,format)
نمونه هایی از این دستور:
Serial.print(78,BIN) “1001110”
Serial.print(78,OCT) “116”
Serial.print(78,DEC) “78”
Serial.print(78,HEX) “4E”
Serial.println(1.23456,0) “1”
Serial.println(1.23456,2) “1.23”
Serial.println(1.23456,4) “1.2346”
()Serial.flush
این دستور بافر سریال را پاک می کند. از این دستور برای این استفاده می کند که اگر اولین کارکتر درست نبود بقیه را چک نکند و دور بریزد.
Processing:
پروسسینگ یک برنامه متن باز برای کامپیوتر می باشد که یک سری اصول ارتباطی و آموزشی را به صورت هنر دیداری و گرافیکی در می آورد. پروژه ی پروسسینگ در سال 2001 توسط “کیسی ریس و بنجامین فر” آغاز شد. یکی از اهداف این نرم افزار این است که اجازه دهد کسانی که برنامه نویس نیستند، برنامه نویسی را با بازخورد دیداری آغاز کنند. زبان برنامه نویسی processing بر روی زبان جاوا ایجاد می شود و از یک رابط کاربری ساده و گرافیکی استفاده می کند.
در ادامه چند دستور از این برنامه را توضیح می دهیم. ولی چندان به دستورات این برنامه نمی پردازیم.
;*.—-.import processing
این دستور برای بار گذاری یک کتابخانه در طرح و برنامه به کار می رود. این دستور را با علامت * پایان می دهیم.
بعد از این دستور یک شئ از جنس سریال تعریف می کنیم.
;(,)size
با این دستور سایز تصویری که می خواهیم را انتخاب می کنیم. بر حسب پیکسل می باشد.
serial(parent,portName,baudRate,parity,dataBits,stopBits);
به جای parent معمولا this استفاده می کنیم.
پورتی که می خواهیم از آن استفاده کنیم را می نویسیم.
در قسمت نرخ ارسال هم که معمولا عدد 9600 را قرار می دهیم.
در قسمت parity حرف N به معنی none یا هیچی می باشد که اگر چیزی ننویسیم همین قرار می گیرد.
E=Even
O=Odd
M=Mark
S=Space
dataBits تعداد بیتهای ارسالی پشت سر هم می باشد که اگر چیزی نگذاریم 8 قرار می گیرد.
stopBits وقفه ی بین دو ارسال می باشد که از جنس float است (2.0 ، 1.5 ، 1.0). اگر چیزی نگذاریم 1.0 قرار می گیرید.
void serialEvent(Serial whichPort) {
دستورات
}
این تابع را وقتی بکار می گیریم که اطلاعات روی پورت ارسال می شود. به جای whichPort متغیر و شئ ای که از جنس سریال تعریف کردیم را می گذاریم.
در ادامه می توانید فیلم آموزشی را مشاهده کنید:
دیدگاه ها :