İçindekiler:

Tereyağı Robotu: Varoluşsal Krizi Olan Arduino Robotu: 6 Adım (Resimlerle)
Tereyağı Robotu: Varoluşsal Krizi Olan Arduino Robotu: 6 Adım (Resimlerle)

Video: Tereyağı Robotu: Varoluşsal Krizi Olan Arduino Robotu: 6 Adım (Resimlerle)

Video: Tereyağı Robotu: Varoluşsal Krizi Olan Arduino Robotu: 6 Adım (Resimlerle)
Video: Silahlar ve Tereyağı - Bölüm 40: Rusya - Ukrayna Gerilimi ve Etkileri 2024, Temmuz
Anonim
Image
Image

Bu proje, "Rick and Morty" adlı animasyon dizisine dayanmaktadır. Bölümlerden birinde Rick, tek amacı tereyağı getirmek olan bir robot yapar. Bruface (Brüksel Mühendislik Fakültesi) öğrencileri olarak, önerilen bir konuya dayalı bir robot inşa etmek olan mekatronik projesi için bir görevimiz var. Bu projenin ödevi: Sadece tereyağı servis eden bir robot yapın. Varoluşsal bir kriz yaşayabilir. Elbette Rick and Morty bölümündeki robot oldukça karmaşık bir robot ve bazı sadeleştirmeler yapılması gerekiyor:

Tek amacı tereyağı getirmek olduğu için daha basit alternatifler var. Robotun tereyağına bakmasını ve almasını sağlamak yerine, doğru kişiye getirmeden önce, robot tereyağını her zaman taşıyor olabilir. Ana fikir, tereyağını olması gereken yere taşıyan bir araba yapmaktır.

Tereyağı taşımanın yanı sıra robotun yağı nereye getirmesi gerektiğini de bilmesi gerekiyor. Bölümde Rick, robotu aramak ve komuta etmek için sesini kullanır. Bu, pahalı bir ses tanıma sistemi gerektirir ve çok karmaşık olacaktır. Bunun yerine, masadaki herkes bir düğme alır: bu düğme etkinleştirildiğinde robot bu düğmeyi bulabilir ve ona doğru hareket edebilir.

Özetlemek gerekirse, robotun aşağıdaki gereksinimleri karşılaması gerekir:

  • Güvenli olması gerekir: engellerden kaçınmalı ve masanın düşmesini önlemelidir;
  • Robotun küçük olması gerekir: masadaki alan sınırlıdır ve kimse tereyağı servis eden, ancak masanın kendisinin yarısı büyüklüğünde bir robot istemez;
  • Robotun çalışması masanın boyutuna veya şekline bağlı olamaz, bu şekilde farklı masalarda kullanılabilir;
  • Tereyağını masadaki doğru kişiye götürmesi gerekiyor.

Adım 1: Ana Konsept

Daha önce bahsedilen gereksinimler farklı teknikler kullanılarak karşılanabilir. Yapılan ana tasarım ile ilgili kararlar bu adımda açıklanmaktadır. Bu fikirlerin nasıl uygulandığına ilişkin ayrıntılar aşağıdaki adımlarda bulunabilir.

Görevini yerine getirmek için robotun hedefe ulaşılana kadar hareket etmesi gerekiyor. Robotun uygulaması göz önüne alındığında, "yürüme" hareketi yerine tekerlekleri kullanmanın onu hareket ettirmek için daha iyi olduğu açıktır. Bir masa düz bir yüzey olduğundan ve robot çok yüksek hızlara ulaşmayacağından, iki tahrikli tekerlek ve bir tekerlek bilyesi en basit ve kontrolü en kolay çözümdür. Tahrik edilen tekerleklerin iki motor tarafından çalıştırılması gerekir. Motorların büyük bir torka sahip olmaları gerekir, ancak yüksek bir hıza ulaşmaları gerekmez, bu nedenle sürekli servo motorlar kullanılacaktır. Servo motorların bir diğer avantajı da Arduino ile kullanım kolaylığıdır.

Engellerin tespiti, ölçüm yönünü seçmek için bir servo motora bağlı mesafeyi ölçen bir ultrasonik sensör kullanılarak yapılabilir. Kenarlar, LDR sensörleri kullanılarak algılanabilir. LDR sensörlerinin kullanılması, hem led ışık hem de LDR sensörü içeren bir cihazın yapılmasını gerektirecektir. Bir LDR sensörü, yansıyan ışığı ölçer ve bir tür mesafe sensörü olarak görülebilir. Kızılötesi ışıkta da aynı prensip mevcuttur. Dijital çıkışa sahip bazı kızılötesi yakınlık sensörleri vardır: yakın veya yakın değil. Bu tam olarak robotun kenarları algılaması için ihtiyaç duyduğu şeydir. İki böcek anteni gibi yerleştirilmiş 2 kenar sensörünü ve bir tahrikli ultrasonik sensörü birleştirerek robot, engellerden ve kenarlardan kaçınabilmelidir.

Düğme algılama, IR sensörleri ve led'ler kullanılarak da gerçekleştirilebilir. IR'nin avantajı, masadaki insanlar için rahatsız edici olmayan kullanımını sağlayan görünmez olmasıdır. Lazerler de kullanılabilir, ancak o zaman biri lazeri başka bir kişinin gözüne doğrulttuğunda ışık görünür ve tehlikeli olur. Ayrıca, kullanıcının robot üzerindeki sensörleri yalnızca ince bir lazer ışını ile hedeflemesi gerekir ki bu oldukça can sıkıcı olurdu. Robotu iki IR sensörü ile donatarak ve bir IR ledli düğmeyi oluşturarak robot, IR ışığının yoğunluğunu takip ederek hangi yöne gitmesi gerektiğini bilir. Düğme olmadığında, ledlerden biri butonlardan birinden gelen sinyali yakalayana kadar robot dönebilir.

Tereyağı robotun üst kısmındaki bir bölmeye konur. Bu bölme, bir kutu ve kutuyu açmak için çalıştırılan bir kapaktan oluşabilir. Kapağı açmak ve engelleri taramak ve algılamak için ultrasonik sensörü hareket ettirmek için iki motora ihtiyacımız var ve bu amaçla, motorların belirli bir pozisyonda gitmesi ve bu konumu koruması gerektiğinden sürekli olmayan servo motorlar daha fazla uyarlanmıştır.

Projenin ekstra bir özelliği de robot sesiyle dış ortamla etkileşime girebilmekti. Bir buzzer basittir ve bu amaç için uyarlanmıştır, ancak mevcut çekiş yüksek olduğu için herhangi bir zamanda kullanılamaz.

Mekanik kısım oldukça basit olduğu için projenin ana zorlukları kodlamaya dayanıyor. Robotun sıkışmasını veya istenmeyen bir şey yapmasını önlemek için birçok durumun dikkate alınması gerekiyor. Çözmemiz gereken temel problem, bir engel nedeniyle IR sinyalini kaybetmek ve düğmeye ulaştığında durmak!

Adım 2: Malzemeler

Mekanik parçalar

  • 3D yazıcı ve Lazer kesim makinesi

    • PLA, 3D baskı için kullanılacak, ancak ABS'yi de kullanabilirsiniz.
    • Lazer kesim için 3 mm huş kontrplak levha kullanılacaktır, çünkü daha sonra kolayca değişiklik yapma imkanı verir, Pleksiglas da kullanılabilir ancak lazerle kesildikten sonra onu bozmadan değiştirmek daha zordur.
  • Cıvatalar, somunlar, rondelalar

    Bileşenlerin çoğu, M3 düğme başlı cıvatalar, rondelalar ve somunlar kullanılarak bir arada tutulur, ancak bazıları M2 veya M4 cıvata takımı gerektirir. Cıvataların uzunluğu 8-12 mm aralığındadır

  • PCB ara parçaları, 25 mm ve 15 mm
  • Uyumlu tekerleklere sahip 2 Servo motor
  • 1-2 mm çapında bir miktar kalın metal tel

Elektronik parçalar

  • mikrodenetleyici

    1 arduino UNO kartı

  • Servo motorlar

    • 2 Büyük servo motor: Feetech sürekli 6Kg 360 derece
    • 2 mikro servo motor: Feetech FS90
  • Sensörler

    • 1 Ultrasonik sensör
    • 2 IR yakınlık sensörü
    • 2 IR fotodiyot
  • Piller

    • 1 9V pil tutucu + pil
    • 1 adet 4AA pil tutucu + piller
    • 1 9V pil kutusu + pil
  • Ek bileşenler

    • Bazı atlama telleri, teller ve lehim plakaları
    • Bazı dirençler
    • 1 IR LED'i
    • 3 anahtar
    • 1 zil
    • 1 düğme
    • 1 Arduino - 9V pil konektörü

Adım 3: Elektroniği Test Etme

Elektroniklerin Test Edilmesi
Elektroniklerin Test Edilmesi
Elektroniklerin Test Edilmesi
Elektroniklerin Test Edilmesi

Düğmenin oluşturulması:

Düğme basitçe bir anahtar, bir kızılötesi LED ve bir 9V pil ile çalışan 220 Ohm'luk bir seri direnç ile yapılır. Bu, kompakt ve temiz bir tasarım için 9V pil takımına yerleştirilmiştir.

Kızılötesi alıcı modüllerinin oluşturulması:

Bu modüller, daha sonra robota vidalarla takılacak olan açık delik lehim panolarından yapılmıştır. Bu modüllerin devreleri genel şemalarda gösterilmiştir. İlke, kızılötesi ışığın yoğunluğunu ölçmektir. Ölçümleri iyileştirmek için, belirli bir ilgi yönüne odaklanmak için kolimatörler (shrink tüplerle yapılmış) kullanılabilir.

Projenin farklı gereksinimlerinin elektronik cihazlar kullanılarak yerine getirilmesi gerekmektedir. Nispeten düşük bir karmaşıklığı korumak için cihazların sayısı sınırlandırılmalıdır. Bu adım, tüm parçaları ayrı ayrı test etmek için kablolama şemalarını ve her kodu içerir:

  • Sürekli Servo motorlar;
  • Ultrasonik sensör;
  • Sürekli olmayan Servo motorlar;
  • Zil;
  • IR düğmesi yön algılama;
  • Yakınlık sensörleri ile kenar algılama;

Bu kodlar başlangıçta bileşenlerin anlaşılmasına yardımcı olabilir, ancak daha sonraki aşamalarda hata ayıklamak için de çok yararlıdır. Belirli bir sorun oluşursa, tüm bileşenleri ayrı ayrı test ederek hata daha kolay tespit edilebilir.

Adım 4: 3D Baskılı ve Lazer Kesimli Parça Tasarımı

3D Baskılı ve Lazer Kesimli Parça Tasarımı
3D Baskılı ve Lazer Kesimli Parça Tasarımı
3D Baskılı ve Lazer Kesimli Parça Tasarımı
3D Baskılı ve Lazer Kesimli Parça Tasarımı
3D Baskılı ve Lazer Kesimli Parça Tasarımı
3D Baskılı ve Lazer Kesimli Parça Tasarımı

Lazer Kesim parçaları

Montaj, gerektiğinde elektronik parçalara kolay erişim sağlayan açık bir tasarım elde etmek için PCB ara parçaları tarafından bir arada tutulan üç ana yatay plakadan yapılmıştır.

Son montaj için ara parçaları ve diğer bileşenleri vidalamak için bu plakaların gerekli deliklerin kesilmesi gerekir. Esas olarak, üç plakanın hepsinde, ara parçalar için aynı yerde delikler ve her plakada sırasıyla sabitlenmiş elektronikler için özel delikler bulunur. Orta plakanın ortada kabloları geçirmek için bir deliğe sahip olduğuna dikkat edin.

Daha küçük parçalar, montaja sabitlemek için büyük servo boyutlarında kesilir.

3D Baskılı parçalar

Lazer kesime ek olarak, bazı parçaların 3D yazdırılması gerekecektir:

  • Onu bir mikro servo motor koluna bağlayan ultrasonik sensör desteği
  • Tekerlek desteği ve iki IR kenar sensörü. IR sensörleri için parçanın kutu şeklindeki uçlarının özel tasarımı, yalnızca yerde neler olduğuna odaklanması gereken IR sinyali yayan düğme ve IR sensörleri arasındaki parazitleri önlemek için bir ekran görevi görür.
  • Kapağı açan mikro servo motor desteği
  • Ve son olarak, kapağı açan mikro servo motorla çarpışmayı önleyerek daha büyük bir çalışma açısına sahip olmak için iki parçadan oluşan kapağın kendisi:

    • Üst plakaya sabitlenecek olan alt
    • Ve bir menteşe ile tabana bağlanan ve kalın bir metal tel kullanılarak servo tarafından çalıştırılan üst kısım. Robota bir kafa vererek biraz kişilik eklemeye karar verdik.

Tüm parçalar tasarlandıktan ve kullanılan makineler için doğru formatta dosyalar dışa aktarıldıktan sonra, parçalar gerçekten yapılabilir. Özellikle kapağın üst parçasının boyutları ile 3D baskının çok zaman aldığını unutmayın. Tüm parçaları yazdırmak için bir veya iki güne ihtiyacınız olabilir. Ancak lazer kesim sadece birkaç dakika meselesidir.

Tüm SOLIDWORKS dosyaları sıkıştırılmış klasörde bulunabilir.

Adım 5: Montaj ve Kablolama

Image
Image
Montaj ve Kablolama
Montaj ve Kablolama
Montaj ve Kablolama
Montaj ve Kablolama
Montaj ve Kablolama
Montaj ve Kablolama

Montaj, aşağıdan yukarıya doğru kablolama ve bileşenlerin birbirine vidalanmasının bir karışımı olacaktır.

Alt tabak

Alt plaka, 4AA pil takımı, servo motorlar, baskılı kısım (bilyalı tekeri plakanın altına takarak), iki kenar sensörü ve 6 erkek-dişi ara parçası ile birleştirilir.

orta plaka

Ardından, servo motorları iki plaka arasında sıkıştırarak orta plaka monte edilebilir. Bu plaka daha sonra üzerine başka bir ara parça seti yerleştirilerek sabitlenebilir. Bazı kablolar orta delikten geçirilebilir.

Ultrasonik modül, Arduino, 9V pil takımı (arduinoya güç sağlar) ve robotun önündeki iki kızılötesi alıcı modülü ile orta plakaya sabitlenen sürekli olmayan bir servoya takılabilir. Bu modüller, açık delikli lehim panolarından yapılır ve plakaya vidalarla tutturulur. Bu modüllerin devreleri genel şemalarda gösterilmiştir.

Üst plaka

Montajın bu kısmında anahtarlar sabit değildir ancak robot zaten kapak gerektiren işlemler dışında her şeyi yapabilir, bu sayede eşiği düzeltmek, hareketin kodunu uyarlamak ve kolay bir işlem yapmak için bazı testler yapmamızı sağlar. arduino bağlantı noktalarına erişim.

Tüm bunlar sağlandığında üst plaka ara parçalar ile sabitlenebilir. İki anahtar, buton, servo, buzzer ve kapak sistemi olan son bileşenler, montajı bitirmek için son olarak üst plakaya sabitlenebilir.

Test edilecek ve düzeltilecek son şey, servonun kapağı doğru şekilde açma açısıdır.

Kenar sensörlerinin eşiği, farklı masa yüzeyleri için birlikte verilen potansiyometre ile (düz bir tornavida kullanılarak) uyarlanmalıdır. Örneğin beyaz bir masa, kahverengi bir masadan daha düşük bir eşiğe sahip olmalıdır. Ayrıca sensörlerin yüksekliği gerekli eşiği etkileyecektir.

Bu adımın sonunda montaj tamamlanır ve kalan son kısım eksik kodlardır.

Adım 6: Kodlama: Her Şeyi Bir Araya Getirmek

Robotun çalışması için gerekli tüm kodlar indirilebilen sıkıştırılmış dosyadadır. Bunlardan en önemlisi robotun kurulumunu ve işlevsel döngüsünü içeren "ana" koddur. Diğer işlevlerin çoğu alt dosyalara yazılır (ayrıca sıkıştırılmış klasörde). Bu alt dosyalar, Arduino'ya yüklenmeden önce ana komut dosyası olarak ("main" olarak adlandırılan) aynı klasöre kaydedilmelidir.

İlk olarak robotun genel hızı "remind" değişkeni ile birlikte tanımlanır. Bu "hatırlatma", robotun hangi yöne döndüğünü hatırlayan bir değerdir. "Hatırlatma = 1" ise robot sola dönüyordu/dönüyor, "hatırlatma = 2" ise robot sağa dönüyordu/dönüyor.

int hız = 9; // Robotun genel hızı

int hatırlatma = 1; // Başlangıç yönü

Robotun kurulumunda, programın farklı alt dosyaları başlatılır. Bu alt dosyalarda motorların, sensörlerin, … kontrolü ile ilgili temel fonksiyonlar yazılır. Bunları kurulumda başlatarak, bu dosyaların her birinde açıklanan işlevler ana döngüde kullanılabilir. r2D2() işlevi etkinleştirildiğinde, robot, başlar. Buzzer'ın çok fazla akım çekmesini önlemek için burada r2D2() işlevi devre dışı bırakılır.

//Kurulum @ sıfırlama//----------------

