آردوینو, پروژه آردوینو

آموزش 0 تا 100 آردوینو؛ قسمت پنجم

توابع ارتباط سریال؛ آموزش 0 تا 100 آردوینو قسمت پنجم

در قسمت پنجم از سلسله مطالب آموزش 0 تا 100 آردوینو در خدمت شما علاقه‌مندان هستیم. همانطور که می‌دانید، در قسمت دوم آموزش آردوینو با پنجره‌ها و ابزارهای محیط آردوینو آشنا شدیم و اینک می‌خواهیم در مورد توابع ارتباط سریال صحبت کنیم؛ پس با بهنام رباتیک همراه باشید.

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

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

برای برقراری ارتباط، یک سری توابع و دستورات وجود دارد که در ادامه با آنها آشنا میشویم.

دستورات در آردوینو
دستورات در آردوینو

توابع ارتباط سریال شماره 1: Serial.begin

این دستور در Void Setup فراخوانی می‌شود و سرعت انتقال المان‌ها را مشخص می‌کند. این مقدار باید حتماً هم در فرستنده و هم در گیرنده یکسان باشد در غیر این صورت، ارتباط سریال غیر ممکن خواهد بود. معمولاً این مقدار را برای کمتر شدن خطا روی 9600 و یا پایین‌تر از آن قرار می‌دهند. گزینه‌های مجاز شما برای سرعت در پنجره BaudRate نوشته شده است.

توابع ارتباط سریال شماره 2: Serial.read

خروجی این تابع مقداری است که شما در پنجره ارتباط سریال خود وارد کرده‌اید. البته این تابع فقط و فقط می‌تواند یک کاراکتر را بخواند. در حالت معمولی و در مواقعی که مقداری برای نمایش وجود ندارد، مقدار این تابع برابر 1– است.

توابع ارتباط سریال شماره 3: Serial.readstring

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

نکته: رشته‌ها بین دو علامت ” ” و کاراکترها بین دو علامت ‘ ‘ قرار می‌گیرند. لازم به ذکر است که در قسمت‌های بعدی آموزش، با رشته‌ها و کاراکترها در آردوینو آشنا خواهیم شد.

توابع ارتباط سریال شماره 4: Serial.availabe

این تابع تشخیص می‌دهد که آیا در بافر ورودی کاراکتری قرار دارد یا خیر. در مواقعی که محتوایی برای خواندن وجود ندارد، مقدار آن 1– است. در واقع این تابع تشخیص می‌دهد که ارتباط سریال برقرار و کاراکتری دریافت شده است.

توابع ارتباط سریال شماره 5: Serial.print

این تابع متن را پشت سر هم نشان می‌دهد.

توابع ارتباط سریال شماره 6: Serial.Println

این تابع متنی را در خروجی ارتباط سریال (سریال مانیتور) نمایش می‌دهد و پس از پایان متن به خط بعد می‌رود.

توابع ارتباط سریال شماره 7: Serial.end

ارتباط سریال در آردوینو از طریق پروتکل UART انجام می‌شود. این پروتکل نیز از طریق دو سیم TX و RX ارتباط برقرار می‌کند. با این روش، آردوینو می‌تواند به تمامی میکروکنترلرها یا آردوینوها با BaudRate یکسان متصل شود. پایه TX (فرستنده) و RX (گیرنده) در بردهای آردوینو، پایه‌های صفر و یک هستند که در داخل برد به میکروکنترلر دیگری متصل شده‌اند.

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

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

//_-_-_-_-_-_-_-_-_-_-_-_www.behnamrobotic.com

ایجاد متغیرهای سراسری

long number1; //

عدد اول برای محاسبه

long number2; //

عدد دوم برای محاسبه

char operation; //

بررسی عملگر (ضرب، تقسیم و . . .)

long result; //

جواب عملیات

void setup() {

  Serial.begin(9600); //

تنظیم BaudRate

  Serial.println(“lotfan yek mohasebe vared konid”);

Serial.println(“baraye mesal : 2+3”);

Serial.println();//

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

}

void loop() {

  while(Serial.available() > 0) {//

چک کردن بودن یا نبودن دیتا

number1 = Serial.parseInt ();//

این عدد اولین عدد برای انجام عملیات است. زمانی که شما عدد را به صورت متن وارد می‌کنید، رشته ورودی را به عدد تبدیل می‌کند و تابع ParseInt را در متغیر عدد اول قرار می‌دهد.

    operation = Serial.read(); //

این تابع عملیات را از طریق علامت + یا – تشخیص می‌دهد

number2 = Serial.parseInt();//

این تابع متغیر عدد دوم را درون خود ذخیره می‌کند

resolucao(); //

برای بررسی تابع و نتیجه عملیات

Serial.println(“Natihe mishavad  = “);

Serial.println(result);

}

}

void resolucao() {

switch (operation) {

دستور Switch یک مورد از چند حالت مطلوب را بررسی و انجام می‌دهد

case ‘+’ ://

این بخش بررسی می‌کند که آیا کاراکتر ورودی + است یا خیر

result = number1 + number2; //

در این بخش حاصل انجام عملیات در متغیر نتیجه ریخته می‌شود

break; //

پس از انجام عملیات از حلقه خارج می‌شود

case ‘-‘ ; //

این بخش بررسی می‌کند که آیا کاراکتر ورودی – است یا خیر

result = number1 – number2; //

در این بخش، حاصل انجام عملیات در متغیر نتیجه ریخته می‌شود

break; //

پس از انجام عملیات، از حلقه خارج می‌شود

case ‘*’ : //

این بخش بررسی می‌کند که آیا کاراکتر ورودی ضرب است یا خیر

result = number1 * number2; //

در این بخش حاصل انجام عملیات در متغیر نتیجه ریخته می‌شود

break; //

پس از انجام عملیات از حلقه خارج می‌شود

case ‘/’; //

این بخش بررسی می‌کند که آیا کاراکتر // ورودی تقسیم است یا خیر

result = number1 / number2; //

در این بخش حاصل انجام عملیات در متغیر ریخته می‌شود

break; //

پس از انجام عملیات از حلقه خارج می‌شود

این کد مربوط به ماشین حساب با آردوینو است. شما می‌توانید دو عدد را با هم جمع، تفریق، ضرب و تقسیم کنید. سپس BaudRate را روی 9600 تنظیم نمایید و اولین پروژه سریال مانیتور خود را انجام دهید.

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

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