Управление 4 мя сервоприводами
- Войдите на сайт для отправки комментариев
Чт, 23/09/2021 - 19:52
Добрый день, есть скетч для джойстиков PS2, для управления 4 мя сервоприводами, при управлении двумя севами, проблем нет, как только нужно управлять 4 мя, возникают проблемы, де работает как и положено только на одном джойстике первая серва, а на втором третья, в мониторе порта управление отслеживается идеально. Питание на сервы подавать пробовал отдельно, всё тоже самое. Кто может подсказать по этой проблеме?
// include libraries
#include <PS2X_lib.h>
#include <Servo.h>
Servo Servo1;
Servo Servo2;
Servo Servo3;
Servo Servo4;
PS2X ps2x;
int error = 0;
byte type = 0;
byte vibrate = 0;
int a,b,c,d;
void setup(){
// Start serial communication
Serial.begin(57600);
error = ps2x.config_gamepad(13,11,10,12, true, true); //setup pins and settings: GamePad(clock, command, attention, data, Pressures?, Rumble?) check for error
Servo1.attach(1);
Servo2.attach(2);
Servo3.attach(3);
Servo4.attach(4);
}
// Main loop
void loop(){
a=Servo1.read();
b=Servo2.read();
c=Servo3.read();
d=Servo4.read();
if(error == 1) //skip loop if no controller found
return;
else { //DualShock Controller
ps2x.read_gamepad(false, vibrate);
//Cradle Right
if(255-ps2x.Analog(PSS_RX) < 120){
Serial.println("C Right");
Serial.println(ps2x.Analog(PSS_RX));
a=a-1;
Servo1.write(a);
//Cradle Left
}
if(255-ps2x.Analog(PSS_RX) > 130){
Serial.println("C Left");
Serial.println(ps2x.Analog(PSS_RX));
a=a+1;
Servo1.write(a);
}
//Cradle Up
if(255-ps2x.Analog(PSS_RY) < 120){
Serial.println("C Up");
Serial.println(ps2x.Analog(PSS_RY));
b=b+1;
Servo2.write(b);
//Cradle Down
}
if(255-ps2x.Analog(PSS_RY) > 130){
Serial.println("C Down");
Serial.println(ps2x.Analog(PSS_RY));
b=b-1;
Servo2.write(b);
}
//Cradle Right
if(255-ps2x.Analog(PSS_LX) < 120){
Serial.println("D Right");
Serial.println(ps2x.Analog(PSS_LX));
c=c-1;
Servo3.write(c);
//Cradle Left
}
if(255-ps2x.Analog(PSS_LX) > 130){
Serial.println("D Left");
Serial.println(ps2x.Analog(PSS_LX));
c=c+1;
Servo3.write(c);
}
//Cradle Up
if(255-ps2x.Analog(PSS_LY) < 120){
Serial.println("D Up");
Serial.println(ps2x.Analog(PSS_LY));
d=d+1;
Servo4.write(d);
//Cradle Down
}
if(255-ps2x.Analog(PSS_LY) > 130){
Serial.println("D Down");
Serial.println(ps2x.Analog(PSS_LY));
d=d-1;
Servo4.write(d);
}
delay(50);
}
}
ардуино какая?
NANO V3, пробовал и UNO
У нано пины 0 и 1 заняты Сериалом, а вы туда сервы пихаете