سبق 18/31: سروو موٹر کو Arduino کے ساتھ استعمال کرنا SunFounder کا Arduino کٹ
سروو موٹرز بے شمار روبوٹکس اور ریموٹ کنٹرول پروجیکٹس کی ورک ہارس ہیں، جو اسٹیئرنگ میکانزم سے لے کر روبوٹک بازوؤں تک ہر چیز کے لیے درست کونیی کنٹرول فراہم کرتی ہیں۔ یہ گائیڈ، سن فاؤنڈر آرڈوینو کٹ کورس کے سبق 18 پر مبنی ہے، آپ کو آرڈوینو کے ساتھ سروو موٹر استعمال کرنے کے بنیادی اصولوں سے روشناس کرائے گی۔ آپ سیکھیں گے کہ ہارڈویئر کو کیسے جوڑنا ہے اور دو مختلف طریقوں سے موٹر کی پوزیشن کو کیسے کنٹرول کرنا ہے: ایک سادہ جھولتی حرکت اور ایک نوب سے کنٹرول شدہ پوزیشن۔ یہاں حاصل کردہ علم انتہائی عملی ہے اور اسے وسیع پیمانے پر پروجیکٹس پر لاگو کیا جا سکتا ہے، بشمول:
- ایک روبوٹک بازو بنانا جو درستگی کے ساتھ اشیاء کو پکڑ اور حرکت دے سکے۔
- اسٹیئرنگ کے لیے سروو کے ساتھ ریموٹ کنٹرول کار یا کشتی بنانا۔
- ایک سولر ٹریکر تیار کرنا جو توانائی جمع کرنے کو زیادہ سے زیادہ کرنے کے لیے سورج کی پیروی کرے۔
- نگرانی یا فوٹوگرافی کے لیے پین اور ٹیلٹ کیمرہ ماؤنٹ تعمیر کرنا۔
- ماڈل ہوائی جہاز کے کنٹرول سطحوں، جیسے رڈر یا ایلیرون کو خودکار بنانا۔


ہارڈویئر کا جائزہ
کوڈ میں جانے سے پہلے، سروو موٹر کو خود سمجھنا ضروری ہے۔ جیسا کہ ویڈیو میں دکھایا گیا ہے، سروو موٹر معیاری ڈی سی موٹر کی طرح مسلسل نہیں گھومتی۔ اس کے بجائے، یہ ایک مخصوص کونیی پوزیشن پر گھومتی ہے، عام طور پر 0 اور 180 ڈگری کے درمیان۔ یہ اسے درست حرکت کی ضرورت والی ایپلیکیشنز کے لیے مثالی بناتا ہے۔ ویڈیو کئی مثالیں اجاگر کرتی ہے، آر سی کار کو اسٹیئر کرنے سے لے کر روبوٹک بازو کے پیچیدہ جوڑوں کو کنٹرول کرنے تک (ویڈیو میں 00:06 پر)۔
سروو مختلف سائز میں آتی ہیں، جسمانی سائز اور ٹارک ریٹنگ ان کی قیمت اور ایپلیکیشن کا تعین کرتی ہے۔ ایک چھوٹی مائیکرو سروو ہلکے ماڈلز کے لیے بہترین ہے، جبکہ بھاری کاموں جیسے "بہت طاقتور یا موٹی کار" کو اسٹیئر کرنے کے لیے بڑی اور زیادہ طاقتور سروو کی ضرورت ہوتی ہے (ویڈیو میں 01:59 پر)۔
زیادہ تر شوقیہ سروو میں تین تاریں ایک معیاری کنیکٹر میں ہوتی ہیں۔ ویڈیو ایک ذہین ڈیزائن انتخاب کی وضاحت کرتی ہے: درمیانی تار ہمیشہ پاور وائر (VCC) ہوتی ہے، عام طور پر 5V۔ یہ ایک حفاظتی خصوصیت ہے جو کنیکٹر کو الٹا لگانے کی صورت میں ڈیوائس کو غلط پولیرٹی سے بچاتی ہے (ویڈیو میں 03:27 پر)۔ باقی دو تاریں گراؤنڈ (GND) اور کنٹرول سگنل کے لیے ہیں۔
وائرنگ گائیڈ
سروو کو اپنے آرڈوینو سے جوڑنا آسان ہے۔ ویڈیو کنکشنز کی واضح نمائش فراہم کرتی ہے (ویڈیو میں 04:48 پر)۔ سروو کنیکٹر کے تین پن آرڈوینو سے اس طرح جڑے ہوئے ہیں:
- سگنل وائر (اکثر نارنجی یا پیلا): اسے آرڈوینو کے ڈیجیٹل PWM پن سے جوڑیں۔ مثال میں پن 9 استعمال ہوتا ہے۔
- پاور وائر (اکثر سرخ): اسے آرڈوینو کے 5V پن سے جوڑیں۔
- گراؤنڈ وائر (اکثر بھورا یا سیاہ): اسے آرڈوینو کے GND پنوں میں سے ایک سے جوڑیں۔
ویڈیو میں، پیش کنندہ سروو کے خواتین کنیکٹر کو آرڈوینو کے پن ہیڈرز سے جوڑنے کے لیے مرد سے مرد ڈوپونٹ جمپر تاریں استعمال کرتا ہے (ویڈیو میں 05:23 پر)۔
پروگرام 1: سروو موٹر کو کنٹرول کرنا (سویپ)
یہ پہلا پروگرام کلاسک "سویپ" مثال ہے۔ یہ سروو کو 0 اور 180 ڈگری کے درمیان آگے پیچھے حرکت دے کر اس کی مکمل رینج آف موشن کو ظاہر کرنے کے لیے ڈیزائن کیا گیا ہے۔ یہ آپ کی وائرنگ کی تصدیق کرنے اور اپنی سروو کو عمل میں دیکھنے کا بہترین طریقہ ہے۔ ویڈیو اس کوڈ کو اپ لوڈ کرنے اور سروو کو آگے پیچھے جھولتے دیکھنے کا مظاہرہ کرتی ہے (ویڈیو میں 09:21 پر)۔
سروو کو کنٹرول کرنے کے لیے، کوڈ پہلے بلٹ ان Servo.h لائبریری شامل کرتا ہے، جو ضروری کنٹرول سگنلز پیدا کرنے کے عمل کو آسان بناتی ہے۔ پھر آپ ایک سروو آبجیکٹ بناتے ہیں اور اسے ایک نام دیتے ہیں، جیسے myservo۔ setup() فنکشن میں، آپ اس آبجیکٹ کو myservo.attach(9) استعمال کرکے ایک مخصوص پن سے جوڑتے ہیں، آرڈوینو کو بتاتے ہوئے کہ سروو کی سگنل وائر پن 9 سے جڑی ہوئی ہے۔
جادو loop() فنکشن میں ہوتا ہے، جو سروو کو حرکت دینے کے لیے دو for لوپس استعمال کرتا ہے۔ پہلا لوپ پوزیشن متغیر pos کو 0 سے 180 تک بڑھاتا ہے، سروو کو ایک وقت میں ایک ڈگری حرکت دیتا ہے۔ دوسرا لوپ اس کے برعکس کرتا ہے، pos کو 180 سے واپس 0 تک گھٹاتا ہے۔ اہم حصہ ہر لوپ تکرار کے آخر میں delay(15) ہے۔ یہ وقفہ سروو کو اگلا کمانڈ بھیجنے سے پہلے نئی پوزیشن پر جسمانی طور پر منتقل ہونے کے لیے کافی وقت دیتا ہے۔ اس تاخیر کے بغیر، سروو رفتار برقرار نہیں رکھ پائے گی اور رک جائے گی یا جھٹکے کھائے گی (ویڈیو میں 12:31 پر)۔
یہ مثال سیکھنے کے لیے بہترین ہے، لیکن حقیقی ایپلیکیشن میں، آپ ممکنہ طور پر سروو کو ایک مخصوص زاویے پر سیٹ کرنا چاہیں گے۔ جیسا کہ ویڈیو میں دکھایا گیا ہے، آپ for لوپس کو ایک ہی کمانڈ جیسے myservo.write(90) سے تبدیل کرکے کوڈ میں ترمیم کر سکتے ہیں تاکہ سروو کو 90 ڈگری پر منتقل کیا جا سکے اور وہاں رکھا جا سکے (ویڈیو میں 10:09 پر)۔
پروگرام 2: سروو موٹر کو کنٹرول کرنا (نوب)
یہ دوسرا پروگرام سروو کنٹرول کو ایک قدم آگے لے جاتا ہے، سروو کی پوزیشن پر ریئل ٹائم، دستی کنٹرول فراہم کرنے کے لیے ایک پوٹینشیومیٹر (نوب) متعارف کراتا ہے۔ یہ سمجھنے کا ایک شاندار طریقہ ہے کہ اینالاگ ان پٹ کو درست جسمانی حرکت میں کیسے ترجمہ کیا جا سکتا ہے۔
یہ پروگرام پچھلے پروگرام پر مبنی ہے جس میں ایک پوٹینشیومیٹر شامل کیا گیا ہے۔ پوٹینشیومیٹر ایک متغیر مزاحم ہے جو ایک اینالاگ وولٹیج ڈیوائیڈر کے طور پر کام کرتا ہے۔ جب آپ نوب گھماتے ہیں، تو یہ اس کے آؤٹ پٹ پن پر وولٹیج تبدیل کرتا ہے۔ آرڈوینو اس وولٹیج کو اپنے اینالاگ پنوں میں سے ایک پر اینالاگ سے ڈیجیٹل کنورٹر (ADC) کے ذریعے پڑھتا ہے، اور اسے 0 سے 1023 کے درمیان ایک قدر میں تبدیل کرتا ہے۔
اس پروگرام کی کلید map() فنکشن ہے۔ یہ فنکشن ایک عدد کو ایک رینج سے دوسری رینج میں تبدیل کرتا ہے۔ اس معاملے میں، یہ پوٹینشیومیٹر کی خام قدر (0 سے 1023) کو سروو کے لیے موزوں قدر (0 سے 180 ڈگری) میں تبدیل کرنے کے لیے استعمال ہوتا ہے۔ کوڈ پوٹینشیومیٹر کی قدر کو analogRead(potpin) کے ساتھ پڑھتا ہے، اسے map(val, 0, 1023, 0, 180) کا استعمال کرتے ہوئے تبدیل کرتا ہے، اور پھر اس تبدیل شدہ قدر کو myservo.write(val) کے ساتھ سروو کو بھیجتا ہے۔ یہ ایک براہ راست ربط پیدا کرتا ہے جہاں نوب کو اس کے وسط پوائنٹ تک گھمانے سے سروو 90 ڈگری پر پوزیشن میں آجائے گا، اور اسی طرح آگے۔
کنٹرول کا یہ طریقہ انتہائی بدیہی ہے اور بہت سے انسانی مشین انٹرفیس کی بنیاد ہے، سادہ ریموٹ کنٹرولز سے لے کر پیچیدہ روبوٹک کنٹرولرز تک۔
لائیو پروجیکٹ ڈیموسٹریشن
ویڈیو دونوں پروگراموں کے عمل میں ایک لائیو ڈیموسٹریشن فراہم کرتی ہے۔ سویپ پروگرام کے لیے، آپ سروو بازو کو 0 سے 180 ڈگری تک اور واپس آسانی سے حرکت کرتے ہوئے دیکھ سکتے ہیں۔ پیش کنندہ یہ بھی دکھاتا ہے کہ for لوپ میں مرحلے کا سائز (مثلاً، 1 ڈگری سے 20 ڈگری تک) اور تاخیر کا وقت تبدیل کرنے سے سروو کا رویہ کیسے بدلتا ہے، جس سے حرکت تیز لیکن کم ہموار ہو جاتی ہے (ویڈیو میں 11:19 پر)۔
نوب پروگرام کے لیے، ڈیموسٹریشن دکھاتی ہے کہ پوٹینشیومیٹر کو گھمانا حقیقی وقت میں سروو کی پوزیشن کو براہ راست کیسے کنٹرول کرتا ہے۔ یہ بصری فیڈ بیک اینالاگ ان پٹ اور جسمانی آؤٹ پٹ کے درمیان تعلق کو سمجھنے کے لیے بہترین ہے۔
ابواب
- [00:00] سروو موٹرز کا تعارف
- [01:07] سروو موٹرز کے استعمال
- [02:57] سروو موٹر کی ساخت
- [04:48] سروو کو آرڈوینو سے جوڑنا
- [06:06] سویپ مثال کوڈ کی تلاش
- [09:21] سویپ پروگرام کا ڈیموسٹریشن
- [10:04] کسٹم سروو زاویہ ترتیب دینا
- [11:19] سویپ رفتار اور مرحلے کا سائز تبدیل کرنا
- [13:15] ایک اور سروو موٹر کی مثال
/*
Lesson 18/31: Controlling servo motor (sweep)
Get this code and watch video Download and resource page https://robojax.com/RJT601
YouTube video https://www.youtube.com/watch?v=KAt1WUWpHLQ
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been download from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <Servo.h>
Servo myservo; // create Servo object to control a servo
// twelve Servo objects can be created on most boards
int pos = 0; // variable to store the servo position
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the Servo object
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15 ms for the servo to reach the position
}
for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15 ms for the servo to reach the position
}
}
/*
Lesson 18/31: Controlling servo motor (knob)
Get this code and watch video Download and resource page https://robojax.com/RJT601
YouTube video https://www.youtube.com/watch?v=KAt1WUWpHLQ
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been download from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int potpin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
}
Common Course Links
Common Course Files
آپ کو جن چیزوں کی ضرورت ہو سکتی ہے
-
ایمیزونSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
ایمیزون
-
ایمیزون
-
ایمیزون
-
ایمیزون
وسائل اور حوالہ جات
-
دستاویزاتDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
باہرونیPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
فائلیں📁
آرڈوینو لائبریریاں (زپ)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB