Огромное тебе СПАСИБО добрый человек!!! Всё именно так как я о хотел! ТОРМОЗИТ как Жигуль - аШ зад приподымает!
Вот не пойму в чём дело - провода ставили по приведённой схеме, нумерацию делал по проводам..... поменял на это и всё пошло именно так - КАК НАДО! Ещё раз спасибо!
Ну теперь самое веселое, сделай чтобы ездило как в коде сделанном через жопу))
Нет ты не правильно понял - ая сразу то и не поправил! Вот именно этот скейч написан ОЧЕНЬ грамотно-буквально 10 строк и всё! Через жопу это тот в котором тормоза ковырял! Да же как и куда их прописать не понятно! И писанины там тьма!
Ну теперь самое веселое, сделай чтобы ездило как в коде сделанном через жопу))
Нет ты не правильно понял - ая сразу то и не поправил! Вот именно этот скейч написан ОЧЕНЬ грамотно-буквально 10 строк и всё! Через жопу это тот в котором тормоза ковырял! Да же как и куда их прописать не понятно! И писанины там тьма!
Да это не тьма, просто что скрыто в библиотеке не видишь, а тут еще нет вот и все. Добавишь что было в библиотеке драйвера и все встанет на свои места
Приветствую! В продолжение темы: На моём шасси будет установлен захват-манипулятор с "клешнёЙ". Будет использовано 6 серв. Есть огромное желание управлять ими с пульта кнопками как на этом видео https://www.youtube.com/watch?v=LEGiW43sKn8&t=106s. Но автор не оставил скейч и проэкт давно заброшен! Я убрал всё лишнее с того что у меня есть - но как мне уменьшить скорость работы серв?
Я объединил L1 и R1 с LX и RX для пятого и шестого сервоприводов и объединил !L1 и !R1 с LX и RX в третьем и втором сервоприводах, которые работают. Смотри ниже. Но все же нужна помощь с зажимом. Любые идеи, пожалуйста, помогите? Спасибо.
//Third Servo moves up and down
//Cradle Up
if(!ps2x.Button(PSB_L1)&& 255-ps2x.Analog(PSS_LX) < 120){
Serial.println("3rd Up");
Serial.println(ps2x.Analog(PSS_LX));
c=c+1;
Servo3.write(c);
//Cradle Down
}
if(!ps2x.Button(PSB_L1)&& 255-ps2x.Analog(PSS_LX) > 130 ){
Serial.println("3rd Down");
Serial.println(ps2x.Analog(PSS_LX));
c=c-1;
Servo3.write(c);
}
//4th Servo moves up and down
//Cradle Up
if(255-ps2x.Analog(PSS_LY) < 120){
Serial.println("4th Up");
Serial.println(ps2x.Analog(PSS_LY));
d=d-1;
Servo4.write(d);
//Cradle Down
}
if(255-ps2x.Analog(PSS_LY) > 130){
Serial.println("4th Down");
Serial.println(ps2x.Analog(PSS_LY));
d=d+1;
Servo4.write(d);
}
//5th Servo moves left and right
//Cradle Right
if(ps2x.Button(PSB_L1)&& ps2x.Analog(PSS_LX) > 130){
Serial.println("5th Right");
Serial.println(ps2x.Analog(PSS_LX));
e=e-1;
Servo5.write(e);
//Cradle Left
}
if(ps2x.Button(PSB_L1)&& ps2x.Analog(PSS_LX) < 120){
Serial.println("5th Left");
Serial.println(ps2x.Button(PSB_L1));
e=e+1;
Servo5.write(e);
}
//6th clamp Servo moves left and right
//Cradle Right
if(ps2x.Button(PSB_R1)&& ps2x.Analog(PSS_RX) > 130){
Serial.println("6th Right");
Serial.println(ps2x.Analog(PSS_RX));
f=f-1;
Servo6.write(f);
}
//Cradle Left
if(ps2x.Button(PSB_R1)&& ps2x.Analog(PSS_RX) < 120){
Serial.println("6th Left");
Serial.println(ps2x.Analog(PSS_RX));
f=f+1;
Servo6.write(f);
}
Я объединил L1 и R1 с LX и RX для пятого и шестого сервоприводов и объединил !L1 и !R1 с LX и RX в первом и третьем сервоприводах, которые работают. Смотри ниже. Но все же нужна помощь с зажимом. Любые идеи, пожалуйста, помогите? Спасибо.
//5th Servo moves left and right
//Cradle Right
if(ps2x.Button(PSB_L1)&& ps2x.Analog(PSS_LX) > 130){
Serial.println("5th Right");
Serial.println(ps2x.Analog(PSS_LX));
e=e-1;
Servo5.write(e);
//Cradle Left
}
if(ps2x.Button(PSB_L1)&& ps2x.Analog(PSS_LX) < 120){
Serial.println("5th Left");
Serial.println(ps2x.Button(PSB_L1));
e=e+1;
Servo5.write(e);
}
//6th clamp Servo moves left and right
//Cradle Right
if(ps2x.Button(PSB_R1)&& ps2x.Analog(PSS_RX) > 130){
Serial.println("6th Right");
Serial.println(ps2x.Analog(PSS_RX));
f=f-1;
Servo6.write(f);
}
//Cradle Left
if(ps2x.Button(PSB_R1)&& ps2x.Analog(PSS_RX) < 120){
Serial.println("6th Left");
Serial.println(ps2x.Analog(PSS_RX));
f=f+1;
Servo6.write(f);
}
Ну теперь самое веселое, сделай чтобы ездило как в коде сделанном через жопу))
Огромное тебе СПАСИБО добрый человек!!! Всё именно так как я о хотел! ТОРМОЗИТ как Жигуль - аШ зад приподымает!
Вот не пойму в чём дело - провода ставили по приведённой схеме, нумерацию делал по проводам..... поменял на это и всё пошло именно так - КАК НАДО! Ещё раз спасибо!
Ну теперь самое веселое, сделай чтобы ездило как в коде сделанном через жопу))
Да пожалуйста)
Ну теперь самое веселое, сделай чтобы ездило как в коде сделанном через жопу))
Да это не тьма, просто что скрыто в библиотеке не видишь, а тут еще нет вот и все. Добавишь что было в библиотеке драйвера и все встанет на свои места
Теперь б попробовать с раздельными поворотами переделать этот секйч, или как то уменьшить чувствительность джостика по оси LX.
Да это не тьма, просто что скрыто в библиотеке не видишь, а тут еще нет вот и все. Добавишь что было в библиотеке драйвера и все встанет на свои места
Ага! Тут с этим то еле разобрались!
Ещё раз спасибо тебе за ОГРОМНУЮ помощь jeka_tm !
Да пожалуйста, развлекайся
Угу!
Приветствую! В продолжение темы: На моём шасси будет установлен захват-манипулятор с "клешнёЙ". Будет использовано 6 серв. Есть огромное желание управлять ими с пульта кнопками как на этом видео https://www.youtube.com/watch?v=LEGiW43sKn8&t=106s. Но автор не оставил скейч и проэкт давно заброшен! Я убрал всё лишнее с того что у меня есть - но как мне уменьшить скорость работы серв?
#include <PS2X_lib.h> //for v1.6 #include <Servo.h> PS2X ps2x; int PS2 = 0; Servo Shoot; void setup(){ Shoot.attach(10); PS2 = ps2x.config_gamepad(13,11,8,12, true, true); //Настройка выводов: (clock, command, attention, data, true, true) } void loop(){ ps2x.read_gamepad(); if(ps2x.ButtonPressed(PSB_R1)) { Shoot.write(45); } if(ps2x.ButtonPressed(PSB_R2)) { Shoot.write(0); } delay(50); }Может кто сможет мне помочь в этом деле - буду ОЧЕНЬ благодарен!
if(nJoyL)<-50)if((nJoyL)<-50)и попробуй приемник подключить на 5 вольтВот управление 4 сервы и два мотора, если нужно, можно еще сервы добавить
// include libraries #include <PS2X_lib.h> #include <Servo.h> Servo Servo1; //Declaring cradle servos, Servo1 is the base Servo Servo2; Servo Servo3; Servo Servo4; PS2X ps2x; // create PS2 Controller Class int error = 0; byte type = 0; byte vibrate = 0; int a,b,c,d; // These are used to set the direction of the bridge driver. #define ENA 3 //ENA #define MOTORA_1 A0 //IN3 #define MOTORA_2 A1 //IN4 #define MOTORB_1 A2 //IN1 #define MOTORB_2 A3 //IN2 #define ENB 6 //ENB 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 // Configure output pins pinMode(ENA, OUTPUT); pinMode(MOTORA_1, OUTPUT); pinMode(MOTORA_2, OUTPUT); pinMode(ENB, OUTPUT); pinMode(MOTORB_1, OUTPUT); pinMode(MOTORB_2, OUTPUT); // Disable both motors digitalWrite(ENA,0); digitalWrite(ENB,0); Servo1.attach(9); Servo2.attach(2); Servo3.attach(5); 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); // disable vibration of the controller // Perform movements based on D-pad buttons // MOVE FORWARD if(ps2x.Button(PSB_PAD_UP)) { digitalWrite(MOTORA_1,LOW); digitalWrite(MOTORA_2,HIGH); digitalWrite(MOTORB_1,HIGH); digitalWrite(MOTORB_2,LOW); analogWrite(ENB, 1023); analogWrite(ENA, 1023); Serial.println("Move forward"); } // TURN RIGHT if(ps2x.Button(PSB_PAD_RIGHT)){ digitalWrite(MOTORA_1,HIGH); digitalWrite(MOTORA_2,LOW); digitalWrite(MOTORB_1,HIGH); digitalWrite(MOTORB_2,LOW); analogWrite(ENB, 1023); analogWrite(ENA, 1023); Serial.println("Turn right"); } // TURN LEFT if(ps2x.Button(PSB_PAD_LEFT)){ digitalWrite(MOTORA_1,LOW); digitalWrite(MOTORA_2,HIGH); digitalWrite(MOTORB_1,LOW); digitalWrite(MOTORB_2,HIGH); analogWrite(ENB, 1023); analogWrite(ENA, 1023); Serial.println("Turn left"); } // MOVE BACK if(ps2x.Button(PSB_PAD_DOWN)){ digitalWrite(MOTORA_1,HIGH); digitalWrite(MOTORA_2,LOW); digitalWrite(MOTORB_1,LOW); digitalWrite(MOTORB_2,HIGH); analogWrite(ENB, 1023); analogWrite(ENA, 1023); Serial.println("Move back"); } if (!ps2x.Button(PSB_PAD_DOWN) && !ps2x.Button(PSB_PAD_UP) && !ps2x.Button(PSB_PAD_RIGHT) && ! ps2x.Button(PSB_PAD_LEFT)) { analogWrite(ENB, 0); analogWrite(ENA, 0); } //Cradle Right if(255-ps2x.Analog(PSS_RX) < 120){ //Если палка направлена вправо. Serial.println("C Right"); //Мы считываем текущее положение сервопривода (a=Servo1.read()) Serial.println(ps2x.Analog(PSS_RX)); //И мы уменьшаем "1" a=a-1; //Затем мы записываем новую позицию, которая равна a-1. Servo1.write(a); //Вы можете изменить " 1 " на более высокую, чтобы она быстро поворачивалась //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 Up if(255-ps2x.Analog(PSS_LX) < 120){ Serial.println("C U"); Serial.println(ps2x.Analog(PSS_LX)); c=c+1; Servo3.write(c); //Cradle Down } if(255-ps2x.Analog(PSS_LX) > 130){ Serial.println("C D"); Serial.println(ps2x.Analog(PSS_LX)); c=c-1; Servo3.write(c); } //Cradle Up if(255-ps2x.Analog(PSS_LY) < 120){ Serial.println("C R"); Serial.println(ps2x.Analog(PSS_LY)); d=d-1; Servo4.write(d); //Cradle Down } if(255-ps2x.Analog(PSS_LY) > 130){ Serial.println("C L"); Serial.println(ps2x.Analog(PSS_LY)); d=d+1; Servo4.write(d); } delay(50); } }Если бы у робота был коготь на конце его руки, который является шестым сервоприводом, как бы вы его закодировали?
Как бы вы закодировали, если бы было 6 сервоприводов? Джойстик PS2 имеет только 4, LX, LY, RX и RY?
Спасибо.
Дофига и больше) Любые кнопки в помощь. В примере к либе они кажется все задействованы.
Я объединил L1 и R1 с LX и RX для пятого и шестого сервоприводов и объединил !L1 и !R1 с LX и RX в третьем и втором сервоприводах, которые работают. Смотри ниже. Но все же нужна помощь с зажимом. Любые идеи, пожалуйста, помогите? Спасибо.
//Third Servo moves up and down //Cradle Up if(!ps2x.Button(PSB_L1)&& 255-ps2x.Analog(PSS_LX) < 120){ Serial.println("3rd Up"); Serial.println(ps2x.Analog(PSS_LX)); c=c+1; Servo3.write(c); //Cradle Down } if(!ps2x.Button(PSB_L1)&& 255-ps2x.Analog(PSS_LX) > 130 ){ Serial.println("3rd Down"); Serial.println(ps2x.Analog(PSS_LX)); c=c-1; Servo3.write(c); } //4th Servo moves up and down //Cradle Up if(255-ps2x.Analog(PSS_LY) < 120){ Serial.println("4th Up"); Serial.println(ps2x.Analog(PSS_LY)); d=d-1; Servo4.write(d); //Cradle Down } if(255-ps2x.Analog(PSS_LY) > 130){ Serial.println("4th Down"); Serial.println(ps2x.Analog(PSS_LY)); d=d+1; Servo4.write(d); } //5th Servo moves left and right //Cradle Right if(ps2x.Button(PSB_L1)&& ps2x.Analog(PSS_LX) > 130){ Serial.println("5th Right"); Serial.println(ps2x.Analog(PSS_LX)); e=e-1; Servo5.write(e); //Cradle Left } if(ps2x.Button(PSB_L1)&& ps2x.Analog(PSS_LX) < 120){ Serial.println("5th Left"); Serial.println(ps2x.Button(PSB_L1)); e=e+1; Servo5.write(e); } //6th clamp Servo moves left and right //Cradle Right if(ps2x.Button(PSB_R1)&& ps2x.Analog(PSS_RX) > 130){ Serial.println("6th Right"); Serial.println(ps2x.Analog(PSS_RX)); f=f-1; Servo6.write(f); } //Cradle Left if(ps2x.Button(PSB_R1)&& ps2x.Analog(PSS_RX) < 120){ Serial.println("6th Left"); Serial.println(ps2x.Analog(PSS_RX)); f=f+1; Servo6.write(f); }Я объединил L1 и R1 с LX и RX для пятого и шестого сервоприводов и объединил !L1 и !R1 с LX и RX в первом и третьем сервоприводах, которые работают. Смотри ниже. Но все же нужна помощь с зажимом. Любые идеи, пожалуйста, помогите? Спасибо. //5th Servo moves left and right //Cradle Right if(ps2x.Button(PSB_L1)&& ps2x.Analog(PSS_LX) > 130){ Serial.println("5th Right"); Serial.println(ps2x.Analog(PSS_LX)); e=e-1; Servo5.write(e); //Cradle Left } if(ps2x.Button(PSB_L1)&& ps2x.Analog(PSS_LX) < 120){ Serial.println("5th Left"); Serial.println(ps2x.Button(PSB_L1)); e=e+1; Servo5.write(e); } //6th clamp Servo moves left and right //Cradle Right if(ps2x.Button(PSB_R1)&& ps2x.Analog(PSS_RX) > 130){ Serial.println("6th Right"); Serial.println(ps2x.Analog(PSS_RX)); f=f-1; Servo6.write(f); } //Cradle Left if(ps2x.Button(PSB_R1)&& ps2x.Analog(PSS_RX) < 120){ Serial.println("6th Left"); Serial.println(ps2x.Analog(PSS_RX)); f=f+1; Servo6.write(f); }Я бы использовал L1 разжать, L2 сжать.