Подключение сервоприводов

skyspirit
Offline
Зарегистрирован: 27.02.2015

Подскажите как в ардуино увязывать и задавать разные параметры для нескольких сервоприводов

а то учебный скеч показывает работу с одним приводом

#include <Servo.h> //используем библиотеку для работы с сервоприводом

Servo servo; //объявляем переменную servo типа Servo

void setup() //процедура setup

{

servo.attach(10); //привязываем привод к порту 10

}

void loop() //процедура loop

{

servo.write(0); //ставим вал под 0

delay(2000); //ждем 2 секунды

servo.write(180); //ставим вал под 180

delay(2000); //ждем 2 секунды

}

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

servo.attach(10); - это управляющий пин, на каждую серву он, по-идее, должен быть свой...

Kolchugin
Offline
Зарегистрирован: 15.12.2013

Попробовал добавить вторую серву на 11 пин.  Но нужно проверить.



#include <Servo.h> //используем библиотеку для работы с сервоприводом

Servo servo; //объявляем переменную servo типа Servo
Servo servo1;
void setup() //процедура setup

{

servo.attach(10); //привязываем привод к порту 10
servo1.attach(11);
}

void loop() //процедура loop

{

servo.write(0); //ставим вал под 0
servo1.write(180);
delay(2000); //ждем 2 секунды

servo.write(180); //ставим вал под 180
servo1.write(0);
delay(2000); //ждем 2 секунды

}

 

Vладимир
Offline
Зарегистрирован: 27.01.2015

Servo servo1; //объявляем переменную servo типа Servo

Servo servo2; //объявляем переменную servo типа Servo

Servo servo3; //объявляем переменную servo типа Servo

--------

или массив

Servo servo[3]; //объявляем переменную servo типа Servo

 

а ешо лучше так 

 struct servo_item

{

          Servo servo;  
         byte servo_pin;
        byte value;
        byte netralposition;
       byte maxposition;
       byte min position;
};
servo_item servos[servoscount];
skyspirit
Offline
Зарегистрирован: 27.02.2015
разобрался немного но теперь столкнулся что они не в синхроне работают а последовательно, то как сделать чтоб 2 привода например работали в синхрон?
 
#include <Servo.h> //используем библиотеку для работы с сервоприводом
 
Servo servo1; //объявляем переменную servo типа Servo
Servo servo2;
Servo servo3;
Servo servo4;
 
const int SERVO1_PIN = 9;
const int SERVO2_PIN = 10;
const int SERVO3_PIN = 11;
const int SERVO4_PIN = 12;
 
void setup() //процедура setup
 
{
 
  servo1.attach(SERVO1_PIN) ;
  servo2.attach(SERVO2_PIN);
  servo3.attach(SERVO3_PIN);
  servo4.attach(SERVO4_PIN);
 
}
 
void loop() //процедура loop
 
{
 
servo1.write(20); //ставим вал под 20
delay(2000); //ждем 2 секунды
servo1.write(100); //ставим вал под 100
delay(2000); //ждем 2 секунды
 
servo2.write(20); //ставим вал под 20
delay(2000); //ждем 2 секунды
servo2.write(100); //ставим вал под 100
delay(2000); //ждем 2 секунды
 
servo3.write(20); //ставим вал под 20
delay(2000); //ждем 2 секунды
servo3.write(100); //ставим вал под 100
delay(2000); //ждем 2 секунды
 
servo4.write(20); //ставим вал под 20
delay(2000); //ждем 2 секунды
servo4.write(100); //ставим вал под 100
delay(2000); //ждем 2 секунды
}
 
bwn
Offline
Зарегистрирован: 25.08.2014

Для начала, правильно вставить код. Потом подумать, что в нем делает delay(2000), сделать выводы и написать иначе.

саko79
Offline
Зарегистрирован: 11.05.2015

skyspirit пишет:

разобрался немного но теперь столкнулся что они не в синхроне работают а последовательно, то как сделать чтоб 2 привода например работали в синхрон?
 
#include <Servo.h> //используем библиотеку для работы с сервоприводом
 
Servo servo1; //объявляем переменную servo типа Servo
Servo servo2;
Servo servo3;
Servo servo4;
 
const int SERVO1_PIN = 9;
const int SERVO2_PIN = 10;
const int SERVO3_PIN = 11;
const int SERVO4_PIN = 12;
 
void setup() //процедура setup
 
{
 
  servo1.attach(SERVO1_PIN) ;
  servo2.attach(SERVO2_PIN);
  servo3.attach(SERVO3_PIN);
  servo4.attach(SERVO4_PIN);
 
}
 
void loop() //процедура loop
 
{
 
servo1.write(20); //ставим вал под 20
delay(2000); //ждем 2 секунды
servo1.write(100); //ставим вал под 100
delay(2000); //ждем 2 секунды
 
servo2.write(20); //ставим вал под 20
delay(2000); //ждем 2 секунды
servo2.write(100); //ставим вал под 100
delay(2000); //ждем 2 секунды
 
servo3.write(20); //ставим вал под 20
delay(2000); //ждем 2 секунды
servo3.write(100); //ставим вал под 100
delay(2000); //ждем 2 секунды
 
servo4.write(20); //ставим вал под 20
delay(2000); //ждем 2 секунды
servo4.write(100); //ставим вал под 100
delay(2000); //ждем 2 секунды
}
 

 

в вашем коде сервы буду двигаться в порядке очередности, если в будущем вам нужно будет исключить это , то уходите от делеев, используйте millis..