سبق 24/31: اسمارٹ کار حصہ 2: آگے بڑھنا، ریورس، بائیں اور دائیں اور کار کی رفتار کو کنٹرول کرنا
یہ سبق آپ کی سمارٹ کار بنانے کے دوسرے مرحلے پر مرکوز ہے: Arduino کوڈ کا استعمال کرتے ہوئے اس کی حرکت پر قابو پانا۔ جبکہ پہلا پروجیکٹ کار کو بنیادی طریقے سے حرکت دے سکتا تھا، یہ گائیڈ آپ کو سکھاتا ہے کہ کار کو آگے، پیچھے، بائیں، دائیں موڑنے اور درست طریقے سے روکنے کا حکم کیسے دیں۔ آپ یہ بھی سیکھیں گے کہ اس کی رفتار کو کیسے کنٹرول کریں، جس سے ہموار ایکسلریشن اور ڈیسیلریشن ممکن ہو۔ یہ کسی بھی روبوٹکس پروجیکٹ کے لیے ایک بنیادی قدم ہے، کیونکہ یہ آپ کو مزید پیچیدہ خودکار رویے بنانے کے لیے بنیادی منطق فراہم کرتا ہے۔
ان حرکت کے کنٹرولز پر عبور حاصل کرنا امکانات کی ایک دنیا کھول دیتا ہے۔ اس علم کے لیے چند عملی استعمال یہ ہیں:
- لائن فالو کرنے والے روبوٹ: روبوٹ کو ٹریک پر رکھنے کے لیے بائیں اور دائیں موڑ کے فنکشنز استعمال کریں۔
- رکاوٹ سے بچنے والی گاڑیاں: کار کو پروگرام کریں کہ جب اسے راستے میں کوئی چیز نظر آئے تو آگے بڑھے، رکے اور مڑ جائے۔
- ریموٹ کنٹرول تلاش: ان کمانڈز کو وائرلیس ماجیول کے ساتھ ملا کر کار کو اپنے گھر یا صحن میں چلائیں۔
- خودکار ڈیلیوری سسٹم: ایک چھوٹے پیمانے کا روبوٹ بنائیں جو مقررہ پوائنٹس کے درمیان حرکت کر سکے، ضرورت کے مطابق رکے اور چلے۔
ہارڈویئر اور اجزاء
یہ پروجیکٹ SunFounder 3-in-1 Arduino کٹ پر مبنی ہے۔ بنیادی کٹ کے علاوہ کوئی اضافی اجزاء درکار نہیں ہیں، لیکن موٹر ڈرائیور کو کنٹرول کرنے کے لیے آپ کو Arduino سے چار اضافی تاریں جوڑنے کی ضرورت ہوگی۔ ضروری اجزاء یہ ہیں:
- Arduino Uno (یا مطابقت رکھنے والا بورڈ)
- موٹرز کے ساتھ SunFounder سمارٹ کار چیسس
- موٹر ڈرائیور بورڈ (کٹ میں شامل)
- جمپر تاریں
- کار کے لیے بیٹری پیک
- پروگرامنگ کے لیے USB کیبل
وائرنگ گائیڈ
اس پروجیکٹ کی وائرنگ ہر موٹر کی سمت کو کنٹرول کرنے کے لیے اہم ہے۔ ویڈیو وضاحت کرتی ہے کہ ڈرائیور بورڈ سے چار موٹر کنٹرول تاریں Arduino پن 5، 6، 9 اور 10 سے منسلک ہیں۔ یہ پن خاص ہیں کیونکہ یہ پلس وڈتھ ماڈیولیشن (PWM) کو سپورٹ کرتے ہیں، جو رفتار کنٹرول کے لیے ضروری ہے۔
ویڈیو میں، انسٹرکٹر انہیں پیلے اور نیلے تاروں کا استعمال کرتے ہوئے ایک مخصوص ترتیب میں جوڑتا ہے، جیسا کہ نیچے دیے گئے ڈایاگرام میں دکھایا گیا ہے۔
ویڈیو میں ذکر کردہ ایک اہم حفاظتی نوٹ یہ ہے کہ Arduino کو USB کے ذریعے پروگرام کرتے وقت کار کی بیٹری پاور (5V کو لال تار اور GND کو کالا تار) منقطع کریں۔ یہ USB پورٹ کو اوور لوڈ ہونے اور ممکنہ طور پر بند ہونے سے روکتا ہے۔
کوڈ کی وضاحت
اس سبق کا کوڈ آسانی سے تبدیل اور سمجھنے کے قابل بنایا گیا ہے۔ کار کو کنٹرول کرنے کی کلید اسکیچ کے اوپر پن کی تعریفوں میں ہے۔ اگر آپ اپنے Arduino پر مختلف پن استعمال کرنے کا فیصلہ کریں تو آپ انہیں تبدیل کر سکتے ہیں۔
const int in1 = 5;
const int in2 = 6;
const int in3 = 9;
const int in4 = 10;
یہ لائنیں Arduino پنوں کی وضاحت کرتی ہیں جو موٹر ڈرائیور کے ان پٹس سے منسلک ہیں۔ in1 اور in2 ایک موٹر کو کنٹرول کرتے ہیں، جبکہ in3 اور in4 دوسری کو کنٹرول کرتے ہیں۔ ان پنوں کو HIGH یا LOW سیٹ کرکے، آپ ہر موٹر کی گردش کی سمت کو کنٹرول کرتے ہیں۔
کار کی رفتار کو کنٹرول کرنے کے لیے، کوڈ دو حسب ضرورت فنکشنز استعمال کرتا ہے: moveForward(int speed) اور moveBackwards(int speed)۔ یہ فنکشنز 0 سے 255 کے درمیان ایک عددی قدر بطور دلیل لیتے ہیں۔ 0 کی قدر موٹر کو روکتی ہے، جبکہ 255 زیادہ سے زیادہ رفتار ہے۔ مثال کے طور پر، کار کو پوری رفتار سے آگے بڑھانے کے لیے، آپ moveForward(255) کہیں گے۔ اسے آہستہ پیچھے لے جانے کے لیے، آپ moveBackwards(100) استعمال کریں گے۔
ویڈیو for لوپس کا استعمال کرتے ہوئے "تیز رفتاری" اور "سست رفتاری" کی ترتیب بھی دکھاتی ہے۔ یہ ہموار ایکسلریشن کے لیے ایک طاقتور تکنیک ہے۔
for(int i=0;i<=255;i+=5){
moveForward(i);
delay(100);
}
یہ لوپ i کو 0 سے شروع کرتا ہے اور ہر بار اسے 5 تک بڑھاتا ہے جب تک کہ یہ 255 تک نہ پہنچ جائے۔ ہر بار، یہ moveForward(i) کو کال کرتا ہے، آہستہ آہستہ کار کی رفتار بڑھاتا ہے۔ delay(100) رفتار کے ہر مرحلے پر 100 ملی سیکنڈ کا وقفہ فراہم کرتا ہے، جس سے ایکسلریشن نظر آتی ہے۔ کار کو سست کرنے کے لیے i کی گھٹتی ہوئی قدر کے ساتھ اسی طرح کا لوپ استعمال کیا جاتا ہے۔
لائیو پروجیکٹ ڈیموسٹریشن
ویڈیو میں، انسٹرکٹر پروجیکٹ کو دو اہم مراحل میں دکھاتا ہے۔ پہلے، وہ کار کی بنیادی حرکات دکھاتا ہے۔ "move" کوڈ لوڈ کرکے، کار ایک پہلے سے پروگرام شدہ ترتیب انجام دیتی ہے: دو سیکنڈ آگے بڑھنا، رکنا، دو سیکنڈ ریورس کرنا، رکنا، بائیں مڑنا، اور پھر دائیں مڑنا۔ یہ بصری طور پر تصدیق کرتا ہے کہ وائرنگ اور منطق درست ہیں۔
دوسرا مظاہرہ رفتار کنٹرول پر مرکوز ہے۔ انسٹرکٹر "speed up" کوڈ لوڈ کرتا ہے، جو کار کو آہستہ آہستہ آگے بڑھاتا ہے یہاں تک کہ وہ زیادہ سے زیادہ رفتار تک پہنچ جائے اور پھر آسانی سے رکنے تک رفتار کم کرتا ہے۔ اس کے بعد وہ ایک مقررہ رفتار والا ورژن دکھاتا ہے، جہاں کار 255 پر آگے بڑھتی ہے، رکتی ہے، اور پھر 100 کی سست رفتار پر الٹی سمت میں چلتی ہے، اور تصدیق کے لیے اقدار سیریل مانیٹر پر پرنٹ کی جاتی ہیں۔
ابواب
- [00:00] کار کی حرکت کے کنٹرول کا تعارف
- [01:44] کوڈ کنٹرول کے لیے وائرنگ کی ترتیب
- [02:07] آگے اور پیچھے کی حرکت کا مظاہرہ
- [03:18] بائیں اور دائیں موڑ کا مظاہرہ
- [05:05] اردوینو پنوں سے تاریں جوڑنا
- [07:00] سمت کنٹرول کے لیے کوڈ کی وضاحت
- [11:44] رفتار کنٹرول کا تعارف
- [12:16] رفتار بڑھانے کے کوڈ کی وضاحت
- [14:45] ڈیبگنگ کے لیے سیریل مانیٹر کا استعمال
- [17:10] رفتار کنٹرول کا لائیو مظاہرہ
- [19:45] حتمی بیرونی ٹیسٹ اور نتیجہ
/*
Lesson 24/31: Smart code speeds up
Get this code and watch video Download and resource page https://robojax.com/RJT607
YouTube video https://www.youtube.com/watch?v=QzcUig2L3dM
*/
const int in1 = 5;
const int in2 = 6;
const int in3 = 9;
const int in4 = 10;
void setup() {
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
Serial.begin(9600);
Serial.println("SunFounder Arduino Course");
Serial.println("Lesson 3: Speed up");
Serial.println("www.Robojax.com");
}
void loop() {
moveForward(255);
Serial.print("Forward at: ");
Serial.println(255);
delay(5000);//for 5 seconds
Serial.println("Stopped ");
moveForward(0);//stop the car
delay(2000);//for 2 seconds
moveBackwards(100);
Serial.print("Reverse at: ");
Serial.println(100);
delay(5000);//for 5 seconds
Serial.println("Stopped ");
moveForward(0);//stop the car
delay(2000);//for 2 seconds
}
void moveForward(int speed) {
analogWrite(in1, 0);
analogWrite(in2, speed);
analogWrite(in3, speed);
analogWrite(in4, 0);
}
void moveBackwards(int speed) {
analogWrite(in1, speed);
analogWrite(in2, 0);
analogWrite(in3, 0);
analogWrite(in4, speed);
}
/*
Lesson 24/31: Smart code speeds up (custom code)
Get this code and watch video Download and resource page https://robojax.com/RJT607
YouTube video https://www.youtube.com/watch?v=QzcUig2L3dM
*/
const int in1 = 5;
const int in2 = 6;
const int in3 = 9;
const int in4 = 10;
void setup() {
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
Serial.begin(9600);
Serial.println("SunFounder Arduino Course");
Serial.println("Lesson 3: Speed up");
Serial.println("www.Robojax.com");
}
void loop() {
Serial.println("Loop 1: Speeding Up");
for(int i=0;i<=255;i+=5){
moveForward(i);
Serial.print("i= ");
Serial.println(i);
delay(100);
}
Serial.println("Loop 2: Slowing down ");
for(int i=255;i>=0;i-=5){
moveForward(i);
Serial.print("i= ");
Serial.println(i);
delay(100);
}
}
void moveForward(int speed) {
analogWrite(in1, 0);
analogWrite(in2, speed);
analogWrite(in3, speed);
analogWrite(in4, 0);
}
Common Course Links
Common Course Files
آپ کو جن چیزوں کی ضرورت ہو سکتی ہے
-
ایمیزون5V DC motor on Amazonamzn.to
-
ایمیزون5V DC motor on eBayebay.us
-
ایمیزونSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
ایمیزون
-
ایمیزون
-
ایمیزون
-
ایمیزون
-
علی ایکسپریس5V DC motor 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