Здарова народ. В общем пришла машинка с алиэкспресс. Хочу сделать ее с пульта ps2. Вот я не знаю как управлять поворотами. Так то он может ехать вперед назад. Код (C++): #include <PS2X_lib.h> //for v1.6 //#include <Servo.h> PS2X ps2x; int PS2 = 0; //Servo LXservo; const int in1 = 2; // direction pin 1 const int in2 = 4; // direction pin 2 const int in3 = 5; // direction pin 1 const int in4 = 6; // direction pin 2 const int ena = 3; // PWM pin to change speed int fspeed; // forward speed void setup(){ // LXservo.attach(9); PS2 = ps2x.config_gamepad(13,11,10,12, true, true); //Настройка выводов: (clock, command, attention, data, true, true) pinMode(in1, OUTPUT); // connection to L298n pinMode(in2, OUTPUT); // connection to L298n pinMode(ena, OUTPUT); // connection to L298n /* pinMode(8, OUTPUT); // Фары pinMode(9, OUTPUT); // Стопаки pinMode(5, OUTPUT); // Стопаки от кнопки pinMode(1, OUTPUT); // Поворот на лево pinMode(7, OUTPUT); // Поворот на право*/ } void loop(){ ps2x.read_gamepad(); //if(ps2x.ButtonPressed(PSB_CIRCLE)) digitalWrite(8, HIGH); //if(ps2x.ButtonPressed(PSB_TRIANGLE)) digitalWrite(8, LOW); //if(ps2x.ButtonPressed(PSB_SQUARE)) digitalWrite(5, HIGH); //if(ps2x.ButtonPressed(PSB_CROSS)) digitalWrite(5, LOW); // if(ps2x.ButtonPressed(PSB_R1)) digitalWrite(7, HIGH); // if(ps2x.ButtonPressed(PSB_R2)) digitalWrite(7, LOW); if (ps2x.Analog(PSS_LY) == 128) analogWrite(ena, 0); if (ps2x.Analog(PSS_LY) > 128){ fspeed = map(ps2x.Analog(PSS_LY), 129, 255, 0, 255); digitalWrite(in1, LOW); digitalWrite(in2, HIGH); analogWrite(ena, fspeed); // digitalWrite(9, HIGH); } if (ps2x.Analog(PSS_LY) < 128){ fspeed = map(ps2x.Analog(PSS_LY), 0, 127, 255, 0); digitalWrite(in1, HIGH); digitalWrite(in2, LOW); analogWrite(ena, fspeed); //digitalWrite(9, LOW); } (map(ps2x.Analog(PSS_RX), 0, 255, 4.5, 85)); // повороты if (ps2x.Analog(PSS_RX) < 120){ } if (ps2x.Analog(PSS_RX) > 150){ } if (ps2x.Analog(PSS_RX) > 120 && ps2x.Analog(PSS_RX) < 150){ } delay(50); }
В общем надо изменить его скетч так, чтобы при изменении положения джойстика колеса поворачивались. Ну чтобы ардуино отправляла сигнал на драйвер двигателя, а не на сервопривод. Понял?
Здесь на форуме много толковых и знающих, которые помогают новичкам и интересующимся. Странно, почему они до сих пор не бросились помогать. Понял?
Народ, помогите. Купил внуку на АЛИ роботанк (манипулятор на танковом шасси). Собрал, а скетч не грузится, ошибка компиляции. #include <PS2X_lib.h> //for v1.6 //#include <Servo.h> PS2X ps2x; int PS2 = 0; //Servo LXservo; const int in1 = 2; // direction pin 1 const int in2 = 4; // direction pin 2 const int in3 = 5; // direction pin 1 const int in4 = 6; // direction pin 2 const int ena = 3; // PWM pin to change speed int fspeed; // forward speed void setup(){ // LXservo.attach(9); PS2 = ps2x.config_gamepad(13,11,10,12, true, true); //Настройка выводов: (clock, command, attention, data, true, true) pinMode(in1, OUTPUT); // connection to L298n pinMode(in2, OUTPUT); // connection to L298n pinMode(ena, OUTPUT); // connection to L298n /* pinMode(8, OUTPUT); // Фары pinMode(9, OUTPUT); // Стопаки pinMode(5, OUTPUT); // Стопаки от кнопки pinMode(1, OUTPUT); // Поворот на лево pinMode(7, OUTPUT); // Поворот на право*/ } void loop(){ ps2x.read_gamepad(); //if(ps2x.ButtonPressed(PSB_CIRCLE)) digitalWrite(8, HIGH); //if(ps2x.ButtonPressed(PSB_TRIANGLE)) digitalWrite(8, LOW); //if(ps2x.ButtonPressed(PSB_SQUARE)) digitalWrite(5, HIGH); //if(ps2x.ButtonPressed(PSB_CROSS)) digitalWrite(5, LOW); // if(ps2x.ButtonPressed(PSB_R1)) digitalWrite(7, HIGH); // if(ps2x.ButtonPressed(PSB_R2)) digitalWrite(7, LOW); if (ps2x.Analog(PSS_LY) == 128) analogWrite(ena, 0); if (ps2x.Analog(PSS_LY) > 128){ fspeed = map(ps2x.Analog(PSS_LY), 129, 255, 0, 255); digitalWrite(in1, LOW); digitalWrite(in2, HIGH); analogWrite(ena, fspeed); // digitalWrite(9, HIGH); } if (ps2x.Analog(PSS_LY) < 128){ fspeed = map(ps2x.Analog(PSS_LY), 0, 127, 255, 0); digitalWrite(in1, HIGH); digitalWrite(in2, LOW); analogWrite(ena, fspeed); //digitalWrite(9, LOW); } (map(ps2x.Analog(PSS_RX), 0, 255, 4.5, 85)); // повороты if (ps2x.Analog(PSS_RX) < 120){ } if (ps2x.Analog(PSS_RX) > 150){ } if (ps2x.Analog(PSS_RX) > 120 && ps2x.Analog(PSS_RX) < 150){ } delay(50); }