در این آموزش توابع آردوینو، 5 تابع کلیدی فرستنده برای ارسال دادهها از طریق پورت سریال مورد بررسی قرار میگیرند. یکی از این توابع میزان فضای بافر سریال آماده نوشتن را مشخص میکند. تابع دیگری تمامی دادههای ارسالنشده را از بافر سریال تخلیه میکند. برای ارسال دادهها به صورت متنی، تابعی وجود دارد که میتواند دادهها را با یا بدون افزودن یک خط جدید ارسال کند. همچنین، تابعی برای ارسال دادههای باینری یا خام موجود است. این توابع امکان تعامل مؤثر و کارآمد با دستگاههای جانبی را فراهم میکنند.
جهت شرکت در دوره، آموزش جامع توابع آردوینو – Fanctions کلیک کنید.
availableForWrite
شرح
این تابع نشان میدهد که چه تعداد بایت در بافر سریال برای نوشتن در دسترس هستند. این تابع در پروژههایی که شامل ارتباط سریال میشوند، بسیار مفید است، به خصوص وقتی که میخواهید مطمئن شوید فضای کافی برای ارسال دادهها وجود دارد.
ساختار کد دستور
Serial.availableForWrite()
int freeBytes = Serial.availableForWrite(); // تعداد بایتهای خالی را برمیگرداند
مولفهها
- Serial: شی پورت سریال؛ لیست پورت های سریال موجود برای هر برد را در صفحه اصلی سریال ببینید.
مقدار بازگشتی
تعداد بایت های موجود برای نوشتن را بر میگرداند.
flush
شرح
تابع ()flush از توابع فرستنده کلاس سریال در آردوینو تمامی دادههای موجود در بافر ارسال سریال را تخلیه میکند و این اطمینان را حاصل میسازد که تمامی دادههای ارسالنشده از بافر ارسال شدهاند. این تابع زمانی مفید است که بخواهید اطمینان حاصل کنید هیچ دادهای در بافر باقی نمانده و همه اطلاعات به مقصدشان رسیدهاند، به خصوص زمانی که میخواهید از یک حالت سریال به حالت دیگری سوئیچ کنید یا قبل از شروع یک عملیات جدید مطمئن شوید که بافر کاملاً خالی است.
ساختار کد دستور
Serial.flush();
مولفهها
- Serial: شی پورت سریال؛ لیست پورت های سریال موجود برای هر برد را در صفحه اصلی سریال ببینید.
نمونه برنامه
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.print("Sending data...");
Serial.flush(); // منتظر میماند تا تمام دادهها ارسال شوند
// ادامه عملیات دیگر
}
این کد برای ارسال دادهها از طریق پورت سریال در آردوینو استفاده میشود. در قسمت `setup`، ارتباط سریال با نرخ انتقال داده 9600 بیت در ثانیه تنظیم میشود. در قسمت `loop`، دادهای با متن “Sending data…” از طریق پورت سریال ارسال میشود. سپس با استفاده از تابع `flush` منتظر میماند تا تمامی دادهها از بافر سریال ارسال و تخلیه شوند. پس از اطمینان از اینکه تمامی دادهها ارسال شدهاند، سایر عملیات ادامه پیدا میکند.
شرح
تابع فرستنده سریال `print` در آردوینو دادهها را به صورت بایت ارسال میکند که به کاراکترها تبدیل میشوند. کاراکترها و رشتهها نیز به همان صورت که هستند ارسال و در سریال مانیتور نمایش داده میشوند. این تابع به شما امکان میدهد تا دادهها را به صورت متن در سریال مانیتور نمایش دهید. برخلاف برخی توابع دیگر، این تابع دادهها را به همان خط قبلی اضافه میکند، که برای ارسال مستمر دادهها بسیار مفید است.
ساختار کد دستور
Serial.print(val);
Serial.print(val, format);
مولفهها
- Serial: شی پورت سریال؛ لیست پورت های سریال موجود برای هر برد را در صفحه اصلی سریال ببینید.
- val: مقدار قابل چاپ انواع دادهها (هر نوع داده ای)
- format: مبنای عددی خروجی چاپ سریال (پیش فرض DEC)
برای تغیر حالت defult از روش های زیر استفاده میکنیم:
BIN(binary, or base 2)
OCT(octal, or base 8)
DEC(decimal, or base 10)
HEX(hexadecimal, or base 16)
نمونه برنامه
Serial.print(78) gives "78"
Serial.print(1.23456) gives "1.23"
Serial.print('N') gives "N"
Serial.print("Hello world.") gives "Hello world."
Serial.print(78, BIN) gives "1001110"
Serial.print(78, HEX) gives "4E"
مقدار بازگشتی
تعداد بایت های نوشته شده را برمیگرداند، هرچند خواندن آن عدد اختیاری است. (نوع داده: size_t)
println
شرح
تابع فرستنده println در آردوینو دادهها را به صورت بایت از سریال ارسال میکند که به کاراکترها تبدیل میشوند. کاراکترها و رشتهها نیز به همان صورت ارسال و در سریال مانیتور نمایش داده میشوند. این تابع علاوه بر ارسال دادهها، یک خط جدید را نیز اضافه میکند که باعث میشود هر پیام در خط جدیدی چاپ شود. این ویژگی برای تفکیک پیامهای متوالی و خوانایی بیشتر در سریال مانیتور بسیار مفید است.
ساختار کد دستور
Serial.println(val)
Serial.println(val, format)
مولفهها
- Serial: شی پورت سریال؛ لیست پورت های سریال موجود برای هر برد را در صفحه اصلی سریال ببینید.
- val: مقدار قابل چاپ انواع دادهها (هر نوع داده ای)
- format: مبنای عددی خروجی چاپ سریال (پیش فرض DEC)
برای تغیر حالت defult از روش های زیر استفاده میکنیم:
BIN(binary, or base 2)
OCT(octal, or base 8)
DEC(decimal, or base 10)
HEX(hexadecimal, or base 16)
مقدار بازگشتی
تعداد بایت های نوشته شده را برمیگرداند، هرچند خواندن آن عدد اختیاری است. (نوع داده: size_t)
write
شرح
دادههای باینری را در پورت سریال می نویسد. این دادهها به صورت یک بایت یا یک سری بایت ارسال میشوند. برای ارسال کاراکترهایی که ارقام یک عدد را نشان میدهند، به جای آن از تابع ()print استفاده کنید.
ساختار کد دستور
Serial.write()
Serial.write(val)
Serial.write(str)
Serial.write(buf, len)
مولفهها
- Serial: شی پورت سریال؛ لیست پورت های سریال موجود برای هر برد را در صفحه اصلی سریال ببینید.
- val: مقداری برای ارسال به صورت یک بایت.
- str: رشته ای برای ارسال به صورت یک سری بایت.
- buf: آرایه ای برای ارسال به صورت یک سری بایت.
- len: تعداد بایت هایی که از آرایه ارسال می شود.
نمونه برنامه
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.write(45); // send a byte with the value 45
int bytesSent = Serial.write("hello"); //send the string "hello" and return the length of the string.
}
مقدار بازگشتی
write: تعداد بایت های نوشته شده را برمی گرداند، هرچند خواندن آن عدد اختیاری است. (نوع داده: size_t)


