نقل قول نوشته اصلی توسط 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 سرعت سروو رو تغییر بدین ، اگه بشه!