Есть ли готовые библиотеки по работе с USB джойстиком? Хочу через геймпад управлять роботом по комп порту Ардуиной Не могу найти нигде! Только что-то про питон и всё, давно что-то я делал с нокией 5800 по блютусу с помощью питона, можно было акселерометром играть в игры.
nsk-racer писал(а):Есть ли готовые библиотеки по работе с USB джойстиком? Хочу через геймпад управлять роботом по комп порту Ардуиной Не могу найти нигде! Только что-то про питон и всё, давно что-то я делал с нокией 5800 по блютусу с помощью питона, можно было акселерометром играть в игры.
я напрямую к Orduino nano цеплял джойстики от PS2 (280руб в любом магазе) и аксели
с чем не поспоришь так это с этим Нашёл программу, которая вроде шлёт изменения на осях в com 3 или любой другой, вопрос ардуина и джойстик должны быть на одном порту? или на разных? просто вместе с ардуиной на этом порту, у меня вылетает ошибка
к компу подключено 2 девайса, ардуина и джойстик. тогда они сидят на разных ком портах. если попытаться открыть уже открытый порт, то или эксепшн "порт занят" или зависание или или или. это тоже не новость. а вот что за программа, которая в ком3 шлёт некие "изменения"? где она вообще, на ардуине или на компе? если эта чудная программа не на ардуине, то что она вообще отсылает и куда? инфу от джойстика в ардуину? может он вообще, как и было изначально задумано купил юсб джойстик. к ардуине его явно проблемно прикрутить, т.е. джойстик сейчас подключен к компу. и не факт, что он на виртуальном коме висит, вполне реально, что он хидовский. и т.д.
Джойстик USB, потому как связь по Wi-fi, мне джойстик от PS2 не подходит для этих целей, я его подключал к ардуине и всё работало...) Программа создаёт ком порт и в него уходят цифры, а ардуина эти цифры должна читать, Вот скетч:
int incomingByte = 0; int dirbpinB = 7; // up&down Direction pin for motor B is Digital 12 int speedbpinB = 6; // up&down Speed pin for motor B is Digital 9 (PWM) int dirbpinA =4; //left&right Direction pin for motor A is Digital 13int speedbpinA = 5; //left&right Speed pin for motor A is Digital 10 (PWM) int speedB = 255; //Speed up&down int speedA = 255; //Speed left&right int up = 0; //up int dw = 1; //dw int lf = 0; //left int rg = 1; //right void setup() { pinMode(dirbpinA, OUTPUT); pinMode(dirbpinB, OUTPUT); Serial.begin(9600); } void loop() { if (Serial.available() > 0) { // read the incoming byte: incomingByte = Serial.read(); switch (incomingByte) { case '1': // up digitalWrite(dirbpinB, up); analogWrite(speedbpinB, speedB); delay(100); break; case '2': //down digitalWrite(dirbpinB, dw); analogWrite(speedbpinB, speedB); delay(100); break; case '3': //left digitalWrite(dirbpinA, lf); analogWrite(speedbpinA, speedA); delay(100); break; case '4': //right digitalWrite(dirbpinA, rg); analogWrite(speedbpinA, speedA); delay(100); break; } } else { analogWrite(speedbpinA, 0); analogWrite(speedbpinB, 0); } }
Если кому-нибудь понадобится готовая библиотека, погуглите "joystick.ocx" Это ActiveX. Работает с любым USB-джойстиком(координаты ручки и кнопки вроде тоже.) Года 3 назад использовал ее для управления поворотными камерами.