لومړی ۲۴/۳۱: سمارټ موټر دوهمه برخه: مخکې تګ، شاته تګ، کیڼ او ښي اړخ او د موټر د سرعت کنټرول
دا درس د سمارټ موټر جوړولو په دویمه مرحله تمرکز کوي: د Arduino کوډ په کارولو سره د هغه د حرکت کنټرول. که څه هم لومړی پروژه ممکن موټر په بنسټیز ډول حرکت کړی وي، دا لارښود تاسو ته درس درکوي چې څنګه موټر ته امر وکړئ چې مخکې، شاته، کیڼ اړخ ته، ښي اړخ ته حرکت وکړي، او په دقیق ډول ودریږي. تاسو به دا هم زده کړئ چې د هغه سرعت کنټرول کړئ، چې د نرمو چټکتیا او ورو کیدو اجازه ورکوي. دا د هر روبوټیک پروژې لپاره یو بنسټیز ګام دی، ځکه چې دا تاسو ته بنسټیز منطق درکوي ترڅو ډیر پیچلي خپلواک چلندونه رامینځته کړئ.
د دې حرکت کنټرولونو مهارت ترلاسه کول د امکاناتو نړۍ پرانیزي. دلته د دې پوهې لپاره ځینې عملي کارونې دي:
- د کرښې تعقیبونکي روبوټونه: د کیڼ او ښي اړخ د تګ دندې وکاروئ ترڅو روبوټ په لار کې وساتئ.
- د خنډ مخنیوي وسایط: موټر پروګرام کړئ چې مخکې حرکت وکړي، ودریږي، او وګرځي کله چې په خپله لاره کې یو شی کشف کړي.
- د ریموټ کنټرول سپړنه: دا امرونه د بېسیم ماډل سره یوځای کړئ ترڅو موټر ستاسو په کور یا انګړ کې چل کړئ.
- اتوماتیک تحویلي سیسټمونه: یو کوچنی روبوټ جوړ کړئ چې د ټاکلو نقطو ترمنځ حرکت وکړي، د اړتیا سره سم ودریږي او پیل شي.
هارډویر او اجزاوې
دا پروژه د SunFounder 3-in-1 Arduino کټ پر بنسټ ولاړه ده. د بنسټیز کټ څخه هاخوا اضافي اجزاوې اړینې ندي، مګر تاسو به اړتیا ولرئ چې د موټر چلوونکي کنټرول لپاره Arduino ته څلور اضافي تارونه وصل کړئ. اړین اجزاوې دا دي:
- Arduino Uno (یا مطابقت لرونکی بورډ)
- د SunFounder سمارټ موټر چوکاټ د موټرو سره
- د موټر چلوونکي بورډ (په کټ کې شامل دی)
- جمپر تارونه
- د موټر لپاره بیټرۍ پیک
- د پروګرام کولو لپاره USB کیبل
د تارونو د نښلولو لارښود
د دې پروژې لپاره د تارونو نښلول د هر موټر د لارښوونې کنټرول لپاره خورا مهم دي. ویډیو تشریح کوي چې د چلوونکي بورډ څخه څلور د موټر کنټرول تارونه د Arduino پنونو 5، 6، 9، او 10 سره وصل دي. دا پنونه ځانګړي دي ځکه چې دوی د Pulse Width Modulation (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" کوډ بارولو سره، موټر یو دمخه پروګرام شوی ترتیب اجرا کوي: د دوو ثانیو لپاره مخکې حرکت، ودریدل، د دوو ثانیو لپاره شاته تګ، ودریدل، کیڼ اړخ ته تګ، او بیا ښي اړخ ته تګ. دا په بصري ډول تاییدوي چې تارونه او منطق سم دي.
دوهمه ننداره د سرعت کنټرول باندې تمرکز کوي. ښوونکی د "سرعت لوړول" کوډ باروي، کوم چې موټر په تدریج سره مخکې ګړندی کوي تر هغه چې اعظمي سرعت ته ورسیږي او بیا په نرمۍ سره ورو کیږي تر څو ودریږي. هغه بیا یوه نسخه د ثابت سرعت سره ښیي، چیرته چې موټر په 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
Things you might need
-
Amazon5V DC motor on Amazonamzn.to
-
Amazon5V DC motor on eBayebay.us
-
AmazonSunFounder Arduino Learning kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
-
AliExpress5V DC motor on AliExpresss.click.aliexpress.com
Resources & references
-
DocumentationDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kit¶docs.sunfounder.com
-
ExternalPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Files📁
Arduino Libraries (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB