Üçevler Mah, İzmir yolu cad, No: 259, Atış yapı west point iş hanı, D blok No:22 Nilüfer/ Bursa
+905442479354
destek@robothobi.com

KARINCA ROBOT

KARINCA ROBOT
Bu eğitimde size bir Arduino hexapod'u nasıl yaptığımı göstereceğim. Adından da anlaşılacağı gibi hexapodun 6 bacağı vardır ancak buna ek olarak kuyruğu karnı, başı, antenleri, çenesi ve hatta işlevsel gözleri vardır. Tüm bunlar, hexapodun bir karınca gibi görünmesini sağlar, bu yüzden ona Arduino Karınca Robotu da diyebiliriz.
Robotu kontrol etmek için özel olarak oluşturulmuş bir Android uygulaması var. Uygulama, robota ileri veya geri hareket etmesini ve sola veya sağa dönmesini kumanda edebileceğimiz 4 düğmeye sahiptir. Bu ana işlevlerin yanı sıra robot, başını ve kuyruğunu hareket ettirebildiği gibi, bir şeyleri ısırıp yakalayıp düşürüp hatta saldırabilir.
Daha önce de bahsettiğim gibi, robotun işlevsel gözleri var kafayı bir ultrasonik sensöre uyacak şekilde özel olarak tasarladım. Dolayısıyla, robot kafasına dokunmaya çalışırsak veya elimizi sensöre yaklaştırırsak, robot başlangıçta bir saldırıya hazırlanır.
Geri dönersek robot saldırıyı reddedecek, ancak elimizi ona yaklaştırırsak saldıracak ve bizi ısıracaktır. Çok havalı değil mi? Şimdi bu robotu nasıl inşa ettiğimi ve her şeyin nasıl çalıştığını tam olarak öğreneceksiniz.
Arduino Hexapod - Karınca Robot 3D Modeli
Her zamanki gibi, bir 3D modelleme yazılımı kullanarak hexapod tasarlayarak başladım. Hexapod 6 bacağa sahiptir ve her biri 3 eklem veya 3 servodan oluşur. Bu, toplam 18 servoya ihtiyacımız olduğu anlamına geliyor bunun için MG996R servolarını kullandım.
Arka tarafta, başka bir MG996R servo tarafından hareket ettirilen kuyruğumuz var. Bu karınca robotun kafası iki derecelik bir serbestliğe sahiptir veya yuvarlanıp eğilebilir ve yine iki servo ile hareket ettirilebilir. Dolayısıyla bu proje için MG996R tipi toplam 21 servoya ve çeneler için ek olarak daha küçük bir SG90 mikro servoya ihtiyacımız var.
Burada ayrıca bir HC-SR04 ultrasonik sensöre uyacak şekilde tasarlanmış karıncanın gözlerine sahibiz. Tüm parçalar iki plaka arasına monte edildi ve ayrıca tüm kabloları, Arduino'yu ve pili iki plaka arasında gizlemek için üst plaka olarak ilginç bir kavisli kapak yaptım.

Arduino Karınca Robot 3D Model Solidworks Dosya   İNDİR
Arduino Karınca Robot 3D Model STEP Dosya İNDİR
Arduino Karınca STL Dosya İNDİR

Parçaları 3D Yazıcıda yazdırma 
Tüm baskılar için Creality CR-10 3D Yazıcıyı kullandım ve harika bir iş çıkardı. Basılması en zor kısım kafaydı çünkü tek bir baskı olsun istedim.
Bu amaçla 60 derecelik bir Destek Çıkıntı Açısı ve bazı destek engelleyicileri kullanmak zorunda kaldım. Her neyse, Creality CR-10 harika bir iş çıkardı ve kafa mükemmel bir şekilde çıktı.
Arduino Hexapod'un montajı
Tüm parçaları yazdırdıktan sonra hexapodu monte etmeye devam edebiliriz. Bacakları monte etmeye başladım. Servoları basılı parçalara sabitlemek için M3 cıvata ve somunların yanı sıra yaylı rondelalar kullandım. Cıvataların uzunluğu en az 12 mm olması gerekir. Ben 16 mm uzunluğunda cıvata kullandım.
Tüm montaj için yaklaşık 200 cıvataya ihtiyacımız var. Bağlantıları birbirine bağlamak için servo paketi ile birlikte gelen yuvarlak parçaları aksesuar olarak kullanıyoruz. Ancak cıvataların geçebilmesi için her birine 3mm delik açmamız gerekiyor ya da M3 dişli ve ayrıca satın alınabilen metal yuvarlak parçalar kullanabiliriz.
Bağlantıları servolara sabitlerken, onları her zaman aynı konumda bağladığımızdan ve tam hareket açıklığına sahip olduklarından emin olmamız gerekir.

Burada, servoların üst tarafında kesilmesi gereken küçük üçgen çıkıntılar var Bunu yapmak için basit bir maket bıçağı kullandım, böylece servolar basılı parçalara tam olarak yerleştirilebilir. Üçüncü servoyu yerine yerleştirmeden önce, ayağı taban plakasına bağlamak için kullanılacak bir M4 cıvatasını yerleştirmemiz gerekiyor.
Bacak tertibatının nasıl görünmesi gerektiği aşağıda açıklanmıştır. Aslında montajı çok kolay ama şimdi beş tanesine daha ihtiyacımız var.
Tüm bacakları hazırladıktan sonra, onları robotun gövdesine veya iki plakaya yerleştirmeye devam edebiliriz. Öncelikle yuvarlak parçaları daha önce olduğu gibi M3 cıvata ve somunlarla üst platforma sabitlemeliyiz. Daha sonra cıvataları kullanarak bunları servo şaftlarına basitçe bağlayabiliriz, ancak bunu yapmadan önce servoların konumunu tam olarak ortada olacak şekilde ayarlamamız gerekir.
Bu, servoların tüm hareket aralığını elde edebilmemiz için gereklidir ve ayrıca Arduino'yu programlarken ayarlama veya kalibrasyon sürecini azaltacaktır.

Bacakları sabitledikten sonra, bu proje zaten şekillenmeye ve altı ayaklı bir karınca gibi görünmeye başladı.
Arka tarafta bir tane daha yuvarlak parça var ve bu da bu noktadan sabitlenmesi gereken kuyruk servosu için.

Daha sonra hexapodu baş aşağı yerleştirmeliyiz ve böylece alt plakayı bacakların M4 cıvatalarından geçirebileceğiz. Sonra bazı düz pullar ve kendinden kilitli somunlar kullanarak bacakları ona sabitledim. Bu cıvataları ne kadar sıktığımıza dikkat etmeliyiz çünkü bunlar aslında pivot mafsallardır ve ayaklar da yeterince sağlamken dönebilmelidir.
Sonra, kafa için ilk servoyu kurmamız gerekiyor ve bu da yuvarlanma hareketi için. Bu servo taban plakalarına dik olarak yerleştirilmelidir, bu nedenle bu amaçla önce servoya sabitlenen iki küçük plaka yaptım. Daha sonra servoyu iki plaka arasına yerleştirebilir ve M3 cıvata ve somunlarla kolayca sabitleyebiliriz.


Sonra U şeklinde bir parçamız var ve burada iki servoyu kafa için bağlamak için iki yuvarlak boynuz takmamız gerekiyor. Yine, parçayı  servoya sabitlemeden önce, her iki yönde de 90 derece dönebilmesi için servonun konumunun ortada olduğundan emin olmalıyız.
Sırada eğimli servo parçası var. Yani burada önce bir M4 cıvatasını yerleştirip U şeklindeki parçaya sabitlememiz gerekiyor. Eğim motorunu monte etmeden önce, daha sonra kafayı sabitlemek için kullanılacak olan dört M3 cıvatayı da yerleştirmemiz gerekir. Daha sonra eğimli servoyu parçaya yerleştirebilir ve mili dikkatlice yuvarlak parçaya yerleştirebiliriz. 
Son olarak, servoyu M3 cıvatalarla sabitlememiz gerekiyor ve bununla birlikte kafa mekanizması tamamlandı. Artık hem dönebilir hem de eğilebilir.

Kafayı mekanizmaya takmadan önce, onu önceden monte etmemiz veya çeneleri küçük SG90 servo ve ultrasonik sensörle tutturmamız gerekir. Yine burada biraz sıkı ama yine de ilk mandibulayı yerleştirmeyi ve bir M4 cıvata kullanarak kafasına sabitlemeyi başardım.


Göz bölgesinde küçük bir delik var, böylece cıvatayı sıkmak için bir tornavida geçirebiliriz.
Daha sonra mikro servo yerine geçer ve iki vida kullanılarak sabitlenir. İkinci mandibulada ilk olarak SG90 servo için küçük bir kol boynuzu eklememiz gerekir.
Daha sonra mandibulayı yerine yerleştirebilir, iki dişliyi eşleştirebilir ve bir tornavida kullanarak motor şaftına sabitleyebiliriz.
Daha sonra ultrasonik sensörü yerine koyabiliriz. Göz delikleri ultrasonik sensöre tam olarak uyacak şekilde yapıldı, bu yüzden sensörü kafaya sabitlemek için sadece birkaç damla yapıştırıcı kullandım.
Kafaya eklenecek bir ayrıntı daha var ve bu antenler. Bu amaçla 3mm tel kullandım, bunu yaklaşık 13 cm uzunluğunda kestim ve istenilen şekli elde etmek için hafifçe büküyorum. Yine kafalarına sabitlemek için birkaç damla yapıştırıcı kullandım. Son olarak daha önce yerleştirdiğimiz dört cıvata ile kafayı takabiliriz.
Kafa artık tamamen işlevseldir, yuvarlanabilir, eğilebilir ve hatta ısırabilir. Kurulacak iki tane daha 3 boyutlu yazdırılmış parça var. Bu, kuyruk braketine kolayca kayabilen kuyruk ve sonunda elektronik kartları örtmek için kullanacağımız kavisli kapak. Bu, karınca robotumuzun son görünümü ve bu mavi ve beyaz ona çok yakıştı.
Arduino Karınca Robot Devre Şeması
Tamam, şimdi elektronik bağlantılara geçebiliriz. İşte bu projenin devre şeması, birçok servo bağlantısı nedeniyle biraz karmaşık görünmesine rağmen aslında basit.
22 servonun yanı sıra, akıllı telefon iletişimi için bir HC-05 Bluetooth modülüne ve bazı kapasitörlere ve dirençlere ihtiyacımız var. Elbette robotun beyni bir Arduino kartıdır ve bu durumda bu Arduino Mega'dur çünkü bu, 12'den fazla servoyu kontrol edebilen tek karttır.

Servo kütüphanesi

Robotu çalıştırmak için yaklaşık 12V gerilime sahip 3S LiPo pil kullanacağım. LiPo piller daha yüksek miktarda akım verebilir, bu nedenle bu proje için uygundurlar çünkü tüm servolar aynı anda tam yükte devreye girerse, yaklaşık 10 amper akım çekebilirler. Bununla birlikte, servoların çalışma voltajı 4,8 ila 7,2V ile sınırlıdır, bu da 12V'yi 5V'ye dönüştürmek için bir DC-DC buck dönüştürücü kullanmam gerektiği anlamına gelir. Tam yüklüyken 7,4V veya 8,4V civarında gerilime sahip 2S LiPo pil kullanmamız durumunda bile, yine de bir DC-DC dönüştürücü kullanmamız gerekiyor. Bu proje için kullanacağım dönüştürücü, 8 ampere kadar akımı kaldırabilir, ancak yeterli güce sahip olacağınızdan ve aşırı ısınmayacağından emin olmak için 10 ila 15A arasında bir tane kullanmanızı tavsiye ederim. Bu robot hareket ederken fark ettiğim maksimum akım çekimi 6 amper civarındaydı.


Bu proje için ihtiyaç duyulan bileşenleri aşağıdaki bağlantılardan edinebilirsiniz:
Şimdi, her şeyi birbirine bağlamayı denersek, birçok servo bağlantısı nedeniyle oldukça karışık olacak. Bu nedenle, EasyEDA'nın ücretsiz çevrimiçi devre tasarım yazılımını kullanarak özel bir PCB tasarladım. Bu PCB aslında Hexapod için bir Arduno Mega Shield görevi görecek çünkü onu doğrudan Arduino Mega Board'un üstüne bağlayabileceğiz. Servo bağlantılarını birbirine yakın yerleştirdim ve voltajı daha kararlı tutmak için yanlarına iki büyük kapasitör yerleştirdim. Ayrıca robotu bir radyo kontrolü kullanarak kontrol etmek istememiz durumunda bir NRF24L01 alıcı-verici modülü için bir bağlantı dahil ettim. Çeşitli dijital ve analog pin bağlantıları, 5V ve toprak bağlantıları, iki LED bağlantısı ve akü voltajını izlemek için bir bağlantı vardır. 12V akü voltajı, analog pinin güvenli bir şekilde okuyabilmesi için voltajı 5V'un altına düşüren iki direnç R1 ve R2'den oluşan voltaj bölücüden geçer. Bu şekilde pilin ne zaman yeniden şarj edilmesi gerektiğini bileceğiz.




Gerber dosyasını İNDİR

Dosyayı JLC pcb ye yollayarak üretebilirsiniz.

Burada Gerber dosyasını basitçe sürükleyip bırakabiliriz ve yükledikten sonra PCB'mizi Gerber görüntüleyicide inceleyebiliriz. Her şey yolundaysa devam edebilir ve PCB'miz için istediğimiz özellikleri seçebiliriz. Bu durumda Arduino kart rengiyle eşleşmesi için PCB rengini mavi olarak seçtim. İşte bu kadar, artık PCB'mizi makul bir fiyata sipariş edebiliyoruz. JLCPCB'den ilk siparişinizse, yalnızca 2 $ karşılığında 10 PCB'ye kadar alabileceğinizi unutmayın.
Birkaç gün sonra PCB'ler geldi. PCB'lerin kalitesi harika ve her şey tasarımdakiyle tamamen aynı.
PCB'nin montajı
Tamam, şimdi devam edip PCB'yi birleştirebiliriz. Erkek pin başlıklarını Arduino kartına bağlarken kullanılan PCB'ye lehimleyerek başladım. Pin başlıklarını alt tarafa yerleştirdiğimizde, pinleri tutan ve panoyu ters çeviren bir çeşit plaka kullanabiliriz. Şimdi hepsini PCB'ye lehimlememiz gerekiyor. Bunu bitirdikten sonra, erkek pin başlıklarına da ihtiyacımız olan servo bağlantılara geçebiliriz.
Bu noktada, aslında tüm bağlantılar için pin başlıklarını ekleyebilir ve aynı yöntemi kullanarak PCB'yi çevirebilir ve tüm pinleri ona lehimleyebiliriz. Sonunda dirençleri, kondansatörleri ve terminal bloklarını lehimlememiz gerekiyor. İşte bu kadar, Karınca Robotumuz için Arduino Mega Shield artık hazır. Şimdi bunu basitçe Arduino kartına yerleştirebiliriz.
Daha sonra buck dönüştürücü çıkış voltajını 5V'a ayarlamamız gerekiyor. Bunu, kova dönüştürücünün potansiyometresini ayarlayarak yapabiliriz. Burada girişe bir güç anahtarı eklediğim ve sadece pil voltajını izlemek için kullanılacak olan PCB üzerindeki 12V pinine pili bağladım.
PCB'nin ana girişinin 5V olması gerektiğini unutmayın.

Şimdi elektronik bileşenleri iki plaka arasına yerleştirebiliriz. Yine biraz sıkı ama yine de her şeyi sığdırabiliriz. Önce onu bir bant kullanarak sabitlediğim bataryaya, üstüne de yaptığımız PCB ile birlikte Arduino'ya gider. Daha sonra, kullanacağımız iletişim türüne bağlı olarak NRF24L01 alıcı-vericiyi veya sadece Bluetooth modülünü bağlayabiliriz. Ayrıca pilin ne zaman yeniden şarj edilmesi gerektiğini veya voltajın 11V voltun altına düşmesi durumunda belirtmek için bir LED yerleştirdim. Son olarak tüm servoları servo pinlerine bağlamamız gerekiyor. Bunu yaparken her bir servoyu bağladığınız pin numarasını yazdığınızdan emin olun. Tüm servoları bağladıktan sonra kavisli kapağı üst plakaya koyabiliriz ve aslında bu proje ile işimiz bitti.
Arduino Hexapod Kodu
Kod biraz daha uzun olduğundan, daha iyi anlaşılması için, programın kaynak kodunu her bölümün açıklamasını içeren bölümlerde yayınlayacağım. Ve bu makalenin sonunda tam kaynak kodunu göndereceğim.

Bu nedenle, servoları kontrol etmek için temel Servo kütüphanesini kullanacağız ve Bluetooth iletişimi için SoftwareSerial kütüphanesini de eklememiz gerekiyor. Öncelikle aşağıdaki program için gerekli olan tüm servo nesnelerini ve bazı değişkenleri tanımlamamız gerekir.

#include <Servo.h>
#include <SoftwareSerial.h>

#define trigPin 7
#define echoPin 6
#define ledB 10

SoftwareSerial Bluetooth(12, 9); // Arduino(RX, TX) - HC-05 Bluetooth (TX, RX)

// Create servo object
Servo s24;
Servo s23;
Servo s22;
Setup bölümünde, Bluetooth iletişimini, ultrasonik sensör için pin modlarını, LED i başlatmamız ve ayrıca servoların bağlı olduğu pinleri tanımlamamız gerekir.

// == Move to initial position
  // Head
  s15.write(72);
  s14.write(50);
  s13.write(90); // Grip
  
  s5.write(65); // Tail
  
  // Leg 4
  s10.write(65);
  s11.write(35);
  s12.write(40);
  // Leg 5
  s7.write(80);
  s8.write(50);
  s9.write(25);
  // Leg 6
  s1.write(90);
  s2.write(45);
  s3.write(60);

  // Leg 1
  s18.write(60);
  s17.write(90);
  s16.write(100);
  // Leg 2
  s21.write(50);
  s20.write(85);
  s19.write(75);
  // Leg 3
  s24.write(50);
  s23.write(80);
  s22.write(80);
Bir hexapod hareketi programlamaya gelince, ileri veya ters kinematik kullanmak gibi yapılması gereken birkaç yol vardır. Bu yöntemler, her eklemin konumunun vücudun istenen son konumu için girdilere dayalı olarak hesaplandığı bazı ciddi matematikleri içerir. Ancak bunu biraz daha az karmaşık hale getirmeye karar verdim çünkü zaten kullandığım servolar böyle bir görev için yeterince iyi değil. Bunun nedeni, benim servolarımın MG996R servo'nun ucuz versiyonu olmasıdır. Doğru torka sahip değiller ve her zaman tam olarak istenen konumda konumlanmıyorlar.

Öyleyse hexapod yürüyüşünü nasıl yaptığıma bir bakalım. Her bacağı hareket ettirmek için ayrı bir özel fonksiyon yaptım. Bir bacak döngüsü, salıncak ve duruş adı verilen iki aşamayı içerir. Salınım aşamasında, bacak hava yoluyla bir başlangıç ​​konumundan son konuma doğru hareket ederken, duruş aşamasında bacak, bacak ucu efektörü yere değecek şekilde son konumdan başlangıç ​​konumuna geri dönmektedir. Bu şekilde hexapodun gövdesi ileriye doğru hareket edecektir.
Bu yüzden ana döngüyü ve bazı sayaçları kullanarak bu hareketleri elde etmek için her bir servo pozisyonunu manuel olarak programlıyorum.
void moveLeg1() {
  // Swign phase - move leg though air - from initial to final position
  // Rise the leg
  if (i1L1 <= 10) {
    s18.write(60 - i1L1 * 2);
    s17.write(90 - i1L1 * 3);
    i1L1++;
  }
  // Rotate the leg
  if (i2L1 <= 30) {
    s16.write(100 - i2L1);
    i2L1++;

  }
  // Move back to touch the ground
  if (i2L1 > 20 & i3L1 <= 10) {
    s18.write(40 + i3L1 * 2);
    s17.write(60 + i3L1 * 3);
    i3L1++;
  }
  // Stance phase - move leg while touching the ground
  // Rotate back to initial position
  if (i2L1 >= 30) {
    s16.write(70 + i4L1);
    i4L1++;
    l1status = HIGH;
  }
  // Reset the counters for repeating the process
  if (i4L1 >= 30) {
    i1L1 = 0;
    i2L1 = 0;
    i3L1 = 0;
    i4L1 = 0;
    i5L1 = 0;
  }
  // Each iteration or step is executed in the main loop section where there is also a delay time for controlling the speed of movement
}

Böylece önce iki dış servo ayağı yükseltir ve gövdeye bağlı üçüncü servo belirli bir yönde dönmeye başlar. Üçüncü servo dönmeyi durdurmadan önce 10 adım olduğunda, dıştaki iki servoyu yere temas etmek için aynı konumda arkaya hareket ettirmeye başlarız. Bu, salınım aşamasını tamamlar veya bacak ilk konumundan son konumuna hareket eder. Ardından üçüncü servoyu sondan ilk konuma geri döndürüyoruz ve bu duruş aşamasını tamamlıyor. Bacak bir çevrimi gerçekleştirdikten sonra, sayaçlar sıfırlanır ve bacak çevrimi tekrar tekrar tekrarlayacaktır. Her bir yineleme veya adım, servoların hızını kontrol eden bir gecikme süresinin de bulunduğu ana döngü bölümünde yürütülür. Diğer tüm bacaklar için bunun gibi işlevlerin yanı sıra, ters, sol ve sağ hareketler için bacakları ters yönde hareket ettirmek için bazı ek işlevler yaptım. Benzer şekilde, adımların kaydını tutmak için sayaçları kullanarak, kafayı hareket ettirmek, kuyruğu hareket ettirmek, çeneleri hareket ettirmek gibi diğer fonksiyonları programladım. Örneğin, robotu ileri doğru hareket ettirmek istiyorsak, ana döngüde sürekli olarak tekrar edecek altı moveLeg () özel işlevi çağırmamız gerekir.

// Move forward
  if (m == 2) {
    moveLeg1();
    moveLeg3();
    moveLeg5();
    if (l1status == HIGH) {
      moveLeg2();
      moveLeg4();
      moveLeg6();
    }
  }
3 bacağın ofset olduğunu fark edebilirsiniz, bu nedenle 1 3 ve 5 numaralı bacak salıncak fazındayken diğer 3 bacak 2, 4 ve 6 duruş fazındadır. Sola gitmek istememiz durumunda uygun moveLeft () işlevlerini çağırırız.

Bu komutlar aslında Bluetooth modülünden veya akıllı telefonumuzdaki özel yapım Android uygulamasından geliyor.
// Check for incoming data
  if (Bluetooth.available() > 0) {
    dataIn = Bluetooth.read();  // Read the data

Arduino Karınca Robot Android Uygulaması 
Şimdi uygulamaya bir göz atalım ve aslında Arduino'ya ne tür veriler gönderdiğini görelim. Uygulamayı MIT App Inventor çevrimiçi uygulamasını kullanarak yaptım şimdi çalışmasını inceleyelim.
 Altta robotun hızını kontrol etmek için bir kaydırıcı var ve üstte Bluetooth modülüne bağlanmak için düğmeler var.
Şimdi programa veya uygulamanın arkasındaki bloklara bir göz atalım.
Örneğin Forward butonuna tıklarsak, “if” ifadesindeki bloklar çalıştırılacaktır. Bu, 2 sayısını Arduino'ya göndereceğimiz ve bu da ileriye dönük işlevler setini yürüteceği anlamına gelir. Aynı zamanda, düğmenin görüntüsünü aynı görüntünün diğer vurgulanan sürümüyle değiştirdiğimizi fark edebiliriz. Aynı düğmeye tekrar basarsak, şimdi “else” ifadesindeki bloklar çalıştırılacak ve bu tüm sayaçları sıfırlayacak ve robotu başlangıç ​​konumlarına taşıyacak olan 0 sayısını Arduino'ya gönderecektir. Ayrıca bu düğmenin ilk görüntüsünü geri alıyoruz. Bu yüzden diğer tüm düğmeler için aynı prensibi kullandım.

Yukarıdaki MIT App Inventor projesinin yanı sıra akıllı telefonunuza yüklenmeye hazır 
Android Uygulamasının indirme dosyası: 

Arduino Ant Hexapod Robot Control MIT App Inventor Proje Dosyası 
Arduino Ant Hexapod Robot Control Uygulaması Kurulum Dosyası
Şimdi Arduino programındaki iki işleve daha göz atalım ve bu pil voltaj monitörü ve ultrasonik sensördür.
// Monitor the battery voltage
    int sensorValue = analogRead(A3);
    float voltage = sensorValue * (5.00 / 1023.00) * 2.9; // Convert the reading values from 5v to suitable 12V i
    Serial.println(voltage);
    // If voltage is below 11V turn on the LED
    if (voltage < 11) {
      digitalWrite(ledB, HIGH);
    }
    else {
      digitalWrite(ledB, LOW);
    }
Yani batarya voltajı 11 volttan düşükse LED'i açacağız ve ultrasonik sensör 40 cm'den daha yakın bir nesne tespit ederse robot bir saldırıya hazırlanacaktır.
// Get the distance from the ultrasonic sensor
    if (getDistance() > 40) {
      att = 0;
    }
    if (getDistance() <= 40) {
      att = 1;
      dataIn = 99;
    }
Önünde artık nesne yoksa, saldırıyı reddeder ve nesne hala mevcutsa ve kafaya daha yakınsa robot saldırır.
// If there is an object in front of the sensor prepare for attack
  if (att == 1) {
    prepareAttack();
    if (aStatus == HIGH) {
      while (a == 0) {
        delay(2000);
        a = 1;
      }
      if (getDistance() > 30) {
        att = 2;
        a = 0;
        aStatus = LOW;
        initialPosHead();
      }
      if (getDistance() < 30) {
        att = 3;
        a = 0;
        aStatus = LOW;
        initialPosHead();
      }
    }
  }
  // If there is no longer object in front, dismiss the attack
  if (att == 2) {
    dismissAttack();
    if (aStatus == HIGH) {
      dataIn = 0;
      att = 0;
    }
  }
  // If there is closer to the sensor attack
  if (att == 3) {
    attack();
    if (attStatus == HIGH) {
      while (aa == 0) {
        delay(2000);
        aa = 1;
      } attStatus = LOW;
    }
    if (aStatus == HIGH) {
      while (a == 0) {
        delay(2000);
        a = 1;
      }
      dataIn = 0;
      att = 0;
      initialPosHead();
    }
  }
Yani bu video için hemen hemen her şey bu kadar.

Bu Arduino Hexapod projesi için eksiksiz kodu buradan indirebilirsiniz:

Arduino Kodları indir
Bu projeyi inşa etmeye karar verirseniz, bazı zorluklarla yüzleşmeye hazırlıklı olmanız gerektiğini unutmayın. Benim için en büyük sorun, kullandığım servoların zayıf performansıydı. Umarım bu videoyu beğenmişsinizdir ve yeni bir şeyler öğrenmişsinizdir.