roboforum.ruТехнический форум по робототехнике. |
|
|
nsk-racer писал(а):Есть ли готовые библиотеки по работе с USB джойстиком? Хочу через геймпад управлять роботом по комп порту Ардуиной Не могу найти нигде! Только что-то про питон и всё, давно что-то я делал с нокией 5800 по блютусу с помощью питона, можно было акселерометром играть в игры.
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);
}
}
// start updating positions
tmrUpdateStick.Enabled = true;
if (!sp.IsOpen)
{
sp.PortName = "COM12";
sp.BaudRate = 9600;
try
{
sp.Open();
}
catch
{
}
}
}
private void tmrUpdateStick_Tick(object sender, EventArgs e)
{
// get status
jst.UpdateStatus();
// update the axes positions
foreach (Control ax in flpAxes.Controls)
{
if (ax is Axis)
{
switch (((Axis)ax).AxisId)
{
case 1:
((Axis)ax).AxisPos = jst.AxisA;
break;
case 2:
((Axis)ax).AxisPos = jst.AxisB;
break;
case 3:
((Axis)ax).AxisPos = jst.AxisC;
if (jst.AxisC == 65535)
{ sp.Write("4"); }
if (jst.AxisC == 0)
{ sp.Write("3"); }
break;
case 4:
((Axis)ax).AxisPos = jst.AxisD;
if (jst.AxisD == 65535)
{ sp.Write("1"); }
if (jst.AxisD == 0)
{ sp.Write("2"); }
break;
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 49