Управление 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 заняты Сериалом, а вы туда сервы пихаете