Тақырыбы: Ардуино роботының қара сызық бойымен қозғалысы Қара сызық бойымен қозғалу үшін Ардуино роботын құрастыру



Дата11.12.2023
өлшемі19,69 Kb.
#137420

№13 дәріс
Тақырыбы: Ардуино роботының қара сызық бойымен қозғалысы
Қара сызық бойымен қозғалу үшін Ардуино роботын құрастыру
Бұл мақалада біз адруиноның мобильді роботын қара сызықпен жүру үшін Қалай бағдарламалау керектігін талдаймыз. Ардуино роботының қара сызық бойымен қозғалуы үшін оған екі жарық сенсорын қосу керек, Жарық сенсорларын қосу схемасы суретте көрсетілген.
Ардуино мобильді роботының қара сызық бойымен қозғалысы үшін Arduino мобильді роботының жылжымалы платформасын негізге алыңыз, оның схемасы Arduino мобильді роботы сабағында бөлшектелген.
Жарық датчиктері немесе қара сызық датчиктері ардуино тақтасына келесідей қосылады: қара жер датчигі порты GND контактісіне нан тақтасы арқылы қосылады, VCC Қуат кернеу датчигі порты 5В нан тақтасы арқылы қуат шинасына қосылады, А0 Ардуино А0, А1 тақтасының аналогтық порттарына қосылады. Жарық сенсорынан деректерді санау үшін пәрмен қолданылады
analogRead (түйреуіш нөмірі);
Бұл пәрмен пин нөмірі бар сенсор мәнін оқиды.
Жарық сенсорының жұмысы туралы толығырақ Arduino сенсорларын оқу және калибрлеу сабағында сипатталған.
Ардуино мобильді роботының қара сызығы бойынша қозғалыс алгоритмі
Егер Ардуино роботы сол жақ сенсормен қара сызыққа соғылса, онда ол белгілі бір уақытты солға бұрады.
Егер Ардуино роботы оң жақ сенсормен қара сызыққа соғылса, онда ол белгілі бір уақытты оңға бұрады.
Егер екі сенсор да ақ болса, онда робот белгілі бір уақыт аралығында жүреді.
Біз мысалды қиылыста тоқтаусыз талдаймыз. Егер екі сенсор да қара болса, онда робот белгілі бір уақытқа алға шығады.
Сенсордың қара сызыққа түскенін түсіну үшін сенсордан деректерді санап, оны калибрленген мәнмен салыстыру керек. Егер қара сызық сенсорынан оқылған мән калибрленген мәннен үлкен болса, онда біз қара сызыққа, егер аз болса, ақ сызыққа бардық (бұл белгілі бір қара сызық сенсорының жұмысына байланысты). Бір мезгілде екі шартты орындау үшін шарттар мен логикалық операциялар операторын және Si-дегі шарттар мен логикалық операциялар туралы && толығырақ пайдалану қажет.
Адрдуино роботының қара сызығы бойынша қозғалыс алгоритмін талдайық
Left_1 = analogRead (LeftSensor_1); //сол жақ сенсордан деректерді оқыңыз
Right_1 = analogRead (RightSensor_1); / / оң сенсордан деректерді оқыңыз
Осылайша, Ардуино мобильді роботы қара сызыққа сол жақ сенсормен кірген кезде:
Left_1 = analogRead (LeftSensor_1); //сол жақ сенсордан деректерді оқыңыз
Right_1 = analogRead (RightSensor_1); / / оң сенсордан деректерді оқыңыз
//Егер сол жақ сенсор қара, ал оң жақ ақ болса, Солға бұрылыңыз
егер ((Left_1 > sl1) && (Right_1 < sp1))) {
Аналогтық жазба(SPEED_1, pov);
Сандық жазба(DIR_1, төмен деңгей);
Аналогтық жазба (SPEED_2, povt);
Сандық жазба(DIR_2, жоғары);
кідіріс(1);
}
Arduino-мен мобильді робот оң жақ сенсормен қара сызыққа кірген кезде:
Left_1 = analogRead (LeftSensor_1); //сол жақ сенсордан деректерді оқыңыз
Right_1 = analogRead (RightSensor_1); / / оң сенсордан деректерді оқыңыз
// Егер оң сенсор қара, ал сол сенсор ақ болса, онда біз оңға бұрыламыз
if ((Right_1 > sp1) && (Left_1 < sl1)) {
analogWrite(SPEED_1, povt);
Сандық жазба(DIR_1,жоғары);
Аналогтық жазба(SPEED_2, pov);
Сандық жазба(DIR_2, төмен деңгей);
кідіріс(1);
}
Ардуино мобильді роботының екі сенсоры да ақ сызықты көргенде:
Left_1 = analogRead (LeftSensor_1); //сол жақ сенсордан деректерді оқыңыз
Right_1 = analogRead (RightSensor_1); / / оң сенсордан деректерді оқыңыз
// Егер екі сенсор да ақ болса, біз барамыз
егер ((Left_1 < sl1) && (Right_1 < sp1)) {
Аналогтық жазба(SPEED_1, v);
Сандық жазба(DIR_1,жоғары);
Аналогтық жазба(SPEED_2, v);
Сандық жазба(DIR_2, жоғары);
кідіріс(1);
}
Адруино мобильді роботының екі сенсоры да қара сызықты көргенде:
Left_1 = analogRead (LeftSensor_1); //сол жақ сенсордан деректерді оқыңыз
Right_1 = analogRead (RightSensor_1); / / оң сенсордан деректерді оқыңыз
//Егер екі сенсор да қара болса, біз барамыз
егер ((Left_1 > sl1) && (Right_1 > sp1)) {
Аналогтық жазба(SPEED_1, v);
Сандық жазба(DIR_1,жоғары);
Аналогтық жазба(SPEED_2, v);
Сандық жазба(DIR_2, жоғары);
кідіріс(1);
}
Біз ардуиннің мобильді роботының қара сызығы бойынша қозғалыс процедурасын жасаймыз оны Лин деп атаймыз
Роботтың қара сызық бойымен шексіз жүруі үшін біз негізгі бағдарламаның денесінде процедураны шақыруымыз керек
бос цикл () {
лин();
}
Arduino көмегімен роботты қара сызық бойымен жылжытуға арналған бағдарламаның толық мәтіні
#жылдамдықты анықтаңыз_1 6 / / Бірінші қозғалтқыштың жылдамдығы
# DIR_1 7 анықтаңыз / / бірінші қозғалтқыштың бағыты
# dir_2 4 // екінші қозғалтқыштың бағытын анықтаңыз
# жылдамдықты анықтаңыз_2 5 // екінші қозғалтқыштың жылдамдығы
int Left_1; / / сол жақ сенсорды тағайындаңыз
int Right_1; / / оң сенсорды тағайындаңыз
// Түйреуіштерге қосылу
# RightSensor_1 A0 анықтаңыз
#сол жақ сенсорды анықтаңыз_1 A1
// Мұнда біз сенсорларды калибрлеуден деректерді жазамыз
int sl1=193; / / сол жақ сенсордың орташа жарықтандыруы
Int sp1=206; / / оң сенсордың орташа жарықтандыруы
// Робот жылдамдығын реттеуге арналған айнымалылар
int povt=30;
int pov=60;
int v=70;
бос орнату () {
Сериялық нөмір.басталуы (9600);
for (int i = 4; i < 8; i++) // моторларға арналған порттарды анықтаңыз
pinMode (I, Шығыс);
pinMode (A0, енгізу); / / қара сызық сенсорлары үшін порттарды теңшеңіз
PIN режимі (A1, енгізу);
кідіріс(1000);
}
бос жол () {
Left_1 = analogRead (сол жақ сенсор_1);
Right_1 = analogRead (RightSensor_1);
//Егер сол жақ сенсор қара болып көрінсе, Солға бұрылыңыз
егер ((Left_1 > sl1) && (Right_1 < sp1)) {
Аналогтық жазба(SPEED_1, pov);
Сандық жазба(DIR_1, төмен деңгей);
Аналогтық жазба (SPEED_2, povt);
Сандық жазба(DIR_2, жоғары);
кідіріс(1);
}
Left_1 = analogRead (сол жақ сенсор_1);
Right_1 = analogRead (RightSensor_1);
// Егер оң сенсор қара түсті көрсе, Оңға бұрылыңыз
if ((Right_1 > sp1) && (Left_1 < sl1)) {
analogWrite(SPEED_1, povt);
Сандық жазба(DIR_1,жоғары);
Аналогтық жазба(SPEED_2, pov);
Сандық жазба(DIR_2, төмен деңгей);
кідіріс(1);
}
Left_1 = analogRead (сол жақ сенсор_1);
Right_1 = analogRead (RightSensor_1);
//Егер екі сенсор да қара болса, біз барамыз
егер ((Left_1 > sl1) && (Right_1 > sp1)) {
Аналогтық жазба(SPEED_1, v);
Сандық жазба(DIR_1,жоғары);
Аналогтық жазба(SPEED_2, v);
Сандық жазба(DIR_2, жоғары);
кідіріс(1);
}
Left_1 = analogRead (сол жақ сенсор_1);
Right_1 = analogRead (RightSensor_1);
// Егер екі сенсор да ақ болса, біз барамыз
егер ((Left_1 < sl1) && (Right_1 < sp1)) {
Аналогтық жазба(SPEED_1, v);
Сандық жазба(DIR_1,жоғары);
Аналогтық жазба(SPEED_2, v);
Сандық жазба(DIR_2, жоғары);
кідіріс(1);
}
}
бос цикл () {
lin();
}

Достарыңызбен бөлісу:




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет