لومړی ۲۷/۳۱: کار-۵ سن فاونډر سمارټ موټر ستاسو د لاس تعقیبوي د اردوینو په کارولو سره | روبوجاکس
پیژندنه
ایا تاسو کله هم غوښتي چې یو روبوټ جوړ کړئ چې ستاسو د شتون په وړاندې په هوښیارۍ سره غبرګون وښيي؟ دا پروژه د سن فاونډر سمارټ موټر په یوه موټر بدلوي چې د لاس په اشارو کنټرول کیږي او ستاسو لاس تعقیبوي. د ریموټ کنټرول یا د سمارټ فون اپلیکیشن کارولو پرځای، دا موټر د الټراسونیک او انفراریډ سینسرونو ترکیب کاروي ترڅو ستاسو د لاس موقعیت او فاصله کشف کړي، او تاسو ته اجازه درکوي چې دا د ساده طبیعي حرکتونو سره کیڼ، ښي یا مخکې لارښوونه وکړئ.
دا پروژه د روبوجکس اردوینو کورس (درس 27/31) برخه ده او د سن فاونډر 3-په-1 اردوینو کټ په کارولو سره جوړه شوې ده. دا د سینسر فیوژن زده کولو لپاره یوه غوره لار ده، چیرې چې ډیری سینسرونه یوځای کار کوي ترڅو یو ډیر پیچلی او ځواب ویونکی چلند رامینځته کړي. دلته اصلي ارزښت د پریکړې کولو لپاره د مختلفو ډولونو انپټونو د ترکیب په پوهیدو کې دی، کوم چې په روبوټیک او اتوماتیک کې یو بنسټیز مفهوم دی.
دلته ځینې عملي نظرونه دي چې تاسو کولی شئ د دې منطق سره جوړ کړئ:
- متقابل نندارتونونه: یو کوچنی روبوټیک نندارتون جوړ کړئ چې لیدونکي تعقیبوي ترڅو د دوی پام ځانته راجلب کړي.
- خپلواک خنډ-څخه-تښتیدونکی پلیټ فارم: کوډ بدل کړئ ترڅو موټر د لاس تعقیبولو پرځای د خنډونو څخه په تښتیدو سره په خونه کې حرکت وکړي.
- تعلیمي روبوټیک کټ: دا د زده کونکو لپاره د سینسر ادغام، منطق او موټرو کنټرول د تدریس لپاره د بنسټیز پروژې په توګه وکاروئ.
- سمارټ تحویلي ټرالی: په کنټرول شوي چاپیریال کې، دا منطق د یوې کوچنۍ ټرالي لپاره تطبیق کیدی شي چې په ګودام یا فابریکه کې یو شخص تعقیبوي.
هارډویر او اجزاوې
دا پروژه د سن فاونډر 3-په-1 اردوینو کټ کې شامل اجزاوې کاروي. اصلي اجزاوې چې تاسو به یې وکاروئ دا دي:
- سن فاونډر سمارټ موټر چوکاټ: فزیکي پلیټ فارم د څرخونو او موټرو سره.
- اردوینو بورډ: د موټر "ماغزه" چې کوډ پرمخ وړي.
- الټراسونیک سینسر (HC-SR04): د موټر مخې ته د یو شی (ستاسو لاس) فاصله اندازه کولو لپاره کارول کیږي.
- دوه IR (انفراریډ) خنډ-څخه-تښتیدونکي سینسرونه: په کیڼ او ښي اړخونو کې نصب شوي ترڅو په دې اړخونو کې ستاسو د لاس شتون کشف کړي.
- موټرو ډرایور: یو ماډل (اکثرا L298N یا ورته) چې د اردوینو څخه د سیګنالونو پر بنسټ د موټرو سرعت او لارښوونه کنټرولوي.
- د بریښنا سرچینه: بیټرۍ د اردوینو او موټرو د بریښنا لپاره.
د تارونو لارښود
لکه څنګه چې په ویډیو کې یادونه شوې، د دې پروژې تارونه د هغه څه سره ورته دي چې په تیرو درسونو کې د خنډ-څخه-تښتیدونکي موټر لپاره تشریح شوي. سینسرونه او موټرې ټول د اردوینو ډیجیټل او انلاګ پنونو سره وصل دي. د بصري حوالې لپاره، مهرباني وکړئ د سن فاونډر سمارټ موټر د تارونو ډیاګرام ته مراجعه وکړئ.
کوډ د هرې برخې لپاره ځانګړي پنونه تعریفوي، کوم چې په راتلونکې برخه کې تفصیل سره تشریح شوي.
د کوډ تشریح
دا برخه د کوډ د هغو برخو باندې تمرکز کوي چې کاروونکي یې تنظیمولی شي او تاسو ممکن د خپل موټر لپاره یې بدلول غواړئ. بشپړ پروګرام د روبوبوجکس سرچینې پاڼې څخه د ډاونلوډ لپاره شتون لري.
د سکیچ په پورتنۍ برخه کې، تاسو به د پن تعریفونه ومومئ. دا خورا مهم کرښې دي چې پوهیدل یې اړین دي که تاسو خپل موټر د ښوونکي څخه په مختلف ډول تار کړی وي.
const int A_1B = 5;
const int A_1A = 6;
const int B_1B = 9;
const int B_1A = 10;
const int rightIR=7;
const int leftIR=8;
const int trigPin = 3;
const int echoPin = 4;
دلته د هرې ډلې پنونو دنده ده:
- د موټرو پنونه (A_1A, A_1B, B_1A, B_1B): دا هغه پنونه دي چې د دوه موټرو کنټرول لپاره د موټرو ډرایور سره وصل دي. د "A" او "B" لیبلونه معمولا په ترتیب سره کیڼ او ښي موټرو ته اشاره کوي. تاسو باید دا بدل کړئ که ستاسو د موټرو ډرایور د مختلفو اردوینو پنونو سره وصل وي.
- د IR سینسر پنونه (rightIR, leftIR): دا ډیجیټل انپټ پنونه د کیڼ او ښي انفراریډ خنډ سینسرونو څخه سیګنال لوستل کوي. د
0ارزښت پدې معنی دی چې یو خنډ (ستاسو لاس) کشف شوی، پداسې حال کې چې1پدې معنی دی چې لاره روښانه ده. - د الټراسونیک سینسر پنونه (trigPin, echoPin):
trigPinیو آوټپټ دی چې یو لنډ الټراسونیک پلس لیږي، اوechoPinیو انپټ دی چې د فاصلې محاسبه کولو لپاره د انعکاس شوي پلس موده لوستل کیږي.
د loop() فنکشن دننه، تاسو به اصلي چلند منطق ومومئ. یو واحد متغیر شتون لري چې تاسو یې تنظیم کول غواړئ:
int speed = 150;
دا speed متغیر د حرکت په جریان کې موټرو ته لیږل شوي بریښنا کنټرولوي. دا کولی شي له 0 (بند) څخه تر 255 (اعظمي سرعت) پورې وي. تاسو کولی شئ دا ارزښت زیات کړئ (د مثال په توګه، 200 ته) د ګړندي موټر لپاره یا یې کم کړئ (د مثال په توګه، 100 ته) د ډیر کنټرول شوي، ورو حرکتونو لپاره.
کوډ د moveForward()، turnLeft()، او turnRight() په څیر فنکشنونه هم لري. دا فنکشنونه د موټر د حرکت کنټرول لپاره کارول کیږي او د سینسر لوستلو پر بنسټ بلل کیږي. تاسو اړتیا نلرئ چې یې بدل کړئ، مګر تاسو کولی شئ د خپلو دودیزو چلندونو جوړولو لپاره د ودانیزو بلاکونو په توګه وکاروئ.
د "خپل لاس تعقیب" منطق څنګه کار کوي
د دې پروژې جادو په دې کې ده چې Arduino څنګه د دریو سینسرونو څخه معلومات تشریح کوي. منطق ساده دی او په دوامداره توګه د loop() فنکشن کې اجرا کیږي.
لومړی، موټر د الټراسونیک سینسر په کارولو سره د خپل مخې ته د یو شي فاصله اندازه کوي. بیا، دا دوه انفراریډ سینسرونه معاینه کوي ترڅو وګوري چې ایا یو شی د هغې په کیڼ یا ښي اړخ کې دی. د پریکړې کولو پروسه په لاندې ډول ده:
- مخکې تګ: که چیرې د الټراسونیک سینسر لخوا اندازه شوې فاصله له 5 سانتي مترو څخه زیاته وي مګر له 10 سانتي مترو څخه کمه وي، موټر مخکې ځي. دا یوه "غوره سیمه" جوړوي چیرې چې موټر ستاسو لاس تعقیبوي.
- کیڼ اړخ ته تګ: که فاصله په هغه سیمه کې نه وي، موټر د IR سینسرونه معاینه کوي. که چیرې کیڼ سینسر بند وي (ستاسو لاس په کیڼ اړخ کې وي) او ښي سینسر روښانه وي، موټر کیڼ اړخ ته ځي.
- ښي اړخ ته تګ: برعکس، که چیرې ښي سینسر بند وي او کیڼ سینسر روښانه وي، موټر ښي اړخ ته ځي.
- دریدل: که چیرې دا شرایط هیڅ یو پوره نشي — د مثال په توګه، که ستاسو لاس ډیر لرې یا ډیر نږدې وي — موټر دریږي.
د قواعدو دا ساده مجموعه موټر ته اجازه ورکوي چې ستاسو د لاس موقعیت ته په متحرک ډول غبرګون وښيي، چې یو نرم او هوښیار تعقیبونکی چلند رامینځته کوي.
ژوندۍ پروژې نندارې
په ویډیو نندارې کې، ښوونکی د موټر چلند په ریښتیني وخت کې ښیې. سریال مانیټر د الټراسونیک سینسر لخوا لوستل شوې فاصله ښودلو لپاره کارول کیږي. کله چې موټر بې کاره وي او ستاسو لاس لرې وي (د مثال په توګه، 36 سانتي متره)، دا دریږي. هرڅومره ژر چې تاسو خپل لاس د موټر مخې ته د 5-10 سانتي مترو په سیمه کې ږدئ، دا مخکې تګ پیل کوي.
ننداره د تګ منطق هم روښانه کوي. کله چې ستاسو لاس د موټر په کیڼ اړخ کې کیښودل شي، کیڼ IR سینسر فعالیږي، او موټر کیڼ اړخ ته ځي. په ورته ډول، ستاسو لاس په ښي اړخ کې ایښودل موټر ښي اړخ ته اړوي. موټر به ستاسو لاس تعقیب ته دوام ورکړي لکه څنګه چې تاسو یې حرکت کوئ، یوازې هغه وخت دریږي کله چې ستاسو لاس د هغې د سینسر له ساحې څخه لرې شي یا ډیر نږدې وي. دا تاییدوي چې د سینسر فیوژن او منطق لکه څنګه چې تمه کیده کار کوي، چې یو ځواب ویونکی او ساتیري پروژه رامینځته کوي.
فصلونه
- [00:00] د لاس تعقیبونکي سمارټ موټر پیژندنه
- [00:35] د Robojax Arduino کورس او کټ په اړه
- [01:41] د پروژې کتنه او د کوډ تنظیم
- [02:19] د پن تعریفونو او تنظیم تشریح
- [03:19] ستاسو د لاس تعقیب لپاره د کوډ منطق
- [05:48] د موټر په عمل کې ژوندۍ نندارې
- [07:28] وروستۍ نندارې او د فعالیت بیاکتنه
/*
Lesson 27/31: Car-5 SunFounder Smart Car Follows Your Hand
Get this code and watch video Download and resource page https://robojax.com/RJT610
YouTube video https://www.youtube.com/watch?v=mcbJlE7-8ro
*/
const int A_1B = 5;
const int A_1A = 6;
const int B_1B = 9;
const int B_1A = 10;
const int rightIR=7;
const int leftIR=8;
const int trigPin = 3;
const int echoPin = 4;
void setup() {
Serial.begin(9600);
//motor
pinMode(A_1B, OUTPUT);
pinMode(A_1A, OUTPUT);
pinMode(B_1B, OUTPUT);
pinMode(B_1A, OUTPUT);
//IR obstacle
pinMode(leftIR,INPUT);
pinMode(rightIR,INPUT);
//ultrasonic
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
}
void loop() {
float distance = readSensorData();
int left = digitalRead(leftIR); // 0: Obstructed 1: Empty
int right = digitalRead(rightIR);
int speed = 150;
if (distance>5 && distance<10){
moveForward(speed);
}else if(!left&&right){
turnLeft(speed);
}else if(left&&!right){
turnRight(speed);
}else{
stopMove();
}
}
float readSensorData() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
float distance = pulseIn(echoPin, HIGH) / 58.00; //Equivalent to (340m/s*1us)/2
return distance;
}
void moveForward(int speed) {
analogWrite(A_1B, 0);
analogWrite(A_1A, speed);
analogWrite(B_1B, speed);
analogWrite(B_1A, 0);
}
void moveBackward(int speed) {
analogWrite(A_1B, speed);
analogWrite(A_1A, 0);
analogWrite(B_1B, 0);
analogWrite(B_1A, speed);
}
void turnRight(int speed) {
analogWrite(A_1B, speed);
analogWrite(A_1A, 0);
analogWrite(B_1B, speed);
analogWrite(B_1A, 0);
}
void turnLeft(int speed) {
analogWrite(A_1B, 0);
analogWrite(A_1A, speed);
analogWrite(B_1B, 0);
analogWrite(B_1A, speed);
}
void stopMove() {
analogWrite(A_1B, 0);
analogWrite(A_1A, 0);
analogWrite(B_1B, 0);
analogWrite(B_1A, 0);
}
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
فایلونه📁
Arduino کتابتونونه (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB