اطلاعیه

Collapse
No announcement yet.

مشکل در برنامه نویسی آردوینو

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل در برنامه نویسی آردوینو

    سلام دوستان.من برای کنترل 4 موتور dc و 1 موتور servo توسط آردوینو و ماژول بلوتوث و درایور موتور l293d میخوام کد بنویسم.
    واسه موتور های dc کد زیر رو نوشتم و مشکلی نداشت:
    کد:
    #include <Servo.h>
    #include <AFMotor.h>
    AF_DCMotor MotorR(1);
    AF_DCMotor MotorL(2);
    AF_DCMotor MotorR2(3);
    AF_DCMotor MotorL2(4);
    Servo gripperServo;
    int reads = Serial.read();
    void setup()
    {  
    Serial.begin(9600);
    gripperServo.attach(5);
    MotorR.setSpeed(255);
    MotorL.setSpeed(255);
    MotorR2.setSpeed(255);
    MotorL2.setSpeed(255); 
    }
    void loop()
    {
      switch (reads){
    
        
        case 200:
        MotorR.run(FORWARD);
        MotorL.run(FORWARD);
        MotorR2.run(FORWARD);
        MotorL2.run(FORWARD);
        break;
    
        
        case 210:
        MotorR.run(BACKWARD);
        MotorL.run(BACKWARD);
        MotorR2.run(BACKWARD);
        MotorL2.run(BACKWARD);
        break;
    
        
        case 220:
        MotorR.run(FORWARD);
        MotorL.run(RELEASE);
        MotorR2.run(FORWARD);
        MotorL2.run(RELEASE);
        break;
    
        
        case 230:
        MotorR.run(RELEASE);
        MotorL.run(FORWARD);
        MotorR2.run(RELEASE);
        MotorL2.run(FORWARD);
        break;
    
        
        case 240:
        MotorR.run(BACKWARD);
        MotorL.run(RELEASE);
        MotorR2.run(BACKWARD);
        MotorL2.run(RELEASE);
        break;
    
        
        case 250:
        MotorR.run(RELEASE);
        MotorL.run(BACKWARD);
        MotorR2.run(RELEASE);
        MotorL2.run(BACKWARD);
        break;
      }  
    }
    ولی واسه servo کد زیر رو نوشتم ولی ارور unusable value میده:
    کد:
    case Serial.read():
    if Serial.read<200{
    gripperServo.write(Serial.read);
    }
    break;
    چجوری میتونم عدد خونده شده از سریالو در اینجا به کار ببرم؟
    جدیدترین ویرایش توسط Mr.Skylake; ۱۱:۳۳ ۱۳۹۷/۰۳/۱۸.
    لقمان را گفتند:<< بی خطا کد نوشتن را از که آموختی؟ >>
    گفت:<< از کامپایلرها.هر خطایی که آنها گرفتند من نگرفتم. >>
    لقمان را گفتند:<< پایتون را چگونه مثل آب روان ساختی؟>>
    گفت:<< با تقلید از جاوا.هر چیزی که در جاوا بود من ۵%اش را برداشتم شد پایتون.>>

    #2
    پاسخ : مشکل در برنامه نویسی آردوینو

    جلوی کیس که نمیشه تابع بذارید . وقتی جلوی دستور سوییچ ، سریال رو میخونید برای چی دوباره اینجا read نوشتید؟ هدفتون چیه ؟ مثال عددی سروو بزنید .

    دیدگاه


      #3
      پاسخ : مشکل در برنامه نویسی آردوینو

      نوشته اصلی توسط Masood Ashoori نمایش پست ها
      جلوی کیس که نمیشه تابع بذارید . وقتی جلوی دستور سوییچ ، سریال رو میخونید برای چی دوباره اینجا read نوشتید؟ هدفتون چیه ؟ مثال عددی سروو بزنید .
      ببینید من کار به خود تابع Serial.read)( ندارم.من فقط میخوام اون عددی که از طریق سریال دریافت شده رو در صورتی که از ۲۰۰ کمتر باشه به سروو بده.
      لقمان را گفتند:<< بی خطا کد نوشتن را از که آموختی؟ >>
      گفت:<< از کامپایلرها.هر خطایی که آنها گرفتند من نگرفتم. >>
      لقمان را گفتند:<< پایتون را چگونه مثل آب روان ساختی؟>>
      گفت:<< با تقلید از جاوا.هر چیزی که در جاوا بود من ۵%اش را برداشتم شد پایتون.>>

      دیدگاه


        #4
        پاسخ : مشکل در برنامه نویسی آردوینو

        نوشته اصلی توسط Mr.Skylake نمایش پست ها
        ببینید من کار به خود تابع Serial.read)( ندارم.من فقط میخوام اون عددی که از طریق سریال دریافت شده رو در صورتی که از ۲۰۰ کمتر باشه به سروو بده.
        شما اون serial read رو گذاشتید قبل ستاپ مشکلی پیش نیومده ؟ کار می*کنه ؟! چون اصولاً باید توی لوپ باشه .
        وقتی سریال رو خوندید و داخل متغیر مثلا m ریختید . با یک شرط ساده میتونید دستور سروو بدید .
        if( m < 200 )
        servo.write(m);

        دیدگاه


          #5
          پاسخ : مشکل در برنامه نویسی آردوینو

          نوشته اصلی توسط Masood Ashoori نمایش پست ها
          شما اون serial read رو گذاشتید قبل ستاپ مشکلی پیش نیومده ؟ کار می*کنه ؟! چون اصولاً باید توی لوپ باشه .
          وقتی سریال رو خوندید و داخل متغیر مثلا m ریختید . با یک شرط ساده میتونید دستور سروو بدید .
          if( m < 200 )
          servo.write(m);
          چجوری بریزم؟یعنی همون براش متغیر تعریف کنم؟


          [QUOTE=Masood Ashoori;677863]
          شما اون serial read رو گذاشتید قبل ستاپ مشکلی پیش نیومده ؟ کار می*کنه ؟! چون اصولاً باید توی لوپ باشه .
          [QUOTE/]

          از لحاظ تست عملی انجام ندادم ولی از لحاظ کامپایلری ارور نداد.
          جدیدترین ویرایش توسط Mr.Skylake; ۱۳:۳۵ ۱۳۹۷/۰۳/۱۸.
          لقمان را گفتند:<< بی خطا کد نوشتن را از که آموختی؟ >>
          گفت:<< از کامپایلرها.هر خطایی که آنها گرفتند من نگرفتم. >>
          لقمان را گفتند:<< پایتون را چگونه مثل آب روان ساختی؟>>
          گفت:<< با تقلید از جاوا.هر چیزی که در جاوا بود من ۵%اش را برداشتم شد پایتون.>>

          دیدگاه


            #6
            پاسخ : مشکل در برنامه نویسی آردوینو

            همون کاری که خط 8 کردید ،
            int read = serial.read();
            البته بازهم میگم اصولاً این دستور باید ابتدای حلقه لوپ نوشته بشه نه اونجا .

            دیدگاه


              #7
              پاسخ : مشکل در برنامه نویسی آردوینو

              نوشته اصلی توسط Masood Ashoori نمایش پست ها
              همون کاری که خط 8 کردید ،
              int read = serial.read();
              البته بازهم میگم اصولاً این دستور باید ابتدای حلقه لوپ نوشته بشه نه اونجا .
              این کارو کردم جواب نداد ارور داد
              لقمان را گفتند:<< بی خطا کد نوشتن را از که آموختی؟ >>
              گفت:<< از کامپایلرها.هر خطایی که آنها گرفتند من نگرفتم. >>
              لقمان را گفتند:<< پایتون را چگونه مثل آب روان ساختی؟>>
              گفت:<< با تقلید از جاوا.هر چیزی که در جاوا بود من ۵%اش را برداشتم شد پایتون.>>

              دیدگاه


                #8
                پاسخ : مشکل در برنامه نویسی آردوینو

                کل برنامه رو بذارید

                دیدگاه


                  #9
                  پاسخ : مشکل در برنامه نویسی آردوینو

                  نوشته اصلی توسط Masood Ashoori نمایش پست ها
                  کل برنامه رو بذارید
                  خیلی ممنون مشکلم حل شد

                  دلیل: ادغام دو پست برای جلوگیری از اسپم

                  نوشته اصلی توسط Masood Ashoori نمایش پست ها
                  همون کاری که خط 8 کردید ،
                  int read = serial.read();
                  البته بازهم میگم اصولاً این دستور باید ابتدای حلقه لوپ نوشته بشه نه اونجا .
                  به این خاطر اونجا نوشتم که چون اگه تو لوپ مینوشتم تو ستاپ نمیشد ازش استفاده کرد
                  لقمان را گفتند:<< بی خطا کد نوشتن را از که آموختی؟ >>
                  گفت:<< از کامپایلرها.هر خطایی که آنها گرفتند من نگرفتم. >>
                  لقمان را گفتند:<< پایتون را چگونه مثل آب روان ساختی؟>>
                  گفت:<< با تقلید از جاوا.هر چیزی که در جاوا بود من ۵%اش را برداشتم شد پایتون.>>

                  دیدگاه

                  لطفا صبر کنید...
                  X