Официальный сайт компании Arduino по адресу arduino.cc
два моторчика и джойстик PS2
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Втр, 19/04/2016 - 07:24
Доброго времени суток! совсем недавно столкнулся с ардуинкой) собрал машинку по одному видео) всё бы нечего надо поменять управление чтоб левый аналоговый джостик управлял одним двигателем(вперед- назад) а правый вторым двигателем (вперед назад)вот код:
#include <PS2X_lib.h> //for v1.6
PS2X ps2x;
int PS2 = 0;
const int in1 = 2; // direction pin 1
const int in2 = 4; // direction pin 2
const int ena = 3; // PWM pin to change speed
const int in3 = 7; // direction pin 1
const int in4 = 1; // direction pin 2
const int enb = 5; // PWM pin to change speed
int fspeed; // forward speed
void setup(){
PS2 = ps2x.config_gamepad(13,11,8,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(in3, OUTPUT); // connection to L298n
pinMode(in4, OUTPUT); // connection to L298n
pinMode(enb, OUTPUT); // connection to L298n
}
void loop(){
ps2x.read_gamepad();
digitalWrite(1, LOW);
if (ps2x.Analog(PSS_RY) == 128) analogWrite(ena, 0);
if (ps2x.Analog(PSS_RY) == 128) analogWrite(enb, 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(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enb, fspeed);
}
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(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enb, fspeed);
}
if (ps2x.Analog(PSS_RX) > 128){
fspeed = map(ps2x.Analog(PSS_RX), 129, 255, 0, 255);
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(ena, fspeed);
}
if (ps2x.Analog(PSS_RX) < 128){
fspeed = map(ps2x.Analog(PSS_RX), 0, 127, 255, 0);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enb, fspeed);
}
delay(50);
}
заранее спасибо)))))
Спасибо))) только вотпо отдельности левый и правый ездят только вперед. При нажатии вниз и вверх, можно это както поправить)?
зря ты использовал 1 и 2 пин, много других свободных
по чужой схеме собирал,
я еще чайник в этих делах
так поменяй пины, 5 и 9 строка. провода перекинуть не забудь
поменял in1 = 10;in4 = 6
и ничего не изменилось? давай больше информации, или сам разбирайся если думаешь что я экстрасенс
нечего не изменилось, совсем.
видео тогда сними и сюда ссылку. чтобы было видно джойстик и машинку как ты управляешь
ок
https://drive.google.com/file/d/0B52A_iXVI0iTSk5FWFJROGtoR1E/view?usp=sh...
в конце же ездит взад вперед
если двумя то да, а хотелось бы по отдельности
джойстиками*
ты последний код пробовал?
да, все по прежнему
хз. по коду я не вижу проблемы. странно что не регулируется вперед назад, но регулируется если одновременно 2 джойстика
у тебя библиотека какой версии? v1.8?
открой терминал и посмотри правильно ли все цифры идут
библиотека да 1,8. да все так идет, этот код тоже попробовал все так же.
а если попробовать чтоб кнопками управлять? вверх-вниз\левый, треугольник-крест\правый?
наркоман штоле?))))
ну хз почему
не я так ради прикола поставил)))))
получиться кнопками?
да почему нет. у меня например в первом танке крестиком управлял. он у меня тоже аналоговый был, зависело от силы нажатия
прикольно, тоже на PS2?
http://arduino.ru/forum/proekty/tank-upravlyaemyi-dzhoistikom-ps-2
ну ну, видел)) ништяк)) чето методом тыка не получается кнопки воткнуть на управление.
экспериментируй, а если не хватает знаний научись упаврлять мотором без джойстика, чтобы понятно было что нужно подавать на драйвер, затем посмотри какие данные дает пульт. и придумай как их преобразовать чтобы управлять драйвером. двигайся постепенно короче