دا ټیوټوریل برخه ده له: سرو موټرې
ټولې ویډیوګانې چې د سرو موټرو پورې اړوند دي، دلته لیست شوي. د نورو ویډیوګانو لینکونه د دې مقالې لاندې دي.
د آردوینو په مرسته د پش بټنونو سره د سروو کنټرول
په دې ټیوټوریل کې، موږ به زده کړو چې څنګه د دوو پش بټنونو په کارولو سره سروو موټور کنټرول کړو، یو د سروو کیڼ اړخ ته د حرکت کولو لپاره او بل د ښي اړخ ته د حرکت کولو لپاره. کله چې تاسو ښي بټن فشار کړئ، سروو به ۱۰ درجې ښي اړخ ته حرکت وکړي، او کله چې تاسو کیڼ بټن فشار کړئ، دا به د همدې اندازې سره کیڼ اړخ ته حرکت وکړي. که تاسو یو بټن ونیسئ، سروو به په هغه لوري حرکت ته دوام ورکړي تر هغه چې تاسو یې خوشې کړئ.

دا پروژه د دې پوهیدو لپاره یوه ښه لار ده چې څنګه د Arduino په کارولو سره بټنونه د سروو موټور سره وصل کړو. موږ به اړین هارډویر اجزا، د تارونو د نښلولو لارښوونې، او هغه کوډ پوښو چې د دې ټولو کار کولو لپاره اړین دی. د روښانه پوهیدو لپاره، تاسو کولی شئ د دې ټیوټوریل سره مل ویډیو ته مراجعه وکړئ (په ویډیو کې په ۰۱:۰۰ کې).
هارډویر تشریح شوی
د دې پروژې لپاره، تاسو به د Arduino بورډ، یو سروو موټور، او دوه پش بټنونو ته اړتیا ولرئ. سروو موټور د حرکت مسؤل دی، پداسې حال کې چې پش بټنونه د حرکت د لوري کنټرول لپاره د انپټ په توګه کار کوي. Arduino دا انپټونه پروسس کوي او سروو ته مناسب سیګنالونه لیږي.
سروو موټور د پلټ-وډت ماډولیشن (PWM) سیګنالونو پر بنسټ کار کوي. د مختلفو پلټ پلنوالي په لیږلو سره، تاسو کولی شئ د سروو زاویه کنټرول کړئ. پش بټنونه به د Arduino په ډیجیټل انپټ پنونو سره وصل شي، او موږ به د تارونو د ساده کولو لپاره داخلي پل-اپ ریزسټرونه وکاروو.
ډیټاشیټ تفصیلات
| جوړونکی | مختلف |
|---|---|
| د پرزې شمېره | SG90 |
| منطق/IO ولټاژ | ۵ V |
| د برېښنا ولټاژ | ۴.۸–۶ V |
| د تولید جریان (په هر چینل) | ۱.۵ A اعظمي |
| د لوړ جریان (په هر چینل) | ۲.۵ A اعظمي |
| د PWM فریکونسي لارښوونه | ۵۰ Hz |
| د انپټ منطق حدونه | ۰.۳VCC څخه تر ۰.۷VCC |
| د ولټاژ کمښت / RDS(on) / سنتریشن | ۰.۴ V |
| حرارتي حدونه | ۸۵ °C |
| بسته بندي | پلاستیکي |
| یادښتونه / ډولونه | معیاري ۱۸۰° څرخ |
- ډاډ ترلاسه کړئ چې سروو ستاسو د برېښنا ولټاژ لپاره درجه بندي شوی دی.
- که په لوړ جریان کې کار کوئ، مناسب حرارتي خپرونکی وکاروئ.
- بټنونه د پل-اپ ترتیب سره ځمکې ته وصل کړئ.
- که غیر منظم چلند تجربه کوئ، خپل بټنونه ډیبونس کړئ.
- د ډیبګ کولو لپاره سریال آوټ پټ وڅارئ.
د تارونو د نښلولو لارښوونې

د اجزاو د نښلولو لپاره، د سروو موټور په وصل کولو سره پیل وکړئ. د سروو سور تار د Arduino په 5V پن سره وصل کړئ، تور تار د GND پن سره، او ژیړ یا سپین سیګنال تار د Arduino په پن ۹ سره وصل کړئ. دا پن به د سروو موقعیت کنټرول کړي.
بیا، پش بټنونه وصل کړئ. د ښي بټن یو ټرمینل پن ۲ ته او بل ټرمینل ځمکې ته وصل کړئ. د کیڼ بټن لپاره، یو ټرمینل پن ۱۲ ته او بل ټرمینل هم ځمکې ته وصل کړئ. دا ترتیب داخلي پل-اپ ریزسټرونو ته اجازه ورکوي چې کله بټنونه فشار نه وي، پنونه لوړ وساتي.
د کوډ مثالونه او تفصیلي کتنه
راځئ چې د یو واحد پش بټن سره د سروو کنټرول لپاره د کوډ سره پیل وکړو. کوډ د سروو اعتراض پیل کوي او لومړنۍ زاویه ټاکي. دلته یو لنډ اقتباس دی:
int angle = 90; // د سروو لپاره لومړنۍ زاویه
int angleStep = 10; // د حرکت لپاره د ګام اندازه
په دې اقتباس کې، angle د سروو اوسنی موقعیت ښیي، پداسې حال کې چې angleStep ټاکي چې د هر بټن فشار سره سروو څومره حرکت کوي. دا کوډ د سروو موقعیت تعقیب لپاره اړین دی.
بیا، موږ د سیټ اپ فنکشن لرو چیرې چې موږ سروو ضمیمه کوو او انپټ پنونه تنظیم کوو:
void setup() {
Serial.begin(9600); // سریال تنظیم کړئ
myservo.attach(9); // سروو په پن ۹ سره ضمیمه کوي
pinMode(2, INPUT_PULLUP); // د بټن پن تنظیم کړئ
}
په سیټ اپ کې، موږ سریال مانیټر پیل کوو او سروو پن ۹ ته ضمیمه کوو. پن ۲ باندې بټن د پل-اپ ریزسټر سره د انپټ په توګه ټاکل شوی، کوم چې تارونه ساده کوي او د بهرنیو ریزسټرونو اړتیا مخنیوی کوي.
په پای کې، موږ د لوپ فنکشن ته ګورو چې د بټن فشار اداره کوي:
while(digitalRead(2) == LOW) {
angle = angle + angleStep; // زاویه زیاته کړئ
myservo.write(angle); // سروو حرکت ورکړئ
}
دا لوپ په دوامداره توګه ګوري چې ایا بټن فشار شوی دی. کله چې فشار شي، زاویه د ټاکل شوي ګام سره زیاتیږي، او سروو په مطابق حرکت کوي. دا مهمه ده چې ډاډ ترلاسه شي چې زاویه په حدونو کې پاتې کیږي (۰ څخه تر ۱۸۰ درجو) ترڅو سروو ته زیان ونه رسوي.
ښودنه / څه تمه وکړو
کله چې تاسو ښي بټن فشار کړئ، سروو باید د ۱۰ درجو په زیاتوالي سره ښي اړخ ته حرکت وکړي تر هغه چې اعظمي ۱۸۰ درجو ته ورسیږي. په ورته ډول، د کیڼ بټن فشار به دا کیڼ اړخ ته حرکت ورکړي. که تاسو یو بټن ونیسئ، سروو به په هغه لوري حرکت ته دوام ورکړي تر هغه چې تاسو یې خوشې کړئ (په ویډیو کې په ۰۱:۰۰ کې).
عامې ستونزې د تارونو مسلې شاملې دي، لکه غلط اړیکې یا فلوټینګ انپټونه. تل ډاډ ترلاسه کړئ چې ستاسو اړیکې خوندي دي او تاسو د کوډ کې مشخص شوي سم پنونه کاروئ.
دا ټیوټوریل برخه ده له: سرو موټرې
- Control a Servo Motor with a Push Button: Move Servo and Return SPB-1
- Control a Servo Motor with a Push Button: Move Servo in One Direction SPB-2
- Controlling a Servo Motor with a Push Button: Move Servo While Button Is Pressed (SPB-3)
- د سروو موټور کنټرول د پوټینشیومیټر سره د آردوینو په کارولو سره
- د سروو موټور کنټرول د پوټینشیومیټر او LCD1602 سره د Arduino په کارولو سره
- د سروو موټرو کنټرول د انفراریډ ریموټ په کارولو سره د آردوینو سره
- د آردوینو سروو موټور کنټرول د پوټینشنومیټر په کارولو سره
- د آردوینو لپاره د لاس اشارو سره د سروو موقعیت کنټرول
- Controlling Two or More Servos with Potentiometers Using an Arduino
- How to Control a 360° Servo with Three Push-Button Switches
- د ۳۶۰° دوامدار سروو د Arduino سره څنګه وکاروو
- د آردوینو کوډ او ویډیو د PCA9685 16-چینل 12-بټ سروو کنټرولر V1 لپاره
- د ارډوینو سروو ټوګل سویچ د پش بټن سره جوړ کړئ
/*
Controlling a servo with a push button with Arduino
When a push button is pressed, the servo starts moving to the right or left until
it reaches 180 and then returns to 0 degrees.
May 22, 2018 at 01:00
Written by Ahmad S. for Robojax.com in Ajax, Ontario, Canada
Watch a video for this code at https://youtu.be/7woqNH_qby4
This code is taken from http://robojax.com/learn/arduino
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int angle =90; // initial angle for servo
int angleStep =10;
void setup() {
// Servo button demo by Robojax.com
Serial.begin(9600); // setup serial
myservo.attach(9); // attaches the servo on pin 9 to the servo object
pinMode(2,INPUT_PULLUP);
Serial.println("Robojax Servo Button ");
}
void loop() {
while(digitalRead(2) == LOW){
// change the angle for the next time through the loop:
angle = angle + angleStep;
// reverse the direction of the movement at the ends of the angle:
if (angle <= 0 || angle >= 180) {
angleStep = -angleStep;
}
myservo.write(angle); // move the servo to the desired angle
Serial.print("Moved to: ");
Serial.print(angle); // print the angle
Serial.println(" degrees");
delay(100); // waits for the servo to get there
}// while
}
/*
Controlling a servo with two push buttons with Arduino
When the left push button is pressed, the servo starts moving to the left until it reaches 180 (or zero) degrees.
When the right push button is pressed, the servo starts moving to the right until it reaches 180 (or zero) degrees.
At any instance, if the button is released, the servo stops.
May 22, 2018, at 01:00
Written by Ahmad S. for Robojax.com in Ajax, Ontario, Canada
Watch a video for this code at https://youtu.be/7woqNH_qby4
This code is taken from http://robojax.com/learn/arduino
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int angle =90; // initial angle for servo
int angleStep =5;
#define LEFT 12 // pin 12 is connected to left button
#define RIGHT 2 // pin 2 is connected to right button
void setup() {
// Servo button demo by Robojax.com
Serial.begin(9600); // setup serial
myservo.attach(9); // attaches the servo on pin 9 to the servo object
pinMode(LEFT,INPUT_PULLUP); // assign pin 12 as input for Left button
pinMode(RIGHT,INPUT_PULLUP);// assign pin 2 as input for right button
myservo.write(angle);// send servo to the middle at 90 degrees
Serial.println("Robojax Servo Button ");
}
void loop() {
// Servo button demo by Robojax.com
while(digitalRead(RIGHT) == LOW){
if (angle > 0 && angle <= 180) {
angle = angle - angleStep;
if(angle < 0){
angle = 0;
}else{
myservo.write(angle); // move the servo to desired angle
Serial.print("Moved to: ");
Serial.print(angle); // print the angle
Serial.println(" degree");
}
}
delay(100); // waits for the servo to get there
}// while
// Servo button demo by Robojax.com
while(digitalRead(LEFT) == LOW){
// Servo button demo by Robojax.com
if (angle >= 0 && angle <= 180) {
angle = angle + angleStep;
if(angle >180){
angle =180;
}else{
myservo.write(angle); // move the servo to desired angle
Serial.print("Moved to: ");
Serial.print(angle); // print the angle
Serial.println(" degree");
}
}
delay(100); // waits for the servo to get there
}//
}
هغه شیان چې تاسو ورته اړتیا لرئ
-
امازونServo motor on Amazonamzn.to
-
علی ایکسپریسPurchase SG90 servo motor 180 or 360 from AliExpresss.click.aliexpress.com
سرچینې او حوالې
تر اوسه هیڅ سرچینې نشته.
فایلونه📁
هیڅ فایل شتون نلري.