نمایش نتایج: از 1 به 6 از 6
Like Tree2 لایک
  • 1 Post By siib
  • 1 Post By ic_2009

موضوع: کنترل سرعت سرو موتور

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

    کنترل سرعت سرو موتور

    سلام،من میخوام سرعت سرو موتور 180 درجه رو به وسیله یه button کنترل کنم،به این صورت که اگر از مینیمم تا ماکزیمم سرعت سرو رو به 10 قسمت تقسیم کنیم با هربار فشرده شدن button یک واحد به سرعت سرو اضافه بشه و با یه button دیگه سرعت رو کم کنیم.من برای این کار از برنامه زیر استفاده میکنم،ولی مشکلی که داره اینه که وقتی برنامه تو حلقه for هست و ما کلید رو فشار میدیم مقدار کلید خوانده نمیشه،من میخوام مثل وقتی که از پتانیومتر استفاده میکنیم و مقدار اون در analogRead ذخیره میشه تعداد فشرده شدن کلید نیز ذخیره بشه حالا بر نامه هر جا که میخواد باشه.
    <include <Servo.h#
    ;Servo myservo
    ;int button1=0
    ;int button2=0
    ;int x=0
    ;int pos=0
    }()void setup
    ;(myservo.attach(7
    ;(pinMode(button1,INPUT_PULLUP
    ;(pinMode(button2,INPUT_PULLUP
    {

    }()void loop

    }(if(digitalRead(button1)==0

    ;++x
    ;(delay(50
    {
    }(if(digitalRead(button2)==0

    ;--x
    ;(delay(50
    {


    (for(pos = 0; pos < 180; pos += 1
    }
    ;(myservo.write(pos
    delay(x); //speed of servo

    {


    (for(pos = 180; pos > 0; pos -= 1
    }
    ;(myservo.write(pos
    delay(x); //speed of servo
    {

    {

  2. #2
    مدیر ویژه
    تاریخ عضویت
    Mar 2014
    نوشته ها
    586
    وقتی متغیرت منفی میشه دستور delay چطوری می خوای اجراش کنه؟
    باید محدوده معقولی برای Delay بذاری که هرچه فشار دادی کم و زیاد شدنش مشخص باشه

  3. #3
    Junior Member
    تاریخ عضویت
    Aug 2016
    نوشته ها
    10
    هواسم نبود محدوده برای x بزارم،شما فرض کنید که محدوده گزاشتم لطفا جواب سوالمو بدید

  4. #4
    Senior Member
    تاریخ عضویت
    Nov 2015
    نوشته ها
    229
    نقل قول نوشته اصلی توسط miladdav نمایش پست ها
    سلام،من میخوام سرعت سرو موتور 180 درجه رو به وسیله یه button کنترل کنم،به این صورت که اگر از مینیمم تا ماکزیمم سرعت سرو رو به 10 قسمت تقسیم کنیم با هربار فشرده شدن button یک واحد به سرعت سرو اضافه بشه و با یه button دیگه سرعت رو کم کنیم.من برای این کار از برنامه زیر استفاده میکنم،ولی مشکلی که داره اینه که وقتی برنامه تو حلقه for هست و ما کلید رو فشار میدیم مقدار کلید خوانده نمیشه،من میخوام مثل وقتی که از پتانیومتر استفاده میکنیم و مقدار اون در analogRead ذخیره میشه تعداد فشرده شدن کلید نیز ذخیره بشه حالا بر نامه هر جا که میخواد باشه.
    <include <Servo.h#
    ;Servo myservo
    ;int button1=0
    ;int button2=0
    ;int x=0
    ;int pos=0
    }()void setup
    ;(myservo.attach(7
    ;(pinMode(button1,INPUT_PULLUP
    ;(pinMode(button2,INPUT_PULLUP
    {

    }()void loop

    }(if(digitalRead(button1)==0

    ;++x
    ;(delay(50
    {
    }(if(digitalRead(button2)==0

    ;--x
    ;(delay(50
    {


    (for(pos = 0; pos < 180; pos += 1
    }
    ;(myservo.write(pos
    delay(x); //speed of servo

    {


    (for(pos = 180; pos > 0; pos -= 1
    }
    ;(myservo.write(pos
    delay(x); //speed of servo
    {

    {
    خب وقتی Delay استفاده میکنی در حین delay هیچ چیزی گرفته نمیشه ، میتونین با millis() بنویسین که یه کمی سخت تر میشه کد نویسیتون
    میتونین از interrupt استفاده کنین
    یا اگه بشه بیاین ولتاژ ورودی سروو رو به جای اینکه جریان مستقیم بدین از PWM استفاده کنین و با تغییر مقدار PWM سرعت سروو رو تغییر بدین ، اگه بشه!
    لایک کردن

  5. #5
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,024
    موفق شدید دوست عزیز؟

  6. #6
    Junior Member
    تاریخ عضویت
    Nov 2016
    نوشته ها
    6
    سلام
    یه مشکل جدی دارم و علارقم جستوجو های اینترنتی منبع درستی پیدا نکردم
    از سروو mg996r ۱۸۰ درجه استفاده کردم ظاهرن این سروو کتابخانه نداره و باید پالس به اون بدی و نحوه کد دهیشو بلد نیستم

    این سایتو https://projectgus.com/2009/07/servo...uino/#comments پیدا کردم ولی کارم راه نیافتاد.
    لایک کردن

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

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

SEO by vBSEO