Mündəricat:

Kərə yağı robotu: Ekzistensial böhranlı Arduino Robotu: 6 addım (şəkillərlə)
Kərə yağı robotu: Ekzistensial böhranlı Arduino Robotu: 6 addım (şəkillərlə)

Video: Kərə yağı robotu: Ekzistensial böhranlı Arduino Robotu: 6 addım (şəkillərlə)

Video: Kərə yağı robotu: Ekzistensial böhranlı Arduino Robotu: 6 addım (şəkillərlə)
Video: Bizə kərə yağı adı ilə görün nə satırlar: Sarı yağlara diqqət! - APA TV 2024, Dekabr
Anonim
Image
Image

Bu layihə "Rick və Morty" cizgi serialına əsaslanır. Epizodlardan birində Rick, yeganə məqsədi kərə yağı gətirmək olan bir robot hazırlayır. Bruface (Brüssel Mühəndislik Fakültəsi) tələbələri olaraq, təklif olunan mövzuya əsaslanan bir robot qurmaq olan mekatronika layihəsi üçün bir tapşırığımız var. Bu layihə üçün tapşırıq: Yalnız kərə yağı verən bir robot hazırlayın. Ekzistensial böhran ola bilər. Əlbəttə ki, Rick və Morty epizodunda olan robot olduqca mürəkkəb bir robotdur və bəzi sadələşdirmələr edilməlidir:

Yeganə məqsədi kərə yağı gətirmək olduğundan, daha sadə alternativlər var. Robota baxmaq və kərə yağını tutmaq əvəzinə, onu lazımi şəxsə gətirməzdən əvvəl, robot hər zaman yağı götürə bilər. Əsas fikir, yağı lazım olduğu yerə daşıyan bir araba hazırlamaqdır.

Kərə yağını daşımaqla yanaşı, robotun haraya gətirməli olduğunu bilməsi lazımdır. Epizodda Rick robotu çağırmaq və əmr etmək üçün səsini istifadə edir. Bunun üçün bahalı bir səs tanıma sistemi tələb olunur və mürəkkəb olar. Bunun əvəzinə masadakı hər kəs bir düymə alır: bu düymə aktiv edildikdən sonra robot bu düyməni tapıb ona doğru hərəkət edə bilər.

Xülasə etmək üçün robot aşağıdakı tələbləri yerinə yetirməlidir:

  • Təhlükəsiz olması lazımdır: maneələrdən qaçmalı və özünü masanın yıxılmasının qarşısını almalıdır;
  • Robotun kiçik olması lazımdır: masadakı yer məhduddur və heç kim kərə yağı verən, lakin masanın özünün yarısı ölçüsündə bir robot istəməz;
  • Robotun işləməsi masanın ölçüsündən və formasından asılı ola bilməz, bu şəkildə fərqli masalarda istifadə edilə bilər;
  • Kərə yağını masada doğru adama gətirmək lazımdır.

Addım 1: Əsas anlayış

Yuxarıda qeyd olunan tələblər müxtəlif üsullardan istifadə etməklə yerinə yetirilə bilər. Verilən əsas dizaynla bağlı qərarlar bu addımda izah edilir. Bu fikirlərin necə həyata keçirildiyinə dair təfərrüatları aşağıdakı addımlarda tapa bilərsiniz.

Vəzifəsini yerinə yetirmək üçün robotun təyinat yerinə çatana qədər hərəkət etməsi lazımdır. Robotun tətbiqini nəzərə alsaq, onu "gəzinti" hərəkəti yerinə təkərlərdən istifadə edərək hərəkət etdirmək daha yaxşıdır. Bir masa düz bir səth olduğundan və robot çox yüksək sürətə çatmayacağından, iki hərəkətə gətirilmiş təkər və bir təkər topu idarə etmək üçün ən sadə və ən asan həlldir. Aktivləşdirilmiş təkərlər iki mühərriklə təchiz olunmalıdır. Mühərriklərin böyük bir torka sahib olması lazımdır, lakin yüksək sürətə çatması lazım deyil, buna görə də davamlı servo mühərriklərdən istifadə olunacaq. Servo mühərriklərin başqa bir üstünlüyü Arduino ilə istifadənin sadəliyidir.

Maneələrin aşkarlanması, ölçü istiqamətini seçmək üçün servo mühərrikə qoşulmuş məsafəni ölçən ultrasəs sensoru ilə həyata keçirilə bilər. Kenarlar LDR sensorlar vasitəsilə aşkar edilə bilər. LDR sensorlarından istifadə etmək üçün həm led işıq, həm də LDR sensoru olan cihazın qurulması tələb olunacaq. Bir LDR sensoru əks olunan işığı ölçür və bir növ məsafə sensoru olaraq görülə bilər. Eyni prinsip infraqırmızı işıqda da mövcuddur. Rəqəmsal çıxışı olan bəzi infraqırmızı yaxınlıq sensorları var: yaxın və ya yaxın deyil. Bu, robotun kənarları aşkar etməsi üçün lazım olan şeydir. İki böcək antenası və bir hərəkətə gətirilən ultrasəs sensoru kimi yerləşdirilmiş 2 kənar sensoru birləşdirərək, robot maneə və kənarların qarşısını almalıdır.

Düyməni aşkar etmək də IR sensorlar və ledlərdən istifadə etməklə həyata keçirilə bilər. IR -nin üstünlüyü görünməz olmasıdır ki, bu da istifadəni masadakı insanlar üçün narahat etmir. Lazerlər də istifadə edilə bilərdi, ancaq kimsə lazeri başqa bir insanın gözünə göstərdiyi zaman işıq görünər və eyni zamanda təhlükəli olardı. Bundan əlavə, istifadəçinin robotdakı sensorları yalnız nazik bir lazer şüası ilə hədəf alması lazımdır ki, bu da əsəbi olar. Robotu iki İQ sensoru ilə təchiz edərək düyməni İK LED ilə quraraq, İQ işığının intensivliyini izləyərək hansı istiqamətə getməli olduğunu bilir. Heç bir düymə olmadığı zaman, robotlardan biri düymələrdən birinin siqnalını tutana qədər robot dönə bilər.

Kərə yağı robotun üstündəki bir bölməyə qoyulur. Bu bölmə bir qutudan və qutunu açmaq üçün işə salınmış qapaqdan ibarət ola bilər. Qapağı açmaq və ultrasəs sensorunu hərəkət etdirmək üçün iki mühərrikə ehtiyacımız olan maneələri yoxlamaq və aşkar etmək üçün bu məqsədlə davamlı olmayan servo mühərriklər daha çox uyğunlaşdırılmışdır, çünki mühərriklərin müəyyən bir mövqedə getməsi və bu mövqeyi saxlaması lazımdır.

Layihənin əlavə bir xüsusiyyəti, robot səsi ilə xarici mühitlə qarşılıqlı əlaqə qurmaq idi. Siqnal bu məqsəd üçün sadə və uyğunlaşdırılmışdır, lakin heç bir zaman istifadə edilə bilməz, çünki cazibə yüksəkdir.

Layihənin əsas çətinlikləri kodlaşdırmaya əsaslanır, çünki mexaniki hissəsi olduqca sadədir. Robotun ilişib qalmaması və ya istənməyən bir iş görməməsi üçün bir çox hallar nəzərə alınmalıdır. Həll etməli olduğumuz əsas problemlər bir maneə səbəbiylə İQ siqnalını itirmək və düyməyə çatanda dayanmaqdır!

Addım 2: Materiallar

Mexanik hissələr

  • 3D printer və lazer kəsmə maşını

    • PLA 3D çap üçün istifadə ediləcək, ancaq ABS -dən də istifadə edə bilərsiniz
    • Lazer kəsmə üçün 3 mm ağcaqayın kontrplakdan istifadə ediləcək, çünki sonradan asanlıqla dəyişiklik etmək imkanı verir, Plexiglas da istifadə edilə bilər, ancaq lazerlə kəsilmədikdən sonra onu dəyişdirmədən dəyişdirmək daha çətindir.
  • Boltlar, qoz -fındıq, yuyucular

    Komponentlərin çoxu M3 düyməli boltlar, yuyucular və qoz -fındıqlarla birlikdə tutulur, lakin bəzilərinə M2 və ya M4 boltlar dəsti lazımdır. Boltların uzunluğu 8-12 mm arasındadır

  • PCB aralıqları, 25 mm və 15 mm
  • Uyğun təkərli 2 servo mühərrik
  • 1-2 mm diametrli bəzi qalın metal tel

Elektron hissələr

  • Mikro nəzarətçi

    1 arduino UNO lövhəsi

  • Servo mühərrikləri

    • 2 böyük servo mühərrik: Feetech 6Kg 360 dərəcə davamlı
    • 2 mikro servo mühərrik: Feetech FS90
  • Sensorlar

    • 1 Ultrasonik sensor
    • 2 IR yaxınlıq sensoru
    • 2 IR fotodiod
  • Batareyalar

    • 1 9V batareya tutacağı + batareya
    • 1 4AA batareya tutacağı + batareyalar
    • 1 9V batareya qutusu + batareya
  • Əlavə komponentlər

    • Bəzi atlama telləri, tellər və lehim lövhələri
    • Bəzi rezistorlar
    • 1 IR LED
    • 3 açar
    • 1 siqnal
    • 1 düymə
    • 1 Arduino - 9V batareya konnektoru

Addım 3: Elektronikanı yoxlayın

Elektronikanın sınanması
Elektronikanın sınanması
Elektronikanın sınanması
Elektronikanın sınanması

Düymənin yaradılması:

Düymə sadəcə bir açar, infraqırmızı LED və 9V batareya ilə işləyən 220 Ohm seriyalı bir rezistor tərəfindən hazırlanmışdır. Kompakt və təmiz dizayn üçün 9V batareya paketinə qoyulmuşdur.

İnfraqırmızı qəbuledici modulların yaradılması:

Bu modullar, sonradan robotun vintləri ilə bağlanacaq deşik lehimləmə lövhələri ilə hazırlanır. Bu modulların sxemləri ümumi sxemlərdə təsvir edilmişdir. Prinsip infraqırmızı işığın intensivliyini ölçməkdir. Ölçmələri yaxşılaşdırmaq üçün müəyyən bir istiqamətə diqqət yetirmək üçün kollimatorlardan (büzülmə borularından hazırlanmışdır) istifadə edilə bilər.

Layihənin fərqli tələbləri elektron cihazlardan istifadə edilməklə yerinə yetirilməlidir. Nisbətən aşağı mürəkkəbliyi qorumaq üçün cihazların sayı məhdudlaşdırılmalıdır. Bu addım, bütün hissələri ayrı -ayrılıqda sınamaq üçün kabel sxemlərini və hər kodu ehtiva edir:

  • Davamlı Servo mühərrikləri;
  • Ultrasonik sensor;
  • Fasiləsiz Servo mühərrikləri;
  • Buzzer;
  • IR düyməsinin istiqamətini təyin etmək;
  • Yaxınlıq sensorları ilə kənarların aşkarlanması;

Bu kodlar əvvəlcə komponentləri anlamağa kömək edə bilər, lakin sonrakı mərhələlərdə hata ayıklama üçün də çox faydalıdır. Müəyyən bir problem yaranarsa, bütün komponentləri ayrı -ayrılıqda sınayaraq səhv daha asan aşkar edilə bilər.

Addım 4: 3D çaplı və lazerlə kəsilmiş parçalar dizaynı

3D Çaplı və Lazer Kesimli Parça Dizaynı
3D Çaplı və Lazer Kesimli Parça Dizaynı
3D çaplı və lazerlə kəsilmiş parçalar dizaynı
3D çaplı və lazerlə kəsilmiş parçalar dizaynı
3D çaplı və lazerlə kəsilmiş parçalar dizaynı
3D çaplı və lazerlə kəsilmiş parçalar dizaynı

Lazerlə kəsilmiş parçalar

Lazım gələrsə elektronikaya asanlıqla çıxışı təmin edən açıq bir dizayn əldə etmək üçün montaj, PCB aralıqları ilə birlikdə tutulan üç əsas üfüqi lövhədən hazırlanmışdır.

Bu boşqabları və son montaj üçün digər komponentləri vidalamaq üçün lazımi deliklərin kəsilməsi lazımdır. Əsasən, hər üç lövhədə eyni yerdə aralıqlar üçün deşiklər və hər bir boşqabda elektronika üçün xüsusi deliklər vardır. Diqqət yetirin ki, orta lövhənin ortasında telləri ötürmək üçün bir çuxur var.

Kiçik parçalar, montaja bərkidilmək üçün böyük servonun ölçülərinə uyğun olaraq kəsilir.

3D çaplı parçalar

Lazer kəsmə ilə yanaşı, bəzi parçaların 3D çap edilməsi də lazım olacaq:

  • Bir mikro servo motor qoluna bağlayan ultrasəs sensoru üçün dəstək
  • Kastor təkəri və iki IR kənar sensoru üçün dəstək. İQ sensorlar üçün qutunun formalı uclarının xüsusi dizaynı, İK siqnalını yayan düymə ilə İK sensorlar arasındakı müdaxilənin qarşısını almaq üçün yalnız yerdə baş verənlərə diqqət yetirməlidir.
  • Qapağı açan mikro servo motor dəstəyi
  • Və nəhayət, qapağı açan mikro servo mühərriklə toqquşmanın qarşısını alaraq daha böyük iş açısına malik olmaq üçün iki hissədən ibarət olan qapağın özü:

    • Üst lövhəyə bərkidiləcək alt
    • Və aşağıya bir menteşə ilə bağlanan və qalın bir metal tel istifadə edərək servo ilə hərəkətə gətirilən yuxarı. Robota baş verərək ona bir az da şəxsiyyət əlavə etmək qərarına gəldik.

Bütün parçalar dizayn edildikdən və istifadə olunan maşınlar üçün sənədlər düzgün formatda ixrac edildikdən sonra parçalar əslində edilə bilər. Xüsusilə qapağın üst hissəsinin ölçüləri ilə 3D çapın çox vaxt çəkdiyini unutmayın. Bütün parçaları çap etmək üçün bir və ya iki günə ehtiyacınız ola bilər. Lazer kəsmə yalnız bir neçə dəqiqədir.

Bütün SOLIDWORKS faylları sıxılmış qovluqda tapıla bilər.

Addım 5: Montaj və Kablolama

Image
Image
Montaj və naqillər
Montaj və naqillər
Montaj və Kablolama
Montaj və Kablolama
Montaj və naqillər
Montaj və naqillər

Montaj, aşağıdan yuxarıya doğru olan komponentləri birləşdirmək və birləşdirməkdən ibarət olacaq.

Alt lövhə

Alt lövhə 4AA batareya paketi, servo mühərriklər, çap olunmuş hissə (lövhənin altına topu bağlayan), iki kənar sensoru və 6 kişi-qadın arakəsicisi ilə yığılmışdır.

Orta boşqab

Sonra, orta plitə iki plaka arasındakı servo mühərrikləri sıxaraq quraşdırıla bilər. Bu boşqab daha sonra başqa bir aralıq dəsti qoyaraq düzəldilə bilər. Bəzi kabellər mərkəzi çuxurdan keçə bilər.

Ultrasonik modul Arduino, 9V batareya paketi (arduino-ya enerji verən) və robotun ön hissəsindəki iki infraqırmızı qəbuledici modul ilə birlikdə orta boşqaba sabitlənmiş davamlı olmayan bir servoya bağlana bilər. Bu modullar çuxurlu lehimləmə lövhələri ilə hazırlanır və vintlərlə lövhəyə bərkidilir. Bu modulların sxemləri ümumi sxemlərdə təsvir edilmişdir.

Üst lövhə

Montajın bu hissəsində açarlar sabit deyil, lakin robot artıq qapaq tələb edən hərəkətlər istisna olmaqla hər şeyi edə bilər, beləliklə də üçbucağı düzəltmək, hərəkət kodunu uyğunlaşdırmaq və asanlaşdırmaq üçün bir az sınaq keçirməyimizə imkan verir. arduino limanlarına giriş.

Bütün bunlar əldə edildikdə, üst plaka aralıqlarla sabitlənə bilər. İki açar, düymə, servo, səs siqnalı və qapaq sistemi olan son komponentlər nəhayət montajı başa çatdırmaq üçün üst lövhəyə bərkidilə bilər.

Test etməli və düzəltmək lazım olan son şey, qapağı düzgün açmaq üçün servonun açısıdır.

Kenar sensörlərinin eşikləri, müxtəlif masa səthləri üçün potensialiometrlə (düz tornavida istifadə edərək) uyğunlaşdırılmalıdır. Ağ bir masanın, məsələn, qəhvəyi bir masadan daha aşağı bir eşik olması lazımdır. Sensorların hündürlüyü də lazımi həddə təsir edəcək.

Bu addımın sonunda montaj başa çatır və qalan son hissə itkin kodlardır.

Addım 6: Kodlaşdırma: Hər şeyi Bir yerə qoyun

Robotun işləməsi üçün lazım olan bütün kodlar yüklənə bilən sıxılmış sənəddədir. Ən əhəmiyyətlisi, robotun quruluşunu və funksional döngəsini ehtiva edən "əsas" koddur. Digər funksiyaların çoxu alt fayllarda (həmçinin sıxılmış qovluqda) yazılmışdır. Bu alt fayllar Arduino-ya yüklənməzdən əvvəl əsas skriptlə eyni qovluqda ("əsas" adlanır) saxlanılmalıdır.

Əvvəlcə robotun ümumi sürəti "xatırlat" dəyişəniylə birlikdə təyin olunur. Bu "xatırlatmaq" robotun hansı istiqamətə döndüyünü xatırladan bir dəyərdir. "Xatırlatmaq = 1" olarsa, robot sola dönürdü, "xatırlat = 2" olarsa, robot sağa dönürdü.

int sürəti = 9; // Robotun ümumi sürəti

int xatırlatmaq = 1; // İlkin istiqamət

Robotun qurulmasında proqramın müxtəlif alt faylları işə salınır. Bu alt sənədlərdə mühərriklərin, sensorların… idarə edilməsinə dair əsas funksiyalar yazılmışdır. Quraşdırmada onları başlataraq, bu faylların hər birində təsvir edilən funksiyalar əsas döngədə istifadə edilə bilər. R2D2 () funksiyasını aktivləşdirərək robot, Star Wars film franchise -dən R2D2 robotu kimi səs çıxaracaq. başlayır. Burada r2D2 () funksiyası səs siqnalının çox cərəyan çəkməsinin qarşısını almaq üçün deaktiv edilir.

// Quraşdırma @ sıfırlama // ----------------

boş quraşdırma () {initialize_IR_sensors (); başlanğıc_ maneələri_və_qıraqları (); initialize_movement (); initialize_lid (); initialize_buzzer (); // r2D2 (); int xatırlatmaq = 1; // başlanğıc istiqaməti Başlanğıc (xatırlatmaq); }

Başlanğıc (xatırlat) funksiyası əvvəlcə quraşdırmada çağırılır. Bu funksiya robotu dönərək düymələrdən birinin İQ siqnalını axtarmağa vadar edir. Düyməni tapdıqdan sonra proqram 'kond' dəyişənini false olaraq dəyişdirərək Başlanğıc funksiyasından çıxacaq. Robotun fırlanması zamanı ətraf mühitdən xəbərdar olmalıdır: kənarları və maneələri aşkarlamalıdır. Bu, dönməyə davam etməzdən əvvəl hər dəfə yoxlanılır. Robot bir maneə və ya kənar aşkar etdikdən sonra bu maneələrin və kənarların qarşısını almaq üçün protokol icra ediləcək. Bu protokollar daha sonra bu addımda izah ediləcək. Başlanğıc funksiyasında əvvəllər müzakirə edilən xatırlatma dəyişəni olan bir dəyişən var. Başlatıcı funksiyasına xatırlatma dəyəri verərək, robot düyməni axtarmaq üçün hansı istiqamətə dönməli olduğunu bilir.

// Başlanğıc döngəsi: Dönün və düyməni axtarın // ------------------------------------ ----------------

void Başlanğıc (int xatırlatmaq) {if (isedgeleft () || isedgeright ()) {// Kenarların kənarını algıla (xatırlat); } başqa {bool cond = true; while (cond == true) {if (buttonleft () == false && buttonright () == false && isButtonDetected () == doğru) {kond = yanlış; } başqa {if (xatırlat == 1) {// Əgər sola dönürdük, əgər (isobstacleleft ()) {stopspeed (); maneə törətməmək (xatırlatmaq); } else if (isedgeleft () || isedgeright ()) {// Kenarların kənarını aşkar etDetected (xatırlat); } başqa {sola (sürət); }} başqa if (xatırlat == 2) {if (isobstacleright ()) {stopspeed (); maneə törətməmək (xatırlatmaq); } else if (isedgeleft () || isedgeright ()) {// Kenarların kənarını aşkar etDetected (xatırlat); } başqa {dönmə (sürət); }}}}}}

Robot düyməni taparsa, ilk Başlanğıc döngəsi çıxır və robotun əsas, funksional döngəsi başlayır. Bu əsas döngə olduqca mürəkkəbdir, çünki robot hər dəfə qarşısında bir maneə və ya kənarın olub olmadığını müəyyən etməlidir. Əsas fikir, robotun düyməni hər dəfə tapıb itirdiyi təqdirdə olmasıdır. İki IR sensoru istifadə edərək üç vəziyyəti ayırd edə bilərik:

  • sol və sağ sensor tərəfindən aşkar edilən İQ işığı arasındakı fərq müəyyən bir eşikdən daha böyükdür və bir düymə var.
  • IR işığında fərq eşikdən kiçikdir və robotun qarşısında bir düymə var.
  • IR işığında fərq eşikdən kiçikdir və robotun qarşısında NO düyməsi yoxdur.

Tras rejiminin işləmə üsulu belədir: düymə aşkar edildikdə robot döndüyü istiqamətə (xatırlatmaq dəyişənindən istifadə edərək) dönərək düyməyə doğru hərəkət edir və eyni zamanda bir az irəli gedir. Robot çox uzaqlaşarsa, düymə yenidən itiriləcək və bu nöqtədə robot digər istiqamətə dönmək lazım olduğunu xatırlayır. Bu da bir az irəli gedərkən edilir. Bunu etməklə robot daim sola və sağa dönür, amma bu arada hələ də düyməyə doğru irəliləyir. Robot hər dəfə düyməni tapdıqda onu itirənə qədər dönməyə davam edir, bu halda digər istiqamətdə hərəkət etməyə başlayır. "turnleft ()" və ya "turnright ()", əsas döngədə "moveleft ()" və "moveright ()" istifadə olunur. Hərəkət sol/sağ funksiyaları nəinki robotu döndərir, həm də onu eyni zamanda irəliyə aparır.

/ * Funksional döngə ---------------------------- Burada yalnız trek qaydası var */

int itirildi = 0; // İtirildikdə = 0 düymə tapılır, itirildikdə = 1 düymə itirilir void loop () {if (isedgeleft () || isedgeright ()) {

if (! isobstacle ()) {

irəli (sürət); gecikmə (5); } başqa {qarşısını_ maneə (xatırlat); } else {if (xatırlat == 1 && lost == 1) {// Sol dayanma sürətini döndərirdik (); if (! isobstacleright ()) {moveright (sürət); // Düyməni tapmaq üçün dönün} başqa {qarşısını_ maneə (xatırlat); } xatırlat = 2; } else if (xatırlat == 2 && lost == 1) {stopspeed (); if (! isobstacleleft ()) {moveleft (sürət); // Sağa dönürdük} başqa {qarşısını_ maneə (xatırlat); } xatırlat = 1; } başqa if (itirilmiş == 0) {if (xatırlat == 1) {// Əgər sola dönürdük, əgər (! isobstacleleft ()) {moveleft (sürət); // Sağa dönürdük} başqa {stopspeed (); maneə törətməmək (xatırlatmaq); } //} başqa if (xatırlat == 2) {if (! isobstacleright ()) {moveright (speed); // Düyməni tapmaq üçün dönün} başqa {stopspeed (); maneə törətməmək (xatırlatmaq); }}} gecikmə (10); itirilmiş = 0; }} //}}

İndi ən mürəkkəb iki işin kiçik bir izahı verilir:

Kenarlardan çəkinin

Kenarların qarşısını almaq üçün protokol "hərəkət" alt sənədində yazılmış "edgeDetection ()" adlı bir funksiyada təyin olunur. Bu protokol, robotun yalnız təyinat yerinə çatdıqda bir kənarla qarşılaşması faktına əsaslanır: düymə. Robot bir kənar algıladıqdan sonra, ilk işi kənardan təhlükəsiz bir məsafədə olmaq üçün bir az geri çəkilməkdir. Bunu etdikdən sonra robot 2 saniyə gözləyir. Kimsə bu iki saniyədə robotun önündəki düyməni basarsa, robot kərə yağı istəyən şəxsə çatdığını bilir və kərə yağı bölməsini açaraq yağı təqdim edir. Bu zaman kimsə robotdan yağ ala bilər. Bir neçə saniyə sonra robot gözləməkdən yorulacaq və sadəcə yağ qapağını bağlayacaq. Qapaq bağlandıqdan sonra robot başqa bir düymə axtarmaq üçün Başlanğıc döngəsini icra edəcək. Robotun təyinat yerinə çatmadan bir kənarla qarşılaşması və robotun ön tərəfindəki düyməyə basılmaması halında, robot yağ qapağını açmayacaq və dərhal Başlanğıc döngəsini icra edəcək.

Maneələrdən çəkinin

Avoid_obstacle () funksiyası da "hərəkət" alt faylında yerləşir. Maneələrin qarşısını almağın çətin tərəfi, robotun olduqca böyük bir kor yerinin olmasıdır. Ultrasəs sensoru robotun ön hissəsinə yerləşdirilib, yəni maneələri aşkar edə bilir, amma nə vaxt keçdiyini bilmir. Bunu həll etmək üçün aşağıdakı prinsipdən istifadə olunur: Robot bir maneə ilə qarşılaşdıqda digər istiqamətə dönmək üçün dəyişəndən istifadə edir. Bu yolla robot maneəni vurmağın qarşısını alır. Robot, ultrasəs sensoru artıq maneəni aşkar etməyənə qədər dönməyə davam edir. Robotun döndüyü müddətdə, maneə artıq aşkarlanmayana qədər sayğac artırılır. Bu sayğac daha sonra maneənin uzunluğunun təxmini dəyərini verir. Sonra irəliləməklə eyni zamanda sayğacı azaltmaqla maneənin qarşısını almaq olar. Sayğac 0 -a çatdıqda, Başlanğıc funksiyası düymənin yerini dəyişmək üçün yenidən istifadə edilə bilər. Əlbəttə ki, robot, maneə ilə qarşılaşmadan əvvəl getdiyini xatırladığı istiqamətə dönərək Başlanğıc funksiyasını yerinə yetirir (yenidən xatırlatmaq dəyişənindən istifadə edərək).

İndi kodu tam başa düşdükdən sonra istifadə etməyə başlaya bilərsiniz!

Eşikləri mühitinizə uyğunlaşdırdığınızdan əmin olun (məsələn, ağ masalarda İK əks olunması daha yüksəkdir) və fərqli parametrləri ehtiyaclarınıza uyğunlaşdırın. Ayrıca, fərqli modulların gücünə böyük diqqət yetirilməlidir. Servo mühərriklərin Arduino 5V portu ilə təchiz edilməməsi böyük əhəmiyyət kəsb edir, çünki çox cərəyan alırlar (bu mikro nəzarətçiyə zərər verə bilər). Sensorlar üçün servoları gücləndirən eyni enerji mənbəyindən istifadə edilərsə, bəzi ölçü problemlərinə rast gəlmək olar.

Tövsiyə: