آموزش آردوینو تکنولوژی

آموزش ارتباط سریال UART در بردهای آردوینو – بخش سوم

آموزش ارتباط سریال Arduino
نوشته شده توسط علیرضا قربانی

در قسمت های قبلی آموزش ارتباط سریال UART انواع توابع و دستورات مهم آردوینو را بررسی کردیم. در این پست قصد داریم به ادامه‌ی آموزش توابع پروتوکل سریال در Arduino بپردازیم. شناخت این توابع و اطلاع از روش کارکرد آن‌ها در نرم افزار و سخت افزار، بسیار حائز اهمیت است. این توابع در کلیه بردهای آردوینو کاربردی هستند. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 

parseInt()

به کمک این تابع می‌توان فقط اعداد را از پورت سریاال دریافت گرد . به طور کلی این تابع در بافر سریال جست و جو کرده و فقط اعداد را نمایش می‌دهد و در صورت وجود کاراکتر ، از خواندن آن کاراکتر صرف نظر می‌کند.البته قابل ذکر است این تابع اعداد منفی که با نشانه “-”  می‌باشند را تشخیص میدهد. ساختار این تابع به صورت زیر می‌باشد :

Serial.parseInt();

 

به  مثال زیر توجه کنید:

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  if (Serial.available() > 0)
  {
    Serial.println( Serial.parseInt() );

  }
}


/*فرض کنید عبارت
 * digispark12345digispark123456
 * را به پورت سریال ارسال کردیم
 *
 *
 *
 *آن گاه عبارتی مانند زیر نمایش داده می شود
 *
 *
 *۱۲۳۴۵
 *۱۲۳۴۵
 *
 *
 *
 *
 */

 

در مثال فوق اگر ترکیب عدد  و کاراکتر وارد کنیم ، فقط اعداد بر روی سریال مانیتور نمایش داده می‌شود.

 

parseFloat()

 

این تابع عملکری همانند تابع parseInt  دارد  با این تفاوت که علاوه بر تشخیص اعداد صحیح ،  قابلیت تشخیص اعداد اعشاری را نیز دارا می‌باشد. نکته : اعدای مانند ۸۰ ، ۱۰ ، ۱۶۸ ، ۲۳-  و….  نیز به عنوان اعداد اعشاری شناخته می‌شوند و parseFloat آن ها را تشخیص می‌دهد. ساختار این تابع همانند قطعه کد زیر می‌باشد:

Serial.parseFloat();

 

مثال:

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  if (Serial.available() > 0)
  {
    Serial.println( Serial.parseFloat() );

  }
}

 

readString()

توسط این تابع تمام دیتای موجود د بافر گیرنده سریال به صورت یک جا خوانده می‌شود و پس از آن ،  بافر پاک سازی می‌شود.ساختار تابع به صورت زیر می‌باشد:

Serial.readString();

 

مثال:

String text="";
void setup()
{
  Serial.begin(9600);
  Serial.setTimeout(1);
}

void loop()
{
  if (Serial.available() > 0)
  {
   text=Serial.readString();
   Serial.println(text);
   Serial.flush();
  }
}

readStringUntil()

این تابع عملکردی بسیار مشابه به تابع readString دارد با این تفاوت که شروع به خواندن کل سریاال بافر می‎کند و هنگامی که به کاراکتر مورد نظر ما رسید ، عملیات را متوقف می‌کند و تا دیتای موجود تا قبل از کاراکتر مورد نظر ما را از بافر گیرنده پاک می‌کند. ساختار کلی تابع به صورت زیر می‌باشد:

Serial.readStringUntil(terminator);

 

terminator : کاراکتر مورد نظر ما جهت توقف خواندن بافر سیال می‎باشد.توجه داشته باشید که terminator فقط می‌تواند از جنس char باشد. مثال:

String text="";
void setup()
{
  Serial.begin(9600);
}

void loop()
{
  if (Serial.available() > 0)
  {
   text=Serial.readStringUntil('a');
   Serial.println(text);
   Serial.flush();
  }
}

 

در مثال فوق ، برنامه شروع به خواندن بافر پورت سریال می‌کند و هنگامی که به کاراکتر a رسید ، خواندن را متوقف کرده و اطلاعات را بر روی سریال مانیتور نمایش می‌دهد. در قسمت‌‌های‌ بعدی نیز به ادامه آموزش ارتباط سریال آردوینو می‌پردازیم.

 

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

 

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

علیرضا قربانی

علیرضا قربانی هستم دانشجوی مهندسی پزشکی. چیزهای خیلی زیادی رو در دنیا دوست دارم. یک گیک هستم و یشه گفت یک هکر. نه به معنی دزدی پسورد و ایمیل مردم. به معنی عشق به دونستن و عشق به تحقیق درباره خیلی از چیزهایی که می بینم و می‌شنوم. اگر بخوام علاقه‌مندی‌ درجه یکم رو نام ببرم میتونم بگم برنامه نویسی و بعد از اون امبدد سیستم ها.

تبادل نظر و رفع عیب با ثبت دیدگاه

۹ دیدگاه