پرش به محتوا

آموزش توابع آردوینو – توابع فرستنده سریال (Serial)

توابع فرستنده سریال در آردوینو ابزارهای قدرتمندی برای ارتباط و تبادل داده‌ها با دستگاه‌های جانبی هستند. این توابع امکان ارسال داده‌ها به شکل‌های متنی و باینری را فراهم می‌کنند و به کاربران اجازه می‌دهند تا وضعیت بافر سریال را بررسی کنند. استفاده از این توابع در پروژه‌های آردوینو، برای مدیریت کارآمد داده‌ها و جلوگیری از اشغال بیش از حد بافر بسیار حائز اهمیت است. توابعی مانند بررسی میزان فضای خالی بافر، تخلیه داده‌های ارسال‌نشده، و ارسال داده‌های متنی و باینری، به شما کمک می‌کنند تا با دستگاه‌های جانبی مانند سنسورها، کامپیوترها و ماژول‌های ارتباطی به‌طور مؤثر ارتباط برقرار کنید. این توابع باعث افزایش خوانایی و ساختاردهی داده‌ها در سریال مانیتور می‌شوند که در دیباگ و تحلیل پروژه‌ها بسیار مفید است. علاوه بر این، استفاده از توابع فرستنده سریال به شما اطمینان می‌دهد که تمامی داده‌ها به مقصد رسیده‌اند و هیچ اطلاعاتی از دست نرفته است. به‌طور کلی، این توابع جزء ابزارهای حیاتی برای هر پروژه آردوینو هستند که نیاز به ارتباط سریال دارد و به بهبود عملکرد و قابلیت اطمینان پروژه‌ها کمک شایانی می‌کنند.
آموزش توابع آردوینو

در این آموزش توابع آردوینو، 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

شرح

تابع فرستنده سریال `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)

اشتراک گذاری این نوشته

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

شاید این مطالب براتون جذاب باشه!

دیدگاهتان را بنویسید

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

تماس با ما

ورود به حساب کاربری

عضویت

عضو سایت هستید؟ برای ورود کلیک کنید