【问题标题】:Arduino DualShock 4 C++Arduino DualShock 4 C++
【发布时间】:2017-04-03 21:26:55
【问题描述】:

我正在尝试使用 DualShock 4(PS4) 控制 Arduino uno 板。我在对操纵杆进行编程时遇到困难PS4.getAnalogHat(LeftHatY) 我想使用操纵杆控制电机;我希望电机在我按下时向前(++i),在我按下时向后(--i),当我不移动操纵杆时没有速度。我能够将电机朝一个方向移动并且速度增加,但我无法让另一个方向工作。我似乎无法在操纵杆值(PS4.getAnalogHat(LeftHatY) > 137 || PS4.getAnalogHat(LeftHatY) < 117) 和电机值(0 - 255)之间建立联系。

我正在使用 USB Shield 和 Motor Shield。

我需要帮助找出第一个 if 语句。

这是我目前的代码:

if (PS4.connected()) 
{
    if (PS4.getAnalogHat(LeftHatY) > 137)
    {
        M3->setSpeed(255)); 
        PS4.setLed(Green);
        PS4.setLedFlash(100 ,100);
    }
}

我希望 M3 的值随着操纵杆角度的增加而增加:

for (int i=0; i<=255; ++i)
    M3->setSpeed(i);

【问题讨论】:

  • if (PS4.connected()) { if ( PS4.getAnalogHat(LeftHatY) > 137 || PS4.getAnalogHat(LeftHatY) setSpeed(PS4.getAnalogHat(LeftHatY) ); PS4.setLed(绿色); PS4.setLedFlash(100 ,100); }

标签: c++ arduino


【解决方案1】:

您需要添加min(117) 和max(137) 容差条件才能移动电机。然后,将摇杆的可能值映射到电机的速度范围

if (PS4.connected()) 
{
    int analogValue = PS4.getAnalogHat(LeftHatY);
    if (analogValue  > 137 || analogValue < 117)
    {
        int motorValue = y = map(x, 117, 137 , 0, 255); 
        M3->setSpeed(motorValue); 
        PS4.setLed(Green);
        PS4.setLedFlash(100 ,100);
    }
}

一些错误处理可能会更好,但你可以从它开始。

【讨论】:

    【解决方案2】:
     uint16_t s = PS4.getAnalogHat(RightHatY);
    
    if (PS4.getAnalogHat(RightHatY) < 117 )
    {
     s = map (s, 117,  0, 0, 250);
     M3->run(FORWARD);
     M3->setSpeed(s);
     PS4.setLed(Green);
     PS4.setLedFlash(100, 100);
    }
    
    if (PS4.getAnalogHat(RightHatY) > 137)
    {
     s = map (s, 137, 0, 0, -250);
     M3->run(BACKWARD);
     M3->setSpeed(s);
     PS4.setLed(Green);
     PS4.setLedFlash(100, 100);
    }
    

    这是我最初提出的问题的解决方案。使用 Dualshock 4 和 Arduino 电机护罩对电机进行变速控制。非常感谢您的帮助。我是机器人/底盘的 3D 打印零件,这就是我花时间编程的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 1970-01-01
      • 2017-09-25
      • 2014-05-10
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多