Robotik kol

Arduino Robot Kol Yapımı Projesi ( Akıllı Telefon Kontrolü ); Bu derste, özel olarak oluşturulmuş bir Android uygulaması kullanılarak kablosuz olarak kontrol edilip programlanabilen bir Arduino Robot Kolunun nasıl yapıldığını öğreneceğiz. Robot kollarını kontrol etmek için kendi Android uygulamamızı geliştirmeye, robot parçalarını tasarlamaya ve 3D yazdırmaya, elektronik bileşenleri birleştirmeye ve Arduino’yu programlamaya başlayarak, size tüm yapım sürecini göstereceğim.  

 

 

Uygulamadaki sürgüleri kullanarak her servonun veya robot kolunun ekseninin hareketini manuel olarak kontrol edebiliriz. Ayrıca “Kaydet” düğmesini kullanarak her bir pozisyonu veya adımı kaydedebiliriz ve ardından robot kolu bu adımları otomatik olarak çalıştırabilir ve tekrarlayabilir. Aynı düğme ile otomatik işlemi duraklatabilir, tüm adımları sıfırlayabilir veya silebiliriz, böylece yenilerini kaydedebiliriz.

 

Robotik kol

robotik kol

 

Arduino Robot Kol 3D Modeli

Başlangıçta, Robot Kolunu Solidworks 3D modelleme yazılımını kullanarak tasarladım. Kolun 5 serbestlik derecesi vardır.  

 

 

İlk 3 eksen için, bel, omuz ve dirsek için MG996R servolarını ve diğer 2 eksen için bilek rulosunu ve bilek adımını ve kıskaç olarak daha küçük SG90 mikro servolarını kullandım.  

 

Aşağıda ve 3D modelini indirebilirsiniz.

 

Solidworks:

  • Arduino Robot Arm 3D Model Solidworks Files
  • STEP file:
  • Arduino Robot Arm 3D Model STEP File
  • STL files for 3D Printing:
  • Arduino Robot Arm STL Files

  TÜM DOSYALARI İNDİR

 

Robot Kolunun 3B Baskısı

Arduino robot kolu için tüm parçaları 3D olarak bastırdım. Denemeden önce, makaralı tekerleklerin yeterince sıkı olup olmadıklarını kontrol etmeniz önerilir ve eğer değilse, eksantrik somunları bunları sıkmak için kullanabilirsiniz. Ve işte bu, 3B baskı yatağınızı seviyelttikten sonra, 3B yaratmalarınızı gerçeğe dönüştürmeye hazırsınız.  

 

Arduino robot kol yapımı projesi ( akıllı telefon kontrolü )
Arduino Robot Kolunun tüm parçalarını birkaç saatte hazır.

 

Robot Kolunun Montajı

Tamam, bulayın robot kolunu monte edilebilir hazırız. İlk servo motorunu pakete yerleştirmekte vidaları yerleştirerek yerleştirmekte tabanla başladım. Servonun çıkış milinde yuvarlak bir korna cevtası tespit ettim.

 

Arduino robot kol yapımı projesi ( akıllı telefon kontrolü )

 

Üstüne üst kısmı yerleştirip iki vida kullanarak sabitledim.  

 

Arduino robot kol yapımı projesi ( akıllı telefon kontrolü )

 

Burada yine önce servoya, ardından yuvarlak kornayı bir sonraki kısma geçirir ve daha sonra çıkış milindeki cıvatayı kullanarak birbirlerine tutturulur.  

 

Arduino robot kol yapımı projesi ( akıllı telefon kontrolü )

 

Burada, omuz ekseninde bir çeşit yay içermenin iyi bir fikir olduğunu ya da benim durumumda servoya yardımcı olmak için bir lastik bant kullandığımı fark edebiliriz çünkü bu servo kolun geri kalanının bütün ağırlığını taşıyor yük olarak.  

 

Arduino robot kol yapımı projesi ( akıllı telefon kontrolü )

 

Benzer şekilde robot kolunun kalanını da birleştirmeye devam ettim. Kıskaç mekanizmasına gelince, montaj için bazı 4 milimetre cıvata ve somun kullandım.  

 

Arduino robot kol yapımı projesi ( akıllı telefon kontrolü )

 

Sonunda kıskaç mekanizmasını son servoya taktım ve Arduino robot kolu tamamlandı.

 

Arduino Robot Kol Devresi Şeması

Bir sonraki aşama elektroniği bağlamak. Bu projenin devre şeması aslında oldukça basittir. Akıllı telefonla iletişim kurmak için sadece bir Arduino panosuna ve bir HC-05 Bluetooth modülüne ihtiyacımız var. Altı servo motorun kontrol pinleri, Arduino kartının altı dijital pinine bağlanır.  

 

Arduino robot kol yapımı projesi ( akıllı telefon kontrolü )

 

Servoları çalıştırmak için 5V’a ihtiyacımız var, ancak bunun harici bir güç kaynağından gelmesi gerekiyor, çünkü Arduino, hepsinin çekebileceği akım miktarını idare edemiyor. Güç kaynağının en az 2 A akım alabilmesi gerekir. Böylece her şeyi bir araya getirdikten sonra Arduino’yu programlamaya geçebilir ve Android uygulamasını yapabiliriz.

 

Gereken bileşenleri aşağıdaki bağlantılar,

  • MG996R Servo Motor
  • SG90 Micro Servo Motor
  • HC-05 Bluetooth Module
  • Arduino Board
  • 5V 2A DC Power Supply

 

 

Arduino Robot Kol Kodu

Kod biraz daha uzun olduğu için, daha iyi anlaşılması için, programın kaynak kodunu bölümlerin açıklamalarıyla birlikte bölümlere koyacağım. Ve bu yazının sonunda kaynak kodun tamamını göndereceğim.

Bu yüzden önce Bluetooth modülünün seri iletişimi için servo kütüphanesinin yanı sıra SoftwareSerial kütüphanesini de eklememiz gerekir. Bu kitaplıkların her ikisi de Arduino IDE’ye eklenmiştir, dolayısıyla bunları harici olarak yüklemeniz gerekmez. Daha sonra altı servoyu, HC-05 Bluetooth modülünü ve servoların mevcut ve önceki pozisyonlarını saklamak için bazı değişkenleri ve ayrıca pozisyonları veya otomatik mod için basamakları depolamak için bazı değişkenleri tanımlamamız gerekir.    

 

#include <SoftwareSerial.h>
#include <Servo.h>
Servo servo01;
Servo servo02;
Servo servo03;
Servo servo04;
Servo servo05;
Servo servo06;
SoftwareSerial Bluetooth(3, 4); // Arduino(RX, TX) - HC-05 Bluetooth (TX, RX)
int servo1Pos, servo2Pos, servo3Pos, servo4Pos, servo5Pos, servo6Pos; // current position
int servo1PPos, servo2PPos, servo3PPos, servo4PPos, servo5PPos, servo6PPos; // previous position
int servo01SP[50], servo02SP[50], servo03SP[50], servo04SP[50], servo05SP[50], servo06SP[50]; // for storing positions/steps
int speedDelay = 20;
int index = 0;
String dataIn = "";

 

Kurulum bölümünde servoları ve Bluetooth modülünü başlatmalı ve robot kolunu ilk konumuna getirmeliyiz. Bunu, servoyu 0 ila 180 derece arasında herhangi bir konuma basitçe hareket ettiren write () işlevini kullanarak yapıyoruz.  

 

void setup() {
  servo01.attach(5);
  servo02.attach(6);
  servo03.attach(7);
  servo04.attach(8);
  servo05.attach(9);
  servo06.attach(10);
  Bluetooth.begin(38400); // Default baud rate of the Bluetooth module
  Bluetooth.setTimeout(1);
  delay(20);
  // Robot arm initial position
  servo1PPos = 90;
  servo01.write(servo1PPos);
  servo2PPos = 150;
  servo02.write(servo2PPos);
  servo3PPos = 35;
  servo03.write(servo3PPos);
  servo4PPos = 140;
  servo04.write(servo4PPos);
  servo5PPos = 85;
  servo05.write(servo5PPos);
  servo6PPos = 80;
  servo06.write(servo6PPos);
}

 

Sonra, döngü bölümünde, Bluetooth.available () işlevini kullanarak, Smartphone’dan gelen herhangi bir veri olup olmadığını sürekli olarak kontrol ederiz. Değer doğruysa, readString () işlevini kullanarak verileri bir dizge olarak okuruz, bunları dataIn değişkenine depolar. Gelen verilere bağlı olarak robot koluna ne yapacağımızı söyleyeceğiz.  

 

// Check for incoming data
  if (Bluetooth.available() > 0) {
    dataIn = Bluetooth.readString();  // Read the data as string

 

 

Arduino Robot Kol Kontrolü Android Uygulaması

Şimdi Android uygulamasına bakalım ve Arduino’ya ne tür veriler gönderdiğini görelim.  

 

Arduino robot kol yapımı projesi ( akıllı telefon kontrolü )
Uygulamayı MIT App Inventor çevrimiçi uygulamasını kullanarak yaptım ve işte nasıl çalıştığını. En üstte, akıllı telefonu HC-05 Bluetooth modülüne bağlamak için iki düğmemiz var. Sonra sol tarafta robot kolunun bir resmi var ve sağ tarafta da servoları kontrol etmek için altı kaydırıcı ve hız kontrolü için bir kaydırıcı var.  

 

Arduino robot kol yapımı projesi ( akıllı telefon kontrolü )

 

Her kaydırıcı, robot kol bağlantılarına uygun farklı başlangıç, minimum ve maksimum değerlere sahiptir. Uygulamanın altında, robot kolunu otomatik olarak çalışacak şekilde programlayabilmemiz için SAVE, RUN ve RESET adlı üç düğmemiz var. Ayrıca kaydettiğimiz adım sayısını gösteren bir etiket de var. Bununla birlikte, MIT App Inventor kullanarak bu gibi uygulamaların nasıl oluşturulacağı hakkında daha fazla ayrıntı için, bununla ilgili diğer ayrıntılı eğitimimi kontrol edebilirsiniz.

 

Tamam, şimdi programı veya uygulamanın arkasındaki blokları görelim. İlk önce, sol tarafta akıllı telefonu Bluetooth modülüne bağlamak için bloklar bulunuyor.  

 

Arduino robot kol yapımı projesi ( akıllı telefon kontrolü )

 

Ardından servo pozisyon kontrolü için sürgü bloklarına ve robot kolunu programlamak için düğmeler bloklarına sahibiz. Bu yüzden, kaydırıcının konumunu değiştirirsek, Bluetooth işlevini kullanarak .SendText, Arduino’ya bir metin göndeririz. Bu metin, kaydırıcının geçerli değerinin yanı sıra hangi kaydırıcının değiştirildiğini gösteren bir önekten oluşur.  

 

Arduino robot kol yapımı projesi ( akıllı telefon kontrolü )

 

İşte yukarıda belirtilen MIT App Inventor projesinin bir indirme dosyası ve akıllı telefonunuza kurulmaya hazır Android Uygulaması:

 

Arduino Robot Arm Control MIT App Inventor Project Dosyası

İNDİR

Arduino Robot Arm Control Android App Dosyası

İNDİR

 

Bu nedenle, Arduino’da, startWith () işlevini kullanarak her gelen verinin önekini kontrol ederiz ve böylece ne yapacağımızı biliriz. Örneğin, önek “s1” ise, bir numaralı servoyu taşımamız gerektiğini biliyoruz. Substring () işlevini kullanarak kalan metni alırız veya bu konum değeridir, onu tam sayıya dönüştürür ve değeri servoyu bu konuma taşımak için kullanırız.    

 

// If "Waist" slider has changed value - Move Servo 1 to position
    if (dataIn.startsWith("s1")) {
      String dataInS = dataIn.substring(2, dataIn.length()); // Extract only the number. E.g. from "s1120" to "120"
      servo1Pos = dataInS.toInt();  // Convert the string into integer

 

Burada basitçe write () işlevini çağırabiliriz ve servo o konuma gidecektir, ancak bu şekilde servo robot kolu için çok fazla olan maksimum hızında çalışacaktır. Bunun yerine, servoların hızını kontrol etmemiz gerekiyor, bu yüzden her yineleme arasında bir gecikme süresi uygulayarak servoyu kademeli olarak önceki konumdan mevcut konuma taşımak için bazı FOR halkaları kullandım. Gecikme süresini değiştirerek servonun hızını değiştirebilirsiniz.    

 

// We use for loops so we can control the speed of the servo
      // If previous position is bigger then current position
      if (servo1PPos > servo1Pos) {
        for ( int j = servo1PPos; j >= servo1Pos; j--) {   // Run servo down
          servo01.write(j);
          delay(20);    // defines the speed at which the servo rotates
        }
      }
      // If previous position is smaller then current position
      if (servo1PPos < servo1Pos) {
        for ( int j = servo1PPos; j <= servo1Pos; j++) {   // Run servo up
          servo01.write(j);
          delay(20);
        }
      }
      servo1PPos = servo1Pos;   // set current position as previous position
    }

 

Robot kolunun her bir eksenini sürmek için aynı yöntem kullanılır.

Altlarında KAYDET düğmesidir. KAYDET düğmesine basarsak, her servo motorun konumu bir dizide saklanır. Her basışta indeks artar, böylece dizi adım adım doldurulur.  

 

// If button "SAVE" is pressed
    if (dataIn.startsWith("SAVE")) {
      servo01SP[index] = servo1PPos;  // save position into the array
      servo02SP[index] = servo2PPos;
      servo03SP[index] = servo3PPos;
      servo04SP[index] = servo4PPos;
      servo05SP[index] = servo5PPos;
      servo06SP[index] = servo6PPos;
      index++;                        // Increase the array index
    }

 

Ardından RUN butonuna basarsak kayıtlı adımları çalıştıran runervo () özel fonksiyonunu çağırırız. Bu fonksiyona bir göz atalım. İşte burada RESET butonuna basana kadar kaydedilen adımları tekrar tekrar çalıştırıyoruz. FOR döngüsünü kullanarak dizilerde depolanan tüm konumları gözden geçiririz ve aynı zamanda akıllı telefondan gelen veri olup olmadığını kontrol ederiz. Bu veriler robotu duraklatan ÇALIŞMA / DURAKLATMA butonu olabilir ve tekrar tıklandığında otomatik hareketlerle devam eder. Ayrıca, hız kaydırıcı konumunu değiştirirsek, bu değeri aşağıdaki FOR döngülerindeki her yineleme arasındaki gecikme süresini değiştirmek için kullanırız, bu da servo motorların hızını kontrol eder.    

 

// Automatic mode custom function - run the saved steps
void runservo() {
  while (dataIn != "RESET") {   // Run the steps over and over again until "RESET" button is pressed
    for (int i = 0; i <= index - 2; i++) {  // Run through all steps(index)
      if (Bluetooth.available() > 0) {      // Check for incomding data
        dataIn = Bluetooth.readString();
        if ( dataIn == "PAUSE") {           // If button "PAUSE" is pressed
          while (dataIn != "RUN") {         // Wait until "RUN" is pressed again
            if (Bluetooth.available() > 0) {
              dataIn = Bluetooth.readString();
              if ( dataIn == "RESET") {     
                break;
              }
            }
          }
        }
        // If SPEED slider is changed
        if (dataIn.startsWith("ss")) {
          String dataInS = dataIn.substring(2, dataIn.length());
          speedDelay = dataInS.toInt(); // Change servo speed (delay time)
        }
      }
      // Servo 1
      if (servo01SP[i] == servo01SP[i + 1]) {
      }
      if (servo01SP[i] > servo01SP[i + 1]) {
        for ( int j = servo01SP[i]; j >= servo01SP[i + 1]; j--) {
          servo01.write(j);
          delay(speedDelay);
        }
      }
      if (servo01SP[i] < servo01SP[i + 1]) {
        for ( int j = servo01SP[i]; j <= servo01SP[i + 1]; j++) {
          servo01.write(j);
          delay(speedDelay);
        }
      }

 

Bu IF ifadeleri ve FOR döngülerinde daha önce açıklandığı gibi, servoları bir sonraki pozisyonlarına taşırız. Son olarak RESET butonuna basarsak, dizilerdeki tüm verileri sıfıra indiririz ve ayrıca endeksi sıfıra ayarlarız, böylece robot kolunu yeni hareketlerle yeniden programlayabiliriz.

 

// If button "RESET" is pressed
    if ( dataIn == "RESET") {
      memset(servo01SP, 0, sizeof(servo01SP)); // Clear the array data to 0
      memset(servo02SP, 0, sizeof(servo02SP));
      memset(servo03SP, 0, sizeof(servo03SP));
      memset(servo04SP, 0, sizeof(servo04SP));
      memset(servo05SP, 0, sizeof(servo05SP));
      memset(servo06SP, 0, sizeof(servo06SP));
      index = 0;  // Index to 0
    }

 

 

İşte bu, şimdi robot kolla eğlenebilir ve biraz eğlenebiliriz.

İşte Arduino Robot Kolunun tam kodu

 

/*        
       DIY Arduino Robot Arm Smartphone Control  
        by Dejan, www.HowToMechatronics.com  
*/
#include <SoftwareSerial.h>
#include <Servo.h>
Servo servo01;
Servo servo02;
Servo servo03;
Servo servo04;
Servo servo05;
Servo servo06;
SoftwareSerial Bluetooth(3, 4); // Arduino(RX, TX) - HC-05 Bluetooth (TX, RX)
int servo1Pos, servo2Pos, servo3Pos, servo4Pos, servo5Pos, servo6Pos; // current position
int servo1PPos, servo2PPos, servo3PPos, servo4PPos, servo5PPos, servo6PPos; // previous position
int servo01SP[50], servo02SP[50], servo03SP[50], servo04SP[50], servo05SP[50], servo06SP[50]; // for storing positions/steps
int speedDelay = 20;
int index = 0;
String dataIn = "";
void setup() {
  servo01.attach(5);
  servo02.attach(6);
  servo03.attach(7);
  servo04.attach(8);
  servo05.attach(9);
  servo06.attach(10);
  Bluetooth.begin(38400); // Default baud rate of the Bluetooth module
  Bluetooth.setTimeout(1);
  delay(20);
  // Robot arm initial position
  servo1PPos = 90;
  servo01.write(servo1PPos);
  servo2PPos = 150;
  servo02.write(servo2PPos);
  servo3PPos = 35;
  servo03.write(servo3PPos);
  servo4PPos = 140;
  servo04.write(servo4PPos);
  servo5PPos = 85;
  servo05.write(servo5PPos);
  servo6PPos = 80;
  servo06.write(servo6PPos);
}
void loop() {
  // Check for incoming data
  if (Bluetooth.available() > 0) {
    dataIn = Bluetooth.readString();  // Read the data as string
    
    // If "Waist" slider has changed value - Move Servo 1 to position
    if (dataIn.startsWith("s1")) {
      String dataInS = dataIn.substring(2, dataIn.length()); // Extract only the number. E.g. from "s1120" to "120"
      servo1Pos = dataInS.toInt();  // Convert the string into integer
      // We use for loops so we can control the speed of the servo
      // If previous position is bigger then current position
      if (servo1PPos > servo1Pos) {
        for ( int j = servo1PPos; j >= servo1Pos; j--) {   // Run servo down
          servo01.write(j);
          delay(20);    // defines the speed at which the servo rotates
        }
      }
      // If previous position is smaller then current position
      if (servo1PPos < servo1Pos) {
        for ( int j = servo1PPos; j <= servo1Pos; j++) {   // Run servo up
          servo01.write(j);
          delay(20);
        }
      }
      servo1PPos = servo1Pos;   // set current position as previous position
    }
    
    // Move Servo 2
    if (dataIn.startsWith("s2")) {
      String dataInS = dataIn.substring(2, dataIn.length());
      servo2Pos = dataInS.toInt();
      if (servo2PPos > servo2Pos) {
        for ( int j = servo2PPos; j >= servo2Pos; j--) {
          servo02.write(j);
          delay(50);
        }
      }
      if (servo2PPos < servo2Pos) {
        for ( int j = servo2PPos; j <= servo2Pos; j++) {
          servo02.write(j);
          delay(50);
        }
      }
      servo2PPos = servo2Pos;
    }
    // Move Servo 3
    if (dataIn.startsWith("s3")) {
      String dataInS = dataIn.substring(2, dataIn.length());
      servo3Pos = dataInS.toInt();
      if (servo3PPos > servo3Pos) {
        for ( int j = servo3PPos; j >= servo3Pos; j--) {
          servo03.write(j);
          delay(30);
        }
      }
      if (servo3PPos < servo3Pos) {
        for ( int j = servo3PPos; j <= servo3Pos; j++) {
          servo03.write(j);
          delay(30);
        }
      }
      servo3PPos = servo3Pos;
    }
    // Move Servo 4
    if (dataIn.startsWith("s4")) {
      String dataInS = dataIn.substring(2, dataIn.length());
      servo4Pos = dataInS.toInt();
      if (servo4PPos > servo4Pos) {
        for ( int j = servo4PPos; j >= servo4Pos; j--) {
          servo04.write(j);
          delay(30);
        }
      }
      if (servo4PPos < servo4Pos) {
        for ( int j = servo4PPos; j <= servo4Pos; j++) {
          servo04.write(j);
          delay(30);
        }
      }
      servo4PPos = servo4Pos;
    }
    // Move Servo 5
    if (dataIn.startsWith("s5")) {
      String dataInS = dataIn.substring(2, dataIn.length());
      servo5Pos = dataInS.toInt();
      if (servo5PPos > servo5Pos) {
        for ( int j = servo5PPos; j >= servo5Pos; j--) {
          servo05.write(j);
          delay(30);
        }
      }
      if (servo5PPos < servo5Pos) {
        for ( int j = servo5PPos; j <= servo5Pos; j++) {
          servo05.write(j);
          delay(30);
        }
      }
      servo5PPos = servo5Pos;
    }
    // Move Servo 6
    if (dataIn.startsWith("s6")) {
      String dataInS = dataIn.substring(2, dataIn.length());
      servo6Pos = dataInS.toInt();
      if (servo6PPos > servo6Pos) {
        for ( int j = servo6PPos; j >= servo6Pos; j--) {
          servo06.write(j);
          delay(30);
        }
      }
      if (servo6PPos < servo6Pos) {
        for ( int j = servo6PPos; j <= servo6Pos; j++) {
          servo06.write(j);
          delay(30);
        }
      }
      servo6PPos = servo6Pos; 
    }
    // If button "SAVE" is pressed
    if (dataIn.startsWith("SAVE")) {
      servo01SP[index] = servo1PPos;  // save position into the array
      servo02SP[index] = servo2PPos;
      servo03SP[index] = servo3PPos;
      servo04SP[index] = servo4PPos;
      servo05SP[index] = servo5PPos;
      servo06SP[index] = servo6PPos;
      index++;                        // Increase the array index
    }
    // If button "RUN" is pressed
    if (dataIn.startsWith("RUN")) {
      runservo();  // Automatic mode - run the saved steps 
    }
    // If button "RESET" is pressed
    if ( dataIn == "RESET") {
      memset(servo01SP, 0, sizeof(servo01SP)); // Clear the array data to 0
      memset(servo02SP, 0, sizeof(servo02SP));
      memset(servo03SP, 0, sizeof(servo03SP));
      memset(servo04SP, 0, sizeof(servo04SP));
      memset(servo05SP, 0, sizeof(servo05SP));
      memset(servo06SP, 0, sizeof(servo06SP));
      index = 0;  // Index to 0
    }
  }
}
// Automatic mode custom function - run the saved steps
void runservo() {
  while (dataIn != "RESET") {   // Run the steps over and over again until "RESET" button is pressed
    for (int i = 0; i <= index - 2; i++) {  // Run through all steps(index)
      if (Bluetooth.available() > 0) {      // Check for incomding data
        dataIn = Bluetooth.readString();
        if ( dataIn == "PAUSE") {           // If button "PAUSE" is pressed
          while (dataIn != "RUN") {         // Wait until "RUN" is pressed again
            if (Bluetooth.available() > 0) {
              dataIn = Bluetooth.readString();
              if ( dataIn == "RESET") {     
                break;
              }
            }
          }
        }
        // If speed slider is changed
        if (dataIn.startsWith("ss")) {
          String dataInS = dataIn.substring(2, dataIn.length());
          speedDelay = dataInS.toInt(); // Change servo speed (delay time)
        }
      }
      // Servo 1
      if (servo01SP[i] == servo01SP[i + 1]) {
      }
      if (servo01SP[i] > servo01SP[i + 1]) {
        for ( int j = servo01SP[i]; j >= servo01SP[i + 1]; j--) {
          servo01.write(j);
          delay(speedDelay);
        }
      }
      if (servo01SP[i] < servo01SP[i + 1]) {
        for ( int j = servo01SP[i]; j <= servo01SP[i + 1]; j++) {
          servo01.write(j);
          delay(speedDelay);
        }
      }
      // Servo 2
      if (servo02SP[i] == servo02SP[i + 1]) {
      }
      if (servo02SP[i] > servo02SP[i + 1]) {
        for ( int j = servo02SP[i]; j >= servo02SP[i + 1]; j--) {
          servo02.write(j);
          delay(speedDelay);
        }
      }
      if (servo02SP[i] < servo02SP[i + 1]) {
        for ( int j = servo02SP[i]; j <= servo02SP[i + 1]; j++) {
          servo02.write(j);
          delay(speedDelay);
        }
      }
      // Servo 3
      if (servo03SP[i] == servo03SP[i + 1]) {
      }
      if (servo03SP[i] > servo03SP[i + 1]) {
        for ( int j = servo03SP[i]; j >= servo03SP[i + 1]; j--) {
          servo03.write(j);
          delay(speedDelay);
        }
      }
      if (servo03SP[i] < servo03SP[i + 1]) {
        for ( int j = servo03SP[i]; j <= servo03SP[i + 1]; j++) {
          servo03.write(j);
          delay(speedDelay);
        }
      }
      // Servo 4
      if (servo04SP[i] == servo04SP[i + 1]) {
      }
      if (servo04SP[i] > servo04SP[i + 1]) {
        for ( int j = servo04SP[i]; j >= servo04SP[i + 1]; j--) {
          servo04.write(j);
          delay(speedDelay);
        }
      }
      if (servo04SP[i] < servo04SP[i + 1]) {
        for ( int j = servo04SP[i]; j <= servo04SP[i + 1]; j++) {
          servo04.write(j);
          delay(speedDelay);
        }
      }
      // Servo 5
      if (servo05SP[i] == servo05SP[i + 1]) {
      }
      if (servo05SP[i] > servo05SP[i + 1]) {
        for ( int j = servo05SP[i]; j >= servo05SP[i + 1]; j--) {
          servo05.write(j);
          delay(speedDelay);
        }
      }
      if (servo05SP[i] < servo05SP[i + 1]) {
        for ( int j = servo05SP[i]; j <= servo05SP[i + 1]; j++) {
          servo05.write(j);
          delay(speedDelay);
        }
      }
      // Servo 6
      if (servo06SP[i] == servo06SP[i + 1]) {
      }
      if (servo06SP[i] > servo06SP[i + 1]) {
        for ( int j = servo06SP[i]; j >= servo06SP[i + 1]; j--) {
          servo06.write(j);
          delay(speedDelay);
        }
      }
      if (servo06SP[i] < servo06SP[i + 1]) {
        for ( int j = servo06SP[i]; j <= servo06SP[i + 1]; j++) {
          servo06.write(j);
          delay(speedDelay);
        }
      }
    }
  }
}

 

 

Umarım bu videoyu beğenmiş ve yeni bir şeyler öğrenmişsindir. Aşağıdaki yorumlar bölümünde herhangi bir soru sormaktan çekinmeyin ve Arduino Projeler Koleksiyonumu kontrol edin.  

Bir yanıt yazın