geçersiz kurulum(){ initialize_IR_sensors(); initialize_obstacles_and_edges(); initialize_movement(); initialize_lid(); initialize_buzzer(); // r2D2(); int hatırlatma = 1; // ilk yön Başlatıcı(hatırlat); }

Starter(remind) işlevi ilk olarak kurulumda çağrılır. Bu işlev, robotun dönmesini ve düğmelerden birinin IR sinyalini aramasını sağlar. Düğmeyi bulduğunda, program 'cond' değişkenini false olarak değiştirerek Starter işlevinden çıkar. Robotun dönüşü sırasında çevresinden haberdar olması gerekir: kenarları ve engelleri algılaması gerekir. Bu, dönmeye devam etmeden önce her seferinde kontrol edilir. Robot bir engel veya kenar tespit ettiğinde, bu engellerden veya kenarlardan kaçınmak için protokol yürütülecektir. Bu protokoller bu adımda daha sonra açıklanacaktır. Starter işlevi, daha önce tartışılan hatırlatma değişkeni olan bir değişkene sahiptir. Starter fonksiyonuna hatırlatma değeri verilerek robot, butonu aramak için hangi yöne dönmesi gerektiğini bilir.

//Başlangıç Döngüsü: Arkanı dön ve düğmeyi ara //------------------------------------ ----------------

void Starter(int hatırlatmak) { if (isedgeleft() || isedgeright()) { // Kenarları algıla edgeDetected(hatırlat); } başka { bool koşul = doğru; while (cond == true) { if (buttonleft() == false && buttonright() == false && isButtonDetected() == true) { koşul = false; } else { if (hatırlatma == 1) { // Sola dönüyorduk if (isobstacleleft()) { stopspeed(); kaçınma_obstacle(hatırlatma); } else if (isedgeleft() || isedgeright()) { // Kenarları algıla edgeDetected(hatırlat); } başka { dönüş sol(hız); } } else if (hatırlatma == 2) { if (isobstacleright()) { stopspeed(); kaçınma_obstacle(hatırlatma); } else if (isedgeleft() || isedgeright()) { // Kenarları algıla edgeDetected(hatırlat); } başka { dönüş sağ(hız); } } } } }

Robot düğmeyi bulursa, ilk Başlatıcı döngüsünden çıkılır ve robotun ana, işlevsel döngüsü başlar. Bu ana döngü, robotun her seferinde önünde bir engel veya kenar olup olmadığını algılaması gerektiğinden oldukça karmaşıktır. Ana fikir, robotun düğmeyi bularak ve her seferinde kaybederek takip etmesidir. İki IR sensörü kullanarak üç durumu ayırt edebiliriz:

  • sol ve sağ sensör tarafından algılanan IR ışığı arasındaki fark, belirli bir eşikten daha büyük ve bir düğme var.
  • IR ışığındaki fark eşikten daha küçüktür ve robotun önünde bir düğme bulunur.
  • IR ışığındaki fark eşikten daha küçüktür ve robotun önünde HAYIR düğmesi yoktur.

Takip rutininin çalışma şekli şu şekildedir: düğme algılandığında robot, dönmekte olduğu yöne dönerek (hatırlatma değişkenini kullanarak) düğmeye doğru hareket eder ve aynı zamanda biraz ileri doğru hareket eder. Robot çok fazla dönerse düğme tekrar kaybolur ve bu noktada robot diğer yöne dönmesi gerektiğini hatırlar. Bu da biraz ilerlerken yapılır. Bunu yaparak robot sürekli sola ve sağa dönüyor, ancak bu arada hala düğmeye doğru ilerliyor. Robot düğmeyi her bulduğunda, kaybedene kadar dönmeye devam eder ve bu durumda diğer yönde hareket etmeye başlar. Başlangıç döngüsünde ve ana döngüde kullanılan fonksiyonlar arasındaki farka dikkat edin: Başlangıç döngüsü kullanır "turnleft()" veya "turnright()", ana döngü ise "moveleft()" ve "moverright()" kullanır. Sola/sağa hareket işlevleri robotu sadece döndürmekle kalmaz, aynı zamanda ileri doğru hareket etmesini de sağlar.

/* Fonksiyonel döngü ---------------------------- Burada sadece iz rutini var */

int kayıp = 0; // kayıp = 0 ise buton bulunur, eğer kayıp = 1 ise buton kaybolur void loop() { if (isedgeleft() || isedgeright()) {

if (!isobstacle()) {

ileri (hız); gecikme(5); } else { kaçınma_obstacle(hatırlatma); } else {if (hatırlatma == 1 && kayıp == 1) { // Stopspeed'den sola dönüyorduk(); if (!isobstacleright()) { moveright(hız); // Düğmeyi bulmak için arkanı dön } else { kaçınma_obstacle(hatırlatma); } hatırlat = 2; } else if (hatırlatma == 2 && kayıp == 1) { stopspeed(); if (!isobstacleleft()) { moveleft(hız); //Sağa dönüyorduk } else { kaçınma_obstacle(hatırlatma); } hatırlat = 1; }else if (lost == 0) { if (remind == 1) { // Sola dönüyorduk if (!isobstacleleft()) { moveleft(speed); //Sağa dönüyorduk } else { stopspeed(); kaçınma_obstacle(hatırlatma); } // } else if (hatırlatma == 2) { if (!isobstacleright()) { moveright(hız); // Düğmeyi bulmak için arkanı dön } else { stopspeed(); kaçınma_obstacle(hatırlatma); } } } gecikme(10); kayıp = 0; } } //} }

Şimdi, en karmaşık iki rutinin küçük bir açıklaması verilmiştir:

Kenarlardan kaçının

Kenarlardan kaçınma protokolü, "hareket" alt dosyasında yazılan "edgeDetection()" adlı bir işlevde tanımlanır. Bu protokol, robotun yalnızca hedefine, yani düğmeye ulaştığında bir kenarla karşılaşması gerektiği gerçeğine dayanır. Robot bir kenar algıladığında yaptığı ilk şey, kenardan güvenli bir uzaklıkta olmak için biraz geriye gitmektir. Bu yapıldıktan sonra robot 2 saniye bekler. O iki saniye içinde robotun önündeki düğmeye basıldığında, robot tereyağı isteyen kişiye ulaştığını anlar ve tereyağı bölmesini açar ve tereyağını sunar. Bu noktada birisi robottan tereyağı alabilir. Birkaç saniye sonra robot beklemekten yorulacak ve sadece tereyağı kapağını kapatacaktır. Kapak kapatıldığında robot, başka bir düğme aramak için Başlatma döngüsünü yürütür. Robot hedefine ulaşmadan bir kenarla karşılaşırsa ve robotun ön tarafındaki düğmeye basılmazsa robot tereyağı kapağını açmaz ve hemen Başlatma döngüsünü çalıştırır.

Engellerden kaçının

kaçınma_obstacle() işlevi de "hareket" alt dosyasında bulunur. Engellerden kaçınmanın zor yanı, robotun oldukça büyük bir kör noktaya sahip olmasıdır. Ultrasonik sensör robotun önüne yerleştirilmiştir, yani engelleri algılayabilir, ancak ne zaman geçtiğini bilemez. Bunu çözmek için şu prensip kullanılır: Robot bir engelle karşılaştığında, diğer yöne dönmek için reming değişkenini kullanır. Bu şekilde robot engele çarpmaktan kaçınır. Robot, ultrasonik sensör artık engeli algılamayıncaya kadar dönmeye devam eder. Robotun döndüğü süre boyunca, engel artık algılanmayana kadar bir sayaç artırılır. Bu sayaç daha sonra engelin uzunluğunun yaklaşık bir değerini verir. Daha sonra ileri hareket ederek ve aynı zamanda sayacı azaltarak engelden kaçınılabilir. Sayaç 0'a ulaştığında, düğmenin yerini değiştirmek için Başlatıcı işlevi tekrar kullanılabilir. Elbette robot, engelle karşılaşmadan önce gittiğini hatırladığı yöne dönerek (yine hatırlat değişkenini kullanarak) Başlatıcı işlevini yapar.

Artık kodu tamamen anladığınıza göre, kullanmaya başlayabilirsiniz!

Eşikleri ortamınıza uyarladığınızdan (örneğin beyaz tablolarda IR yansıması daha yüksektir) ve farklı parametreleri ihtiyaçlarınıza göre uyarladığınızdan emin olun. Ayrıca, farklı modüllere güç verilmesine de büyük önem verilmelidir. Çok fazla akım aldıkları için (bu mikrodenetleyiciye zarar verebilir) servo motorların Arduino 5V portundan güç almaması büyük önem taşır. Sensörler için servolara güç sağlayan aynı güç kaynağı kullanılırsa, bazı ölçüm sorunlarıyla karşılaşılabilir.

Önerilen: