Робот-манипулятор на Arduino
- Войдите на сайт для отправки комментариев
Пт, 01/04/2016 - 19:16
Добрый день хочу создать робот манипулятор на шаговых двигателях по управлению от пульта. Идея такова: нажимаю определенную кнопку включается режим программирования, то есть я руковожу рукой с пульта для выполнения определенной операции, затем я нажимаю на следующую кнопку и задаю количество выполнения этого цикла, затем нажимаю третью кнопку и система автоматически повторяет действия, которые я делал с помощью пульта, предварительно возвращаясь в исходное положение.
Вроде код написал а когда начинаю нажимать кнопки на пульте действия не происходит помогите понять что не так.
#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();
}
}