کوڈ تلاش کریں

سبق 24/31: اسمارٹ کار حصہ 2: آگے بڑھنا، ریورس، بائیں اور دائیں اور کار کی رفتار کو کنٹرول کرنا

سبق 24/31: اسمارٹ کار حصہ 2: آگے بڑھنا، ریورس، بائیں اور دائیں اور کار کی رفتار کو کنٹرول کرنا

24-SunFounder-Car-Speed فرش پر

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

26-SunFounder-Car-4-Ultrasonic.mp4_snapshot_00.00.000

ان حرکت کے کنٹرولز پر عبور حاصل کرنا امکانات کی ایک دنیا کھول دیتا ہے۔ اس علم کے لیے چند عملی استعمال یہ ہیں:

  • لائن فالو کرنے والے روبوٹ: روبوٹ کو ٹریک پر رکھنے کے لیے بائیں اور دائیں موڑ کے فنکشنز استعمال کریں۔
  • رکاوٹ سے بچنے والی گاڑیاں: کار کو پروگرام کریں کہ جب اسے راستے میں کوئی چیز نظر آئے تو آگے بڑھے، رکے اور مڑ جائے۔
  • ریموٹ کنٹرول تلاش: ان کمانڈز کو وائرلیس ماجیول کے ساتھ ملا کر کار کو اپنے گھر یا صحن میں چلائیں۔
  • خودکار ڈیلیوری سسٹم: ایک چھوٹے پیمانے کا روبوٹ بنائیں جو مقررہ پوائنٹس کے درمیان حرکت کر سکے، ضرورت کے مطابق رکے اور چلے۔

ہارڈویئر اور اجزاء

یہ پروجیکٹ SunFounder 3-in-1 Arduino کٹ پر مبنی ہے۔ بنیادی کٹ کے علاوہ کوئی اضافی اجزاء درکار نہیں ہیں، لیکن موٹر ڈرائیور کو کنٹرول کرنے کے لیے آپ کو Arduino سے چار اضافی تاریں جوڑنے کی ضرورت ہوگی۔ ضروری اجزاء یہ ہیں:

  • Arduino Uno (یا مطابقت رکھنے والا بورڈ)
  • موٹرز کے ساتھ SunFounder سمارٹ کار چیسس
  • موٹر ڈرائیور بورڈ (کٹ میں شامل)
  • جمپر تاریں
  • کار کے لیے بیٹری پیک
  • پروگرامنگ کے لیے USB کیبل
smarcar_turning_right  اوپر
smartcar_turning_left اوپر

وائرنگ گائیڈ

اس پروجیکٹ کی وائرنگ ہر موٹر کی سمت کو کنٹرول کرنے کے لیے اہم ہے۔ ویڈیو وضاحت کرتی ہے کہ ڈرائیور بورڈ سے چار موٹر کنٹرول تاریں 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] حتمی بیرونی ٹیسٹ اور نتیجہ

تصاویر

26 SunFounder Car 4 ultrasonic video snapshot 00.00.000
26 SunFounder Car 4 ultrasonic video snapshot 00.00.000
Smartcar turning left
Smartcar turning left
Smartcar turning right
Smartcar turning right
24 SunFounder Car speed on the pavement
24 SunFounder Car speed on the pavement
900-Lesson 24/31: Smart code speeds up
زبان: C++
/*
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);
}
901-Lesson 24/31: Smart code speeds up (Custome code)
زبان: C++
/*
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);
}

آپ کو جن چیزوں کی ضرورت ہو سکتی ہے

وسائل اور حوالہ جات

فائلیں📁

آرڈوینو لائبریریاں (زپ)