Робот-манипулятор на Arduino

Нет ответов
taras_lebedyk
Offline
Зарегистрирован: 22.03.2016
Добрый день хочу создать робот манипулятор на шаговых двигателях по управлению от пульта. Идея такова: нажимаю определенную кнопку включается режим программирования, то есть я руковожу рукой с пульта для выполнения определенной операции, затем я нажимаю на следующую кнопку и задаю количество выполнения этого цикла, затем нажимаю третью кнопку и система автоматически повторяет действия, которые я делал с помощью пульта, предварительно возвращаясь в исходное положение.
 
Вроде код написал а когда начинаю нажимать кнопки на пульте действия не происходит помогите понять что не так.
 
#include <IRremote.h>

int RECV_PIN = 11; //вхід ІК приймача
IRrecv irrecv(RECV_PIN);
decode_results results;

#include <Stepper_28BYJ.h>
// зміна кіькості кроків для вашого двигуна
#define STEPS 4078
Stepper_28BYJ stepper1(STEPS, 2, 3, 4, 5);
Stepper_28BYJ stepper2(STEPS, 0, 1, 8, 9);
Stepper_28BYJ stepper3(STEPS, 10, 12, 13, A0);
Stepper_28BYJ stepper4(STEPS, A1, A2, A3, A4);

int avto=0;// кількість виконання автоматичної роботи 
int diya=0;// загальна кількість дій в автоматичній роботі
int chikl[100];

void setup()
{
irrecv.enableIRIn(); // включити приймач
stepper1.setSpeed(13);
stepper2.setSpeed(13);
stepper3.setSpeed(13);
stepper4.setSpeed(13);
}

int m11 (){
  stepper1.step(1000); // робимо 1000 кроків в одну сторону
}

int m12 (){
  stepper1.step(-1000); // робимо 1000 кроків в іншу сторону
}

int m21 (){
  stepper2.step(1000); // робимо 1000 кроків в іншу сторону
}

int m22 (){
  stepper2.step(-1000); // робимо 1000 кроків в іншу сторону
}

int m31 (){
  stepper3.step(1000); // робимо 1000 кроків в іншу сторону
}

int m32 (){
  stepper3.step(-1000); // робимо 1000 кроків в іншу сторону
}

int m41 (){
  stepper4.step(1000); // робимо 1000 кроків в іншу сторону
}

int m42 (){
  stepper4.step(-1000); // робимо 1000 кроків в іншу сторону
}

void loop() {

if (irrecv.decode(&results))
{
  // програмування роботи
   if (results.value == 0xE318261B) // код кнопки CH-
  {
      if (results.value == 0x9716BE3F) // код кнопки
       {
         m11 ();
         diya++;
         chikl[diya]=11;
       }
      if (results.value == 0x3D9AE3F7) // код кнопки
       {
         m12 ();
         diya++;
         chikl[diya]=12;
        }
      if (results.value == 0x6182021B) // код кнопки
       {
         m21 ();
         diya++;
         chikl[diya]=21;
       }
      if (results.value == 0x8C22657B) // код кнопки
       {
         m22 ();
         diya++;
         chikl[diya]=22;
        }
      if (results.value == 0x488F3CBB) // код кнопки
       {
         m31 ();
         diya++;
         chikl[diya]=31;
       }
      if (results.value == 0x449E79F) // код кнопки
       {
         m32 ();
         diya++;
         chikl[diya]=32;
        }
      if (results.value == 0xF2D9EC99) // код кнопки
       {
         m41 ();
         diya++;
         chikl[diya]=41;
       }
      if (results.value == 0x1BC0157B) // код кнопки
       {
         m42 ();
         diya++;
         chikl[diya]=42;
        }
        irrecv.resume();
  }
  // встановлення кількості виконання авт.роботи
 if (results.value == 0x511DBB) // код кнопки
  {
      if (results.value == 0x9716BE3F) // код кнопки
       {
         avto=1;
       }
      if (results.value == 0x3D9AE3F7) // код кнопки
       {
         avto=2;
        }
      if (results.value == 0x6182021B) // код кнопки
       {
         avto=3;
       }
      if (results.value == 0x8C22657B) // код кнопки
       {
         avto=4;
        }
      if (results.value == 0x488F3CBB) // код кнопки
       {
         avto=5;
       }
      if (results.value == 0x449E79F) // код кнопки
       {
         avto=6;
        }
      if (results.value == 0xF2D9EC99) // код кнопки
       {
         avto=7;
       }
      if (results.value == 0x1BC0157B) // код кнопки
       {
         avto=8;
        }
      if (results.value == 0x3EC3FC1B) // код кнопки
       {
         avto=9;
        }
        irrecv.resume();
  }
  // автоматичне виконання
 if (results.value == 0xEE886D7F) // код кнопки
  {
    for (int nn=1; nn<=avto; nn++)
    {  
    // повернення двигунів в початковий стан
     for (int n=1; n<=diya; n++)
     {
      if (chikl[n]==11)
      {
      m12 ();
      delay(200);
      }
      if (chikl[n]==12)
      {
      m11 ();
      delay(200);
      }
      if (chikl[n]==21)
      {
      m22 ();
      delay(200);
      }
      if (chikl[n]==22)
      {
      m21 ();
      delay(200);
      }
      if (chikl[n]==31)
      {
      m32 ();
      delay(200);
      }
      if (chikl[n]==32)
      {
      m31 ();
      delay(200);
      }
      if (chikl[n]==41)
      {
      m42 ();
      delay(200);
      }
      if (chikl[n]==42)
      {
      m41 ();
      delay(200);
      }
     }
      
      // виконання програми
     for (int n=1; n<=diya; n++)
     {
      if (chikl[n]==11)
      {
      m11 ();
      delay(200);
      }
      if (chikl[n]==12)
      {
      m12 ();
      delay(200);
      }
      if (chikl[n]==21)
      {
      m21 ();
      delay(200);
      }
      if (chikl[n]==22)
      {
      m22 ();
      delay(200);
      }
      if (chikl[n]==31)
      {
      m31 ();
      delay(200);
      }
      if (chikl[n]==32)
      {
      m32 ();
      delay(200);
      }
      if (chikl[n]==41)
      {
      m41 ();
      delay(200);
      }
      if (chikl[n]==42)
      {
      m42 ();
      delay(200);
      }
     }
     
    } 
    irrecv.resume();
  }  
  //обнулення роботи
 if (results.value == 0x20FE4DBB) // код кнопки
  {
   diya=0;
   avto=0;
   irrecv.resume();
  }
 irrecv.resume();
}
}