نمایش نتایج: از 1 به 10 از 10
Like Tree2 لایک
  • 1 Post By magmagmary
  • 1 Post By magmagmary

موضوع: ارتباط متلب و آردوینو

  1. #1
    Junior Member
    تاریخ عضویت
    Jul 2016
    نوشته ها
    16

    ارتباط متلب و آردوینو

    سلام خدمت دوستان عزیز
    چجوری میشه از متلب یک بردار با سریال بفرستیم واسه آردوینو؟
    می خوام دو تا سروو موتور راه اندازی کنم

  2. #2
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    3,933
    آرایه رو توی یه حلقه for بفرست

    فقط همونطور که میدونی تو کامپایلر متلب خونه های ارایه از 0 شروع نمیشه از 1 شروع میشه
    لایک کردن

  3. #3
    Junior Member
    تاریخ عضویت
    Jul 2016
    نوشته ها
    16
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    آرایه رو توی یه حلقه for بفرست

    فقط همونطور که میدونی تو کامپایلر متلب خونه های ارایه از 0 شروع نمیشه از 1 شروع میشه
    چجوری میتونم دیتا بفرستم واسه آردوینو؟ هنوز این کارو نتونستم انجام بدم
    چیزی که من خوندم با 4 تا دستور s=serial('COM3'); و fopen(s) و fwrite(?) و fclose(s) در متلب میشه دیتا فرستاد واسه آردوینو حالا چیزی ک مشکل داریم اینکه مقابل دستور fwrite چی بنویسیم و چجوری مقدار بدیم که بتونم همین مقادیر رو توی آردوینو بخونم. ممنونم

  4. #4
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    3,933
    نقل قول نوشته اصلی توسط alira725 نمایش پست ها
    چجوری میتونم دیتا بفرستم واسه آردوینو؟ هنوز این کارو نتونستم انجام بدم
    چیزی که من خوندم با 4 تا دستور s=serial('COM3'); و fopen(s) و fwrite(?) و fclose(s) در متلب میشه دیتا فرستاد واسه آردوینو حالا چیزی ک مشکل داریم اینکه مقابل دستور fwrite چی بنویسیم و چجوری مقدار بدیم که بتونم همین مقادیر رو توی آردوینو بخونم. ممنونم
    با دستور اول سریال رو معرفی می کنی
    با دستور دوم پروت کام رو باز می کنی
    اما به جای fwrite ترجیحا از fprint استفاده کن .
    اینم یه نمونه کد :
    کد:
    clear all
    clc
    
    
    answer=1; % this is where we'll store the user's answer
    arduino=serial('COM4','BaudRate',9600); % create serial communication object on port COM4
    
    
    fopen(arduino); % initiate arduino communication
    
    
    while answer
        fprintf(arduino,'%s',char(answer)); % send answer variable content to arduino
        answer=input('Enter led value 1 or 2 (1=ON, 2=OFF, 0=EXIT PROGRAM): '); % ask user to enter value for variable answer
    end
    
    
    fclose(arduino); % end communication with arduino
    لایک کردن

  5. #5
    Junior Member
    تاریخ عضویت
    Jul 2016
    نوشته ها
    16
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    با دستور اول سریال رو معرفی می کنی
    با دستور دوم پروت کام رو باز می کنی
    اما به جای fwrite ترجیحا از fprint استفاده کن .
    اینم یه نمونه کد :
    کد:
    clear all
    clc
    
    
    answer=1; % this is where we'll store the user's answer
    arduino=serial('COM4','BaudRate',9600); % create serial communication object on port COM4
    
    
    fopen(arduino); % initiate arduino communication
    
    
    while answer
        fprintf(arduino,'%s',char(answer)); % send answer variable content to arduino
        answer=input('Enter led value 1 or 2 (1=ON, 2=OFF, 0=EXIT PROGRAM): '); % ask user to enter value for variable answer
    end
    
    
    fclose(arduino); % end communication with arduino
    خیلی ممنون از راهنمایی هاتون
    حالا یه سوال دیگه ک دارم اینکه چجوری میتونم این دیتا ها که میفرستم واسه اردوینو رو تو برنامه آردوینو دخیره کنم؟ اصن میشه؟
    همچنین توضیح بدین این مثال دقیقا چکار میکنه؟
    مثلا ما می خواهیم یک ماتریس یا عدد از متلب به اردوینو بفرستیم که این اعداد در واقع زوایایی هستند که می خواهیم سروو موتوری که به اردوینو وصله به این زوایا برود به عنوان مثال در متلب یک بردار از زوایایی ک سروو باید در آنها قرار بگیرد داریم یعنی زاویه ابتدا و انتها و تعدادی زاویه بین این مقادیر که باید به اردوینو داده شود.
    ویرایش توسط alira725 : 07-19-2016 در ساعت 02:40 PM

  6. #6
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    3,933
    نقل قول نوشته اصلی توسط alira725 نمایش پست ها
    خیلی ممنون از راهنمایی هاتون
    حالا یه سوال دیگه ک دارم اینکه چجوری میتونم این دیتا ها که میفرستم واسه اردوینو رو تو برنامه آردوینو دخیره کنم؟ اصن میشه؟
    همچنین توضیح بدین این مثال دقیقا چکار میکنه؟
    مثلا ما می خواهیم یک ماتریس یا عدد از متلب به اردوینو بفرستیم که این اعداد در واقع زوایایی هستند که می خواهیم سروو موتوری که به اردوینو وصله به این زوایا برود به عنوان مثال در متلب یک بردار از زوایایی ک سروو باید در آنها قرار بگیرد داریم یعنی زاویه ابتدا و انتها و تعدادی زاویه بین این مقادیر که باید به اردوینو داده شود.
    در مورد سوال اولتون داده داره روی پورت کام میاد کافیه با دستور Serial.read داده رو بگیرید

    برای درک مثال هم کافیه کامنتهای کنار کد رو بخونید دقیقا توضیح داده هر خط کد چیکار می کنه
    پورت کام معرفی میشه
    باز میشه
    یه متغیر به اسم answer تعریف شده که مقدارش برای آردوینو استفاده میشه
    هر بار هم تو محیط کامند متلب ازتون میخواد عدد مورد نظرتون رو وارد کنید.

    در مورد بردار هم همونطور که توی تاپیک قبلی گفتم
    یه حلقه for می نویسید تمام درایه های بردار رو یکی یکی با دستور
    fprint میفرستید برای آردوینو

    یعنی تو همون کد قبلی به جای while از for استفاده کنید و بر حسب اینکه بردارتون چند تا درایه داره for رو پیکر بندی کنید.

  7. #7
    Junior Member
    تاریخ عضویت
    Jul 2016
    نوشته ها
    16
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    در مورد سوال اولتون داده داره روی پورت کام میاد کافیه با دستور Serial.read داده رو بگیرید

    برای درک مثال هم کافیه کامنتهای کنار کد رو بخونید دقیقا توضیح داده هر خط کد چیکار می کنه
    پورت کام معرفی میشه
    باز میشه
    یه متغیر به اسم answer تعریف شده که مقدارش برای آردوینو استفاده میشه
    هر بار هم تو محیط کامند متلب ازتون میخواد عدد مورد نظرتون رو وارد کنید.

    در مورد بردار هم همونطور که توی تاپیک قبلی گفتم
    یه حلقه for می نویسید تمام درایه های بردار رو یکی یکی با دستور
    fprint میفرستید برای آردوینو

    یعنی تو همون کد قبلی به جای while از for استفاده کنید و بر حسب اینکه بردارتون چند تا درایه داره for رو پیکر بندی کنید.
    از کد serial.read استفاده کردم اما مقداری نمیده و تنها مقداری که به ما میده 1- هست و هر نوع ورودی که فرستادم فقط همین مقدار به من میده هر نوع ورودی و هر روشی ک امتحان کردم همین مقدار میده فقط اگه شما جواب گرفتین از این روش ممنون میشم یه نمونه کدشو بفرستین

  8. #8
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    3,933
    نقل قول نوشته اصلی توسط alira725 نمایش پست ها
    از کد serial.read استفاده کردم اما مقداری نمیده و تنها مقداری که به ما میده 1- هست و هر نوع ورودی که فرستادم فقط همین مقدار به من میده هر نوع ورودی و هر روشی ک امتحان کردم همین مقدار میده فقط اگه شما جواب گرفتین از این روش ممنون میشم یه نمونه کدشو بفرستین

    نوع متغیر serial.read رو چه چیزی تعریف کردید؟
    و نکته مهم تر این که بادریت ارتباط هر دو طرف روی یک عدد تنظیم شده یا نه؟

  9. #9
    Junior Member
    تاریخ عضویت
    Jul 2016
    نوشته ها
    16
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    نوع متغیر serial.read رو چه چیزی تعریف کردید؟
    و نکته مهم تر این که بادریت ارتباط هر دو طرف روی یک عدد تنظیم شده یا نه؟
    نوع متغیر int تعریف کردم واسه اینکه یک عدد بتونم بگیرم
    و بادریت هر دو مقدار 9600 تنظیم کردم

  10. #10
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    3,933
    نقل قول نوشته اصلی توسط alira725 نمایش پست ها
    نوع متغیر int تعریف کردم واسه اینکه یک عدد بتونم بگیرم
    و بادریت هر دو مقدار 9600 تنظیم کردم
    این که میگید دارای -1 میگیره یعنی اصلا ارتباط سریال بین این دو بقرار نیست

    ی این که یه جای کدنویسی ها باگ داره
    کدی که تو آردوینو آپلود کردید چیه؟

    و این که تو متلب اصلا می تونه پورت کام رو باز کن

    خط های کد سمت متلب رو یه دونه یه دونه تو محیط کامند بنویسید ببیند پو رت رو باز می کنه یا نه

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